Assembly Diffs

linux arm64

Diffs are based on 2,259,470 contexts (1,008,044 MinOpts, 1,251,426 FullOpts).

MISSED contexts: 159 (0.01%)

Overall (-7,024 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 14,972,964 +148
benchmarks.run_pgo.linux.arm64.checked.mch 79,903,244 -4,288
benchmarks.run_tiered.linux.arm64.checked.mch 22,276,872 +184
coreclr_tests.run.linux.arm64.checked.mch 509,740,232 +704
libraries.crossgen2.linux.arm64.checked.mch 315,768 +0
libraries.pmi.linux.arm64.checked.mch 76,281,012 +772
libraries_tests.run.linux.arm64.Release.mch 400,018,960 -4,964
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 165,110,104 +308
realworld.run.linux.arm64.checked.mch 15,918,288 +112

FullOpts (-7,024 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 14,713,212 +148
benchmarks.run_pgo.linux.arm64.checked.mch 54,354,872 -4,288
benchmarks.run_tiered.linux.arm64.checked.mch 4,937,908 +184
coreclr_tests.run.linux.arm64.checked.mch 160,832,376 +704
libraries.crossgen2.linux.arm64.checked.mch 315,768 +0
libraries.pmi.linux.arm64.checked.mch 76,161,028 +772
libraries_tests.run.linux.arm64.Release.mch 183,280,056 -4,964
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 151,612,828 +308
realworld.run.linux.arm64.checked.mch 15,336,748 +112

Example diffs

benchmarks.run.linux.arm64.checked.mch

-40 (-27.03%) : 4657.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-20 (-0.71%) : 16843.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)

@@ -8,19 +8,19 @@ ; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T43] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator> -; V01 arg1 [V01,T39] ( 5, 8 ) int -> x22 single-def
+; V00 this [V00,T44] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator> +; V01 arg1 [V01,T40] ( 5, 8 ) int -> x22 single-def
; V02 arg2 [V02,T36] ( 6, 9 ) ref -> x21 class-hnd single-def <System.String>
-; V03 arg3 [V03,T40] ( 5, 8 ) long -> x23 single-def -; V04 arg4 [V04,T41] ( 5, 8 ) int -> x24 single-def -; V05 arg5 [V05,T42] ( 5, 8 ) int -> x25 single-def
+; V03 arg3 [V03,T41] ( 5, 8 ) long -> x23 single-def +; V04 arg4 [V04,T42] ( 5, 8 ) int -> x24 single-def +; V05 arg5 [V05,T43] ( 5, 8 ) int -> x25 single-def
; V06 arg6 [V06,T32] ( 7, 10 ) int -> x20 single-def
-; V07 arg7 [V07,T26] ( 12, 12 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]> -; V08 loc0 [V08,T44] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]> -; V09 loc1 [V09,T45] ( 5, 5 ) ubyte -> registers -; V10 loc2 [V10,T16] ( 8, 22 ) int -> [fp+0x114] -; V11 loc3 [V11,T17] ( 8, 22 ) int -> [fp+0x110] -; V12 loc4 [V12,T53] ( 3, 3 ) int -> [fp+0x10C] spill-single-def
+; V07 arg7 [V07,T21] ( 12, 15 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]> +; V08 loc0 [V08,T46] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]> +; V09 loc1 [V09,T37] ( 5, 8 ) ubyte -> registers +; V10 loc2 [V10,T15] ( 8, 25 ) int -> [fp+0x114] +; V11 loc3 [V11,T16] ( 8, 25 ) int -> [fp+0x110] +; V12 loc4 [V12,T45] ( 3, 6 ) int -> [fp+0x10C] spill-single-def
;* V13 loc5 [V13 ] ( 0, 0 ) int -> zero-ref ;* V14 loc6 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref @@ -41,7 +41,7 @@ ; V30 loc22 [V30,T34] ( 2, 9 ) ref -> [fp+0x30] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V31 loc23 [V31,T11] ( 5, 33 ) int -> [fp+0xB4] ; V32 loc24 [V32 ] ( 2, 16 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V33 loc25 [V33,T52] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
+; V33 loc25 [V33,T53] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
; V34 loc26 [V34,T35] ( 2, 9 ) ref -> x19 class-hnd exact single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V35 loc27 [V35,T12] ( 5, 33 ) int -> [fp+0x94] ;* V36 loc28 [V36 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo> @@ -54,20 +54,20 @@ ;* V43 tmp6 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> ; V45 tmp8 [V45 ] ( 2, 16 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V46 tmp9 [V46,T48] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
+; V46 tmp9 [V46,T49] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
;* V47 tmp10 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp11 [V48,T49] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
+; V48 tmp11 [V48,T50] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
; V49 tmp12 [V49,T27] ( 2, 8 ) ubyte -> x3 "Inline return value spill temp" ; V50 tmp13 [V50,T28] ( 3, 12 ) ubyte -> x3 "Inline return value spill temp" ;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V52 tmp15 [V52,T15] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> -; V53 tmp16 [V53,T21] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
+; V52 tmp15 [V52,T17] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> +; V53 tmp16 [V53,T22] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
; V54 tmp17 [V54 ] ( 4, 16 ) byref -> [fp+0x70] must-init pinned "Inline stloc first use temp"
-; V55 tmp18 [V55,T37] ( 2, 8 ) long -> x2
+; V55 tmp18 [V55,T38] ( 2, 8 ) long -> x2
; V56 tmp19 [V56,T08] ( 2, 36 ) long -> [fp+0x68] spill-single-def "Inline stloc first use temp" ;* V57 tmp20 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp21 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V59 tmp22 [V59,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp22 [V59,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp23 [V60 ] ( 2, 8 ) int -> [fp+0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V62 tmp25 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -77,22 +77,22 @@ ; V66 tmp29 [V66 ] ( 2, 16 ) ref -> [fp+0xE8] do-not-enreg[X] addr-exposed "field V19.ParameterName (fldOffset=0x0)" P-DEP ; V67 tmp30 [V67 ] ( 2, 16 ) ref -> [fp+0xF0] do-not-enreg[X] addr-exposed "field V19.ParameterType (fldOffset=0x8)" P-DEP ; V68 tmp31 [V68 ] ( 2, 16 ) ref -> [fp+0xF8] do-not-enreg[X] addr-exposed "field V19.TypeInfo (fldOffset=0x10)" P-DEP
-; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
+; V69 tmp32 [V69,T24] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref "field V23.ParameterType (fldOffset=0x8)" P-INDEP
-; V71 tmp34 [V71,T24] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
+; V71 tmp34 [V71,T25] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
; V72 tmp35 [V72 ] ( 2, 16 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V32.ParameterName (fldOffset=0x0)" P-DEP ; V73 tmp36 [V73 ] ( 2, 16 ) ref -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V32.ParameterType (fldOffset=0x8)" P-DEP ; V74 tmp37 [V74 ] ( 2, 16 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed "field V32.TypeInfo (fldOffset=0x10)" P-DEP
-; V75 tmp38 [V75,T22] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
+; V75 tmp38 [V75,T23] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
;* V76 tmp39 [V76 ] ( 0, 0 ) ref -> zero-ref "field V36.ParameterType (fldOffset=0x8)" P-INDEP ; V77 tmp40 [V77,T19] ( 3, 20 ) ref -> x5 "field V36.TypeInfo (fldOffset=0x10)" P-INDEP ; V78 tmp41 [V78,T03] ( 3, 48 ) byref -> x1 "BlockOp address local"
-; V79 tmp42 [V79,T50] ( 2, 4 ) long -> x2 "Cast away GC" -; V80 tmp43 [V80,T51] ( 2, 4 ) long -> x3 "Cast away GC" -; V81 tmp44 [V81,T46] ( 2, 4 ) ref -> x7 "argument with side effect"
+; V79 tmp42 [V79,T51] ( 2, 4 ) long -> x1 "Cast away GC" +; V80 tmp43 [V80,T52] ( 2, 4 ) long -> x3 "Cast away GC" +; V81 tmp44 [V81,T47] ( 2, 4 ) ref -> x7 "argument with side effect"
; V82 tmp45 [V82,T04] ( 3, 48 ) byref -> x0 "BlockOp address local"
-; V83 tmp46 [V83,T25] ( 2, 16 ) long -> x2 "Cast away GC" -; V84 tmp47 [V84,T47] ( 2, 16 ) ref -> x7 "argument with side effect"
+; V83 tmp46 [V83,T26] ( 2, 16 ) long -> x2 "Cast away GC" +; V84 tmp47 [V84,T48] ( 2, 16 ) ref -> x7 "argument with side effect"
; V85 PSPSym [V85,T60] ( 1, 1 ) long -> [fp+0x118] do-not-enreg[V] "PSPSym" ; V86 cse0 [V86,T29] ( 3, 12 ) int -> [fp+0x58] spill-single-def "CSE - moderate" ; V87 cse1 [V87,T54] ( 3, 3 ) int -> x28 "CSE - moderate" @@ -137,8 +137,8 @@ G_M27295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov x19, x7 ; gcrRegs +[x19] ;; size=104 bbWeight=1 PerfScore 19.00
-G_M27295_IG02: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V33 V52}
+G_M27295_IG02: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V33 V53}
mov w27, wzr ;; size=4 bbWeight=1 PerfScore 0.50 G_M27295_IG03: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref, isz @@ -184,10 +184,10 @@ G_M27295_IG04: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0 ldr w7, [x5, #0x08] str w7, [fp, #0x50] // [V89 cse3] cmp w7, #0
- ble G_M27295_IG10
+ ble G_M27295_IG11
;; size=28 bbWeight=1 PerfScore 7.50
-G_M27295_IG05: ; bbWeight=8, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V52}
+G_M27295_IG05: ; bbWeight=8, gcVars=0020000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V53}
mov w0, #24 mov x1, #16 str w6, [fp, #0xD1FFAB1E] // [V18 loc10] @@ -212,70 +212,22 @@ G_M27295_IG07: ; bbWeight=8, isz, extend blr x8 ; gcrRegs -[x5] ; gcr arg pop 0
- cbz w0, G_M27295_IG11 - ldr w1, [fp, #0xE0] // [V20 loc12] - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - add w2, w2, w1 - ldr w1, [fp, #0xD1FFAB1E] // [V18 loc10] - add w1, w1, #1 - ldr w3, [fp, #0x50] // [V89 cse3] - cmp w3, w1 - mov w6, w1 - ldr x5, [fp, #0x40] // [V17 loc9] - ; gcrRegs +[x5] - bgt G_M27295_IG09 - ;; size=72 bbWeight=8 PerfScore 164.00 -G_M27295_IG08: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5]
+ cbnz w0, G_M27295_IG12 + ;; size=32 bbWeight=8 PerfScore 60.00 +G_M27295_IG08: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- mov w1, #6 - cmp w20, #0 - csel w1, wzr, w1, eq - ldr w4, [fp, #0xD1FFAB1E] // [V11 loc3] - add w0, w4, #5 - str w4, [fp, #0xD1FFAB1E] // [V11 loc3] - cmp w4, #0 - csel w0, wzr, w0, eq - str w2, [fp, #0xD1FFAB1E] // [V10 loc2] - add w0, w2, w0 - add w5, w0, w1 - str w5, [fp, #0xD1FFAB1E] // [V16 loc8] - sxtw x1, w5 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWARR_1_VC - ; gcrRegs +[x0] - ; gcr arg pop 0 - str x0, [fp, #0x48] // [V08 loc0] - ; GC ptr vars +{V08} - b G_M27295_IG15 - ;; size=76 bbWeight=1 PerfScore 14.00 -G_M27295_IG09: ; bbWeight=4, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x5] - ; GC ptr vars -{V08} +{V17 V31} - str w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG05 - ;; size=8 bbWeight=4 PerfScore 8.00 -G_M27295_IG10: ; bbWeight=0.50, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5] - ; GC ptr vars -{V17 V31} - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG08 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M27295_IG11: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref
mov w27, #1 ldr w2, [fp, #0xD1FFAB1E] // [V12 loc4] str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- mov w4, #4 - str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
+ mov w1, #4 + str w1, [fp, #0xD1FFAB1E] // [V11 loc3]
mov x5, x19 ; gcrRegs +[x5] str x5, [fp, #0x38] // [V21 loc13] ; GC ptr vars +{V21} mov w6, wzr ;; size=32 bbWeight=1 PerfScore 7.00
-G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27295_IG09: ; bbWeight=8, gcVars=0020000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
mov w1, #24 mov x0, #16 str w6, [fp, #0xDC] // [V22 loc14] @@ -301,30 +253,11 @@ G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs blr x7 ; gcrRegs -[x0 x5] ; gcr arg pop 0
- cbz w0, G_M27295_IG14 - ldr w0, [fp, #0x88] // [V45 tmp8] - ldr w1, [fp, #0xD8] // [V24 loc16] - add w1, w1, w0 - ldr w2, [fp, #0xD1FFAB1E] // [V11 loc3] - add w2, w2, w1 - ldr w0, [fp, #0xDC] // [V22 loc14] - add w0, w0, #1 - ldr w1, [fp, #0x50] // [V89 cse3] - cmp w1, w0 - str w2, [fp, #0xD1FFAB1E] // [V11 loc3] - mov w6, w0 - ldr x5, [fp, #0x38] // [V21 loc13] - ; gcrRegs +[x5] - bgt G_M27295_IG12 - ;; size=128 bbWeight=8 PerfScore 344.00 -G_M27295_IG13: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5] - ; GC ptr vars -{V21 V33} - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG08 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M27295_IG14 + ;; size=76 bbWeight=8 PerfScore 212.00 +G_M27295_IG10: ; bbWeight=4, gcVars=0020000000000000 {V33}, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
+ ; GC ptr vars -{V21 V33}
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -337,47 +270,112 @@ G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 ldr x19, [x0] ; gcrRegs +[x19] ldr w27, [fp, #0xD1FFAB1E] // [V12 loc4]
- str wzr, [fp, #0xD1FFAB1E] // [V11 loc3] - mov w2, wzr - mov w0, w2 - mov w2, w27
+ mov w4, wzr + mov w0, wzr + str w27, [fp, #0xD1FFAB1E] // [V10 loc2] + str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
mov w27, w0
- b G_M27295_IG08 - ;; size=64 bbWeight=1 PerfScore 13.50
...

-4 (-0.15%) : 4878.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -23,24 +23,24 @@ ; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String> ; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28 ; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3 ; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]> ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1 ;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt" ;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg" ;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -67,13 +67,13 @@ ;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" ;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> -; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg" -; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> +; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg" +; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]> ; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg" ; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]> @@ -90,14 +90,14 @@ ;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> -; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> +; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP ;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP @@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2 bhi G_M4730_IG74
- cmp w1, #0 - cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w3, [x1, #0x08] cmp w3, w0 bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref ; byrRegs -[x27] add x1, x1, #16 @@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {}, beq G_M4730_IG67 b G_M4730_IG27 ;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89} str w1, [fp, #0x60] // [V10 loc6] mov w28, w2 @@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; GC ptr vars +{V89} ldr w28, [fp, #0x68] // [V07 loc3] ;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3] ; GC ptr vars -{V57} cmp w25, w26 @@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89} ; GC ptr vars +{V13} cbz x24, G_M4730_IG39 ;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26] ldr w26, [fp, #0x44] // [V90 tmp68] cbz w26, G_M4730_IG32 @@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g str w0, [x19, #0x18] b G_M4730_IG41 ;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27] ; GC ptr vars +{V13 V16 V89} b G_M4730_IG42 @@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; gcrRegs -[x26] b G_M4730_IG47 ;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26] ; GC ptr vars +{V13 V16 V89} ldr x2, [fp, #0x30] // [V13 loc9] @@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ; gcr arg pop 0 b G_M4730_IG06 ;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27] ; GC ptr vars +{V13 V16 V89} ldr x1, [fp, #0x30] // [V13 loc9] @@ -1216,7 +1215,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2704, prolog size 48, PerfScore 6977.50, instruction count 676, allocated bytes for code 2704 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2700, prolog size 48, PerfScore 6975.50, instruction count 675, allocated bytes for code 2700 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -1227,7 +1226,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 676 (0x002a4) Actual length = 2704 (0x000a90)
+ Function Length : 675 (0x002a3) Actual length = 2700 (0x000a8c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.61%) : 4786.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)

@@ -76,7 +76,7 @@ G_M60940_IG02: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=800 G_M60940_IG03: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz cbnz x0, G_M60940_IG04 str xzr, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=12 bbWeight=1 PerfScore 3.00 G_M60940_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -128,7 +128,7 @@ G_M60940_IG05: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, ldr x0, [fp, #0x38] // [V07 loc3] ; gcrRegs +[x0] str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=52 bbWeight=1 PerfScore 14.00 G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -144,7 +144,7 @@ G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w2, wzr mov w3, wzr cmp w1, #0
- ble G_M60940_IG11
+ ble G_M60940_IG13
;; size=44 bbWeight=1 PerfScore 13.00 G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz mov w4, #24 @@ -159,21 +159,28 @@ G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w2, [fp, #0x28] // [V10 loc6+0x08] ; byrRegs -[x2] cmp w2, #17
- beq G_M60940_IG10
+ bne G_M60940_IG10 + ;; size=44 bbWeight=8 PerfScore 152.00 +G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + b G_M60940_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + b G_M60940_IG13 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M60940_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0]
add w2, w3, #1 sxtw w3, w2 cmp w1, w3 bgt G_M60940_IG07
- ;; size=60 bbWeight=8 PerfScore 172.00 -G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=8 PerfScore 20.00 +G_M60940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M60940_IG11
+ b G_M60940_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - b G_M60940_IG11 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, fp, #32 // [V10 loc6] ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0] @@ -184,9 +191,9 @@ G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x2 ; gcr arg pop 0 str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=36 bbWeight=1 PerfScore 10.00
-G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG13: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V05} ldr x0, [fp, #0x18] // [V04 loc0] @@ -199,36 +206,36 @@ G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M60940_IG16
+ b G_M60940_IG18
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG12: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04 V05} ldr x0, [fp, #0x48] // [V34 PSPSym]
- bl G_M60940_IG27
+ bl G_M60940_IG29
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60940_IG13: ; bbWeight=1, nogc, extend
+G_M60940_IG15: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05} ldr x0, [fp, #0x10] // [V05 loc1] ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M60940_IG15: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x50] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, xzr - ;; size=4 bbWeight=1 PerfScore 0.50
G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x60 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, xzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M60940_IG19: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x50] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M60940_IG20: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] @@ -236,7 +243,7 @@ G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre str x1, [sp, #0x18] sub fp, x1, #96 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG21: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05} mov x1, x0 ; gcrRegs +[x1] @@ -249,12 +256,12 @@ G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbnz x19, G_M60940_IG20
+ cbnz x19, G_M60940_IG22
mov w0, wzr ; gcrRegs -[x0]
- b G_M60940_IG23
+ b G_M60940_IG25
;; size=36 bbWeight=0 PerfScore 0.00
-G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -263,7 +270,7 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M60940_IG21
+ cbnz x0, G_M60940_IG23
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -276,44 +283,44 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by cmp x0, #0 cset x0, ne ; gcrRegs -[x0]
- b G_M60940_IG22
+ b G_M60940_IG24
;; size=56 bbWeight=0 PerfScore 0.00
-G_M60940_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0 cset x0, ne ;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #96 str x3, [sp, #0x18] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M60940_IG25: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG27: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
adr x0, [G_M60940_IG09] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M60940_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #96 str x3, [sp, #0x18] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG30: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0]
- cbz x0, G_M60940_IG29
+ cbz x0, G_M60940_IG31
movz x1, #0xD1FFAB1E // code for System.Reflection.PortableExecutable.PEReader:Dispose():this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -323,7 +330,7 @@ G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr @@ -331,7 +338,7 @@ G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, RWD00 dq 0000FFFF5096D218h, 0000FFFF5463B840h
-Total bytes of code 652, prolog size 32, PerfScore 283.00, instruction count 163, allocated bytes for code 652 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
+Total bytes of code 656, prolog size 32, PerfScore 284.00, instruction count 164, allocated bytes for code 656 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
; ============================================================ Unwind Info: @@ -342,7 +349,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -410,7 +417,7 @@ Unwind Info: *************** EH table for System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider 2 EH table entries, 1 duplicate clauses, 1 cloned finallys, 4 total EH entries reported to VM
-EH#0: try [G_M60940_IG10..G_M60940_IG11) handled by [G_M60940_IG24..G_M60940_IG27) filter at [G_M60940_IG18..G_M60940_IG24)
...

+16 (+0.67%) : 22697.dasm - System.Text.Json.Tests.Perf_Deep:WriteDeepUtf16():this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T00] ( 69,116.50) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Text.Json.Utf8JsonWriter> ; V02 loc1 [V02 ] ( 9, 7 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init ld-addr-op <System.Text.Json.JsonWriterOptions> ; V03 loc2 [V03,T09] ( 6, 21 ) int -> x21
-; V04 loc3 [V04,T02] ( 8, 29 ) int -> x24
+; V04 loc3 [V04,T02] ( 8, 29 ) int -> x21
; V05 loc4 [V05,T18] ( 4, 13 ) int -> x19 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T42] ( 3, 6 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Buffers.ArrayBufferWriter`1[ubyte]> @@ -86,8 +86,8 @@ ;* V75 tmp69 [V75 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V76 tmp70 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V77 tmp71 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x21 "Inlining Arg" -; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x22 "Inlining Arg" +; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x26 "Inlining Arg"
;* V80 tmp74 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V81 tmp75 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V82 tmp76 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -100,7 +100,7 @@ ; V89 tmp83 [V89,T33] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder> ; V90 tmp84 [V90,T24] ( 5, 10 ) ref -> x0 ;* V91 tmp85 [V91 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x22 "Inline stloc first use temp"
+; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x27 "Inline stloc first use temp"
;* V93 tmp87 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V94 tmp88 [V94 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V95 tmp89 [V95,T14] ( 2, 16 ) int -> x1 "Inlining Arg" @@ -145,10 +145,10 @@ ;* V134 tmp128 [V134 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP ;* V135 tmp129 [V135 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP ;* V136 tmp130 [V136 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x25 "field V75._reference (fldOffset=0x0)" P-INDEP -; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x21 "field V75._length (fldOffset=0x8)" P-INDEP -; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x25 "field V76._reference (fldOffset=0x0)" P-INDEP -; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x21 "field V76._length (fldOffset=0x8)" P-INDEP
+; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x26 "field V75._reference (fldOffset=0x0)" P-INDEP +; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x22 "field V75._length (fldOffset=0x8)" P-INDEP +; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x26 "field V76._reference (fldOffset=0x0)" P-INDEP +; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x22 "field V76._length (fldOffset=0x8)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP ;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP ;* V143 tmp137 [V143 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP @@ -159,7 +159,7 @@ ; V148 tmp142 [V148,T37] ( 2, 8 ) long -> x24 "Cast away GC" ; V149 tmp143 [V149,T51] ( 2, 4 ) long -> x25 "Cast away GC" ; V150 tmp144 [V150,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x22 "Cast away GC"
+; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x27 "Cast away GC"
; V152 tmp146 [V152,T07] ( 3, 24 ) ref -> x1 "arr expr" ; V153 PSPSym [V153,T61] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym" ; V154 cse0 [V154,T17] ( 4, 14 ) int -> x0 "CSE - moderate" @@ -170,21 +170,22 @@ ; Lcl frame size = 72 G_M54203_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0xA0]!
stp x19, x20, [sp, #0x58] stp x21, x22, [sp, #0x68] stp x23, x24, [sp, #0x78]
- str x25, [sp, #0x88]
+ stp x25, x26, [sp, #0x88] + str x27, [sp, #0x98]
mov fp, sp add x9, fp, #32 movi v16.16b, #0 stp q16, q16, [x9] stp xzr, xzr, [x9, #0x20]
- add x1, sp, #144
+ add x1, sp, #160
str x1, [fp, #0x50] // [V153 PSPSym] mov x19, x0 ; gcrRegs +[x19]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M54203_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20] @@ -485,18 +486,18 @@ G_M54203_IG28: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { str w0, [x20, #0x28] mov w0, #3 strb w0, [x20, #0x36]
- mov w24, wzr
+ mov w21, wzr
;; size=32 bbWeight=1 PerfScore 8.00 G_M54203_IG29: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x28] ; gcrRegs +[x0] ldr w1, [x0, #0x08]
- cmp w24, w1
+ cmp w21, w1
bhs G_M54203_IG47 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x22, [x0, w24, UXTW #3]
+ ldr x22, [x0, w21, UXTW #3]
; gcrRegs +[x22] cbnz x22, G_M54203_IG61 ;; size=28 bbWeight=4 PerfScore 48.00 @@ -517,12 +518,12 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x19, #0x20] ; gcrRegs +[x1] ldr w0, [x1, #0x08]
- cmp w24, w0
+ cmp w21, w0
bhs G_M54203_IG47 add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- ldr w1, [x1, w24, UXTW #2]
+ ldr w1, [x1, w21, UXTW #2]
; byrRegs -[x1] sxtw x1, w1 mov x0, x20 @@ -534,10 +535,10 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- add w24, w24, #1
+ add w21, w21, #1
movz w0, #0xD1FFAB1E movk w0, #1 LSL #16
- cmp w24, w0
+ cmp w21, w0
blt G_M54203_IG29 ;; size=72 bbWeight=4 PerfScore 82.00 G_M54203_IG32: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref @@ -631,7 +632,7 @@ G_M54203_IG39: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b b G_M54203_IG72 ;; size=64 bbWeight=1 PerfScore 15.00 G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov w0, w21
+ mov w0, w22
movz x1, #0xD1FFAB1E // code for System.Text.Json.ThrowHelper:ThrowArgumentException_ValueTooLarge(long) movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -640,9 +641,9 @@ G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
+G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
; gcrRegs +[x19]
- ; byrRegs +[x25]
+ ; byrRegs +[x26]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -653,7 +654,7 @@ G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ;; size=24 bbWeight=0 PerfScore 0.00 G_M54203_IG42: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]
- ; byrRegs -[x25]
+ ; byrRegs -[x26]
ldrb w4, [x20, #0x36] ldr w2, [x20, #0x68] mov w0, #31 @@ -915,27 +916,27 @@ G_M54203_IG60: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=100 ;; size=40 bbWeight=0.50 PerfScore 4.25 G_M54203_IG61: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x22]
- add x25, x22, #12 - ; byrRegs +[x25] - ldr w21, [x22, #0x08]
+ add x26, x22, #12 + ; byrRegs +[x26] + ldr w22, [x22, #0x08] + ; gcrRegs -[x22]
movz w0, #0xD1FFAB1E movk w0, #0xD1FFAB1E LSL #16
- cmp w21, w0
+ cmp w22, w0
bgt G_M54203_IG40 add x0, x20, #96 ; byrRegs +[x0] ldr x0, [x0] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbnz w21, G_M54203_IG62
+ cbnz w22, G_M54203_IG62
movn w3, #0 b G_M54203_IG65 ;; size=44 bbWeight=2 PerfScore 24.00
-G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref, isz - ; gcrRegs -[x22] - mov x22, x25 - ; byrRegs +[x22] - str x22, [fp, #0x20] // [V87 tmp81]
+G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref, isz + mov x27, x26 + ; byrRegs +[x27] + str x27, [fp, #0x20] // [V87 tmp81]
cbnz x0, G_M54203_IG64 movz x0, #0xD1FFAB1E ; gcrRegs -[x0] @@ -944,17 +945,17 @@ G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200 ldr w0, [x0] tbz w0, #0, G_M54203_IG41 ;; size=32 bbWeight=2 PerfScore 16.00
-G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref - ; byrRegs -[x22]
+G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref + ; byrRegs -[x27]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=2 PerfScore 9.00
-G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref - mov x1, x22 - mov w2, w21
+G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref + mov x1, x27 + mov w2, w22
ldr x3, [x0] ldr x3, [x3, #0x48] ldr x3, [x3, #0x28] @@ -963,13 +964,13 @@ G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200 ; gcr arg pop 0 sxtw w3, w0 ;; size=28 bbWeight=2 PerfScore 23.00
-G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
str xzr, [fp, #0x20] // [V87 tmp81] cmn w3, #1 beq G_M54203_IG66
- mov x1, x25
+ mov x1, x26
; byrRegs +[x1]
- mov w2, w21
+ mov w2, w22
mov x0, x20 ; gcrRegs +[x0] movz x4, #0xD1FFAB1E // code for <unknown method> @@ -978,12 +979,12 @@ G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ldr x4, [x4] blr x4 ; gcrRegs -[x0]
- ; byrRegs -[x1 x25]
+ ; byrRegs -[x1 x26]
; gcr arg pop 0 b G_M54203_IG69 ;; size=48 bbWeight=2 PerfScore 21.00
-G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz - ; byrRegs +[x25]
+G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
...

+20 (+3.91%) : 22692.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -33,10 +33,10 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value" ; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG23 - cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25 + cbz w21, G_M46295_IG19
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG17 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG14 - cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16 + cbnz x23, G_M46295_IG12
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08] sub w0, w0, w24 cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12 ; byrRegs +[x2] sbfiz x0, x24, #1, #32 @@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -266,7 +277,7 @@ Unwind Info: E bit : 0 ...

benchmarks.run_pgo.linux.arm64.checked.mch

-16 (-3.54%) : 126900.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)

@@ -23,7 +23,7 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]> ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ; V12 tmp6 [V12,T05] ( 2,399.96) long -> x1 "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> x23 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> x23 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> x24 class-hnd "Inlining Arg" <System.__Canon> @@ -39,9 +39,9 @@ ; V26 tmp20 [V26,T03] ( 2,400 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon> ;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP ;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> x24 "V04.[000..008)" -; V30 tmp24 [V30,T14] ( 4,101.01) int -> x25 "V04.[008..012)" -; V31 tmp25 [V31,T07] ( 6,301.01) int -> registers "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> x24 "V04.[000..008)" +; V30 tmp24 [V30,T14] ( 3,101.01) int -> x25 "V04.[008..012)" +; V31 tmp25 [V31,T06] ( 6,301.01) int -> registers "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> x2 "V04.[024..032)" ; V33 tmp27 [V33,T11] ( 3,199.99) long -> x4 "V04.[032..040)" ;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)" @@ -80,15 +80,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ldp w25, w26, [fp, #0xF8] // [V04 loc2+0x08], [V04 loc2+0x0c] ;; size=12 bbWeight=1 PerfScore 4.50 G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- cbz w23, G_M19783_IG08
+ cbz w23, G_M19783_IG06
;; size=4 bbWeight=0.01 PerfScore 0.01 G_M19783_IG04: ; bbWeight=8.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
- b G_M19783_IG08
+ b G_M19783_IG06
;; size=4 bbWeight=8.02 PerfScore 8.02 G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x24] cmp w22, w0
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
add x0, x19, #16 ; byrRegs +[x0] ldr x0, [x0, w22, UXTW #3] @@ -107,11 +107,15 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs mov w26, wzr b G_M19783_IG03 ;; size=56 bbWeight=0.01 PerfScore 0.19
-G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ mov w23, #1 + ldr w0, [x24, #0x44] + cmp w25, w0 + bne G_M19783_IG18
ldr w27, [x24, #0x38]
- b G_M19783_IG10 - ;; size=8 bbWeight=100 PerfScore 400.00
+ b G_M19783_IG09 + ;; size=24 bbWeight=100 PerfScore 900.00
G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] sxtw x0, w22 @@ -127,23 +131,17 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, blr x4 ; gcrRegs -[x0 x2] ; gcr arg pop 0
- cbz w0, G_M19783_IG15 - ;; size=44 bbWeight=99.99 PerfScore 1199.88 -G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz - mov w23, #1 - ldr w0, [x24, #0x44] - cmp w25, w0 - bne G_M19783_IG19
+ cbz w0, G_M19783_IG14
b G_M19783_IG06
- ;; size=20 bbWeight=100 PerfScore 600.00 -G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=99.99 PerfScore 1299.87 +G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24, #0x10] ; gcrRegs +[x0] add w1, w26, #1 sxtw w28, w1 ldr w1, [x0, #0x08] cmp w26, w1
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
mov w1, #24 mov x2, #16 umaddl x1, w26, w1, x2 @@ -153,38 +151,38 @@ G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byref ldr w1, [x0, #0x14] cmn w1, #1 mov w26, w28
- bge G_M19783_IG11
+ bge G_M19783_IG10
;; size=56 bbWeight=100 PerfScore 2000.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cmp w26, w27
- bhs G_M19783_IG16 - b G_M19783_IG09
+ bhs G_M19783_IG15 + b G_M19783_IG08
;; size=12 bbWeight=100 PerfScore 250.00
-G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
+G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0] ldp x2, x4, [x0] ; gcrRegs +[x2] mov w28, #1 ;; size=8 bbWeight=100 PerfScore 450.00
-G_M19783_IG12: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cbnz w28, G_M19783_IG07 ;; size=4 bbWeight=100 PerfScore 100.00
-G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG12: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x24] add w22, w22, #1 ldr w0, [x19, #0x08] cmp w0, w22
- ble G_M19783_IG17
+ ble G_M19783_IG16
b G_M19783_IG05 ;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21 x24] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -198,21 +196,17 @@ G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w23, #1 - ldr w1, [x24, #0x44] - cmp w25, w1 - beq G_M19783_IG06 - b G_M19783_IG19 - ;; size=64 bbWeight=0 PerfScore 0.00 -G_M19783_IG16: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+ b G_M19783_IG06 + ;; size=48 bbWeight=0 PerfScore 0.00 +G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
add w26, w27, #1 mov x2, xzr ; gcrRegs +[x2] mov x4, xzr mov w28, wzr
- b G_M19783_IG12
+ b G_M19783_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M19783_IG16: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x19 x24] ldr x2, [x20, #0x08] ; gcrRegs +[x2] @@ -226,7 +220,7 @@ G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcrRegs -[x1 x20-x21] ; gcr arg pop 0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG17: ; bbWeight=0, epilog, nogc, extend
ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] @@ -236,7 +230,7 @@ G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend add sp, sp, #224 ret lr ;; size=32 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 @@ -247,7 +241,7 @@ G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 452, prolog size 40, PerfScore 5026.16, instruction count 113, allocated bytes for code 452 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 436, prolog size 40, PerfScore 5026.15, instruction count 109, allocated bytes for code 436 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -258,7 +252,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-3.06%) : 24663.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)

@@ -8,8 +8,8 @@ ; 7 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T31] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128> -; V01 arg1 [V01,T32] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V00 arg0 [V00,T30] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128> +; V01 arg1 [V01,T31] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
; V02 loc0 [V02,T28] ( 6, 6 ) long -> x19 ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[uint]> ; V04 loc2 [V04,T29] ( 6, 6 ) long -> x21 @@ -23,8 +23,8 @@ ;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]> ;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ptr ; V14 loc12 [V14,T05] ( 13, 39 ) int -> [fp+0x64] ptr
-; V15 loc13 [V15,T11] ( 8, 18 ) int -> [fp+0x60] spill-single-def ptr -; V16 loc14 [V16,T18] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
+; V15 loc13 [V15,T11] ( 7, 18 ) int -> [fp+0x60] spill-single-def ptr +; V16 loc14 [V16,T17] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
; V17 loc15 [V17,T03] ( 6, 60 ) long -> [fp+0x50] ptr ; V18 loc16 [V18,T10] ( 3, 22 ) int -> [fp+0x4C] ptr ; V19 loc17 [V19,T02] ( 13,114 ) long -> [fp+0x40] ptr @@ -38,7 +38,7 @@ ; V27 tmp5 [V27,T33] ( 3, 6 ) int -> x0 "Span.get_Item index" ; V28 tmp6 [V28,T63] ( 2, 2 ) int -> x0 "Span.get_Item index" ; V29 tmp7 [V29,T59] ( 5, 3 ) int -> x0
-; V30 tmp8 [V30,T24] ( 3, 8 ) int -> x7
+; V30 tmp8 [V30,T23] ( 3, 8 ) int -> x7
; V31 tmp9 [V31,T16] ( 5, 12 ) int -> x0 ;* V32 tmp10 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[uint]> ;* V33 tmp11 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]> @@ -64,8 +64,8 @@ ;* V53 tmp31 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp33 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V56 tmp34 [V56,T19] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg" -; V57 tmp35 [V57,T25] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
+; V56 tmp34 [V56,T18] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg" +; V57 tmp35 [V57,T24] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V59 tmp37 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp38 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -77,8 +77,8 @@ ;* V66 tmp44 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V67 tmp45 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V69 tmp47 [V69,T17] ( 5, 12 ) int -> [fp+0x38] ptr "Inlining Arg" -; V70 tmp48 [V70,T23] ( 3, 8 ) byref -> [fp+0x18] ptr "Inlining Arg"
+; V69 tmp47 [V69,T19] ( 3, 12 ) int -> [fp+0x38] spill-single-def ptr "Inlining Arg" +; V70 tmp48 [V70,T25] ( 2, 8 ) byref -> [fp+0x18] spill-single-def ptr "Inlining Arg"
;* V71 tmp49 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V72 tmp50 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -92,7 +92,7 @@ ; V81 tmp59 [V81,T48] ( 2, 4 ) long -> x0 "Inlining Arg" ; V82 tmp60 [V82,T49] ( 2, 4 ) long -> x1 "Inlining Arg" ; V83 tmp61 [V83,T14] ( 7, 15 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp62 [V84,T09] ( 15, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V84 tmp62 [V84,T09] ( 14, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
; V85 tmp63 [V85,T13] ( 6, 7 ) byref -> x21 single-def "field V05._reference (fldOffset=0x0)" P-INDEP ; V86 tmp64 [V86,T08] ( 15, 21.50) int -> x22 "field V05._length (fldOffset=0x8)" P-INDEP ; V87 tmp65 [V87,T20] ( 7, 8 ) byref -> x23 single-def "field V06._reference (fldOffset=0x0)" P-INDEP @@ -132,7 +132,7 @@ ; V121 tmp99 [V121,T43] ( 4, 4 ) long -> x2 "V01.[000..008)" ; V122 tmp100 [V122,T40] ( 5, 5 ) long -> x3 "V01.[008..016)" ; V123 GsCookie [V123 ] ( 1, 1 ) long -> [fp+0xB8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V124 cse0 [V124,T30] ( 4, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V124 cse0 [V124,T32] ( 3, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V125 cse1 [V125,T12] ( 4, 16 ) int -> [fp+0x34] spill-single-def "CSE - aggressive" ; V126 cse2 [V126,T26] ( 6, 7.50) int -> x3 multi-def "CSE - moderate" ; V127 cse3 [V127,T37] ( 3, 6 ) int -> x0 "CSE - moderate" @@ -176,7 +176,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w0, w1, w0 neg w0, w0, ASR #5 add w20, w0, #4
- tbnz w20, #31, G_M55503_IG48
+ tbnz w20, #31, G_M55503_IG46
add x21, fp, #152 // [V24 tmp2] str w2, [x21] lsr x0, x2, #32 @@ -193,13 +193,13 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w0, w1, w0 neg w0, w0, ASR #5 add w22, w0, #4
- tbnz w22, #31, G_M55503_IG48
+ tbnz w22, #31, G_M55503_IG46
add x23, fp, #136 // [V25 tmp3] stp xzr, xzr, [x23] sub w0, w20, w22 add w24, w0, #1 cmp w24, #4
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
cmp w24, #0 cset x0, ge movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) @@ -278,7 +278,7 @@ G_M55503_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 G_M55503_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz sxtw w5, w20 cmp w20, w22
- blt G_M55503_IG36
+ blt G_M55503_IG37
;; size=12 bbWeight=1 PerfScore 2.00 G_M55503_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz sub w6, w5, w22 @@ -383,11 +383,11 @@ G_M55503_IG25: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x2 bhi G_M55503_IG22 ;; size=20 bbWeight=16 PerfScore 56.00 G_M55503_IG26: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
- cbz x13, G_M55503_IG31
+ cbz x13, G_M55503_IG32
;; size=4 bbWeight=8 PerfScore 8.00 G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz cmp w6, w20
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
ubfiz x0, x6, #2, #32 add x9, x19, x0 ; byrRegs +[x9] @@ -402,7 +402,7 @@ G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 str w5, [fp, #0x64] // [V14 loc12] tbnz w1, #31, G_M55503_IG43 ;; size=44 bbWeight=2 PerfScore 18.00
-G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000101000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; byrRegs -[x9] mov x2, x21 ; byrRegs +[x2] @@ -417,60 +417,78 @@ G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 blr x10 ; byrRegs -[x0 x2] ; gcr arg pop 0
- ldr w4, [fp, #0x5C] // [V16 loc14] - cmp w0, w4
+ ldr w2, [fp, #0x5C] // [V16 loc14] + cmp w0, w2
beq G_M55503_IG39
- add w1, w4, #1
+ add w1, w2, #1
cmp w0, w1
- bne G_M55503_IG44
+ beq G_M55503_IG29 + 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 + ; gcr arg pop 0 + ;; size=104 bbWeight=2 PerfScore 44.00 +G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr x0, [fp, #0x10] // [V124 cse0] ; byrRegs +[x0]
- ldr w5, [fp, #0x60] // [V15 loc13] - sub w1, w20, w5 - tbnz w1, #31, G_M55503_IG38 - ;; size=76 bbWeight=2 PerfScore 38.00 -G_M55503_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V70 tmp48] + ; GC ptr vars +{V70} + ldr w4, [fp, #0x60] // [V15 loc13] + sub w1, w20, w4 + str w1, [fp, #0x38] // [V69 tmp47] + tbnz w1, #31, G_M55503_IG44 + ;; size=24 bbWeight=2 PerfScore 15.00 +G_M55503_IG30: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V70}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; GC ptr vars -{V124} mov x2, x21 ; byrRegs +[x2] mov w3, w22
- movz x4, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint - movk x4, #0xD1FFAB1E LSL #16 - movk x4, #0xD1FFAB1E LSL #32 - ldr x4, [x4] - blr x4
+ movz x5, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint + movk x5, #0xD1FFAB1E LSL #16 + movk x5, #0xD1FFAB1E LSL #32 + ldr x5, [x5] + ; GC ptr vars -{V70} + blr x5
; byrRegs -[x0 x2] ; gcr arg pop 0 ldr x2, [fp, #0x40] // [V19 loc17] sub x2, x2, #1 cmp w0, #1
- bne G_M55503_IG47
+ bne G_M55503_IG45
;; size=44 bbWeight=2 PerfScore 21.00
-G_M55503_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
mov x13, x2 ldp w6, w5, [fp, #0x60] // [V15 loc13], [V14 loc12] ;; size=8 bbWeight=1 PerfScore 2.50
-G_M55503_IG31: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w24
- bhs G_M55503_IG33
+ bhs G_M55503_IG34
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG32: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str w13, [x23, w6, UXTW #2] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w5, w20
- bhs G_M55503_IG35
+ bhs G_M55503_IG36
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str wzr, [x19, w5, UXTW #2] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr w8, [fp, #0x34] // [V125 cse1] sxtw w5, w8 cmp w5, w22 bge G_M55503_IG10 ;; size=16 bbWeight=4 PerfScore 16.00
-G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x19 x21] ldp w1, w0, [x23, #0x08] orr x1, x1, x0, LSL #32 @@ -482,12 +500,12 @@ G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b movk xip0, #0xD1FFAB1E LSL #48 ldr xip1, [fp, #0xB8] // [V123 GsCookie] cmp xip0, xip1
- beq G_M55503_IG37
+ beq G_M55503_IG38
bl CORINFO_HELP_FAIL_FAST ; byrRegs -[x23] ; gcr arg pop 0 ;; size=48 bbWeight=1 PerfScore 14.50
-G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x27, x28, [sp, #0xD1FFAB1E] ldp x25, x26, [sp, #0xF0] ldp x23, x24, [sp, #0xE0] @@ -496,19 +514,11 @@ G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0xD1FFAB1E ret lr ;; size=28 bbWeight=1 PerfScore 7.00 ...

-8 (-1.33%) : 105569.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueImmutableDictionary():ubyte:this (Tier1-OSR)

@@ -13,70 +13,68 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String> ; V01 loc0 [V01,T06] ( 9, 799.92) ubyte -> x20 ; V02 loc1 [V02,T11] ( 6, 299.97) ref -> x21 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T17] ( 3, 1.02) ref -> x22 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T14] ( 3, 100 ) ref -> x22 class-hnd exact <<unknown class>>
; V04 loc3 [V04,T05] ( 17,1300.89) int -> x19 ; V05 loc4 [V05 ] ( 5, 400.96) ref -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.String> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x25 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x24 class-hnd exact "Inlining Arg" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ; V10 tmp4 [V10,T07] ( 8, 799.92) ubyte -> x0 "Inline return value spill temp" ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ; V12 tmp6 [V12,T03] ( 6,2512.96) int -> x0 "Inline stloc first use temp"
-; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
+; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> ;* V15 tmp9 [V15,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V17 tmp11 [V17,T00] ( 14,4759.57) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V17 tmp11 [V17,T00] ( 14,4759.57) ref -> x25 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V08._root (fldOffset=0x0)" P-INDEP ;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref "field V08._comparers (fldOffset=0x8)" P-INDEP
-; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x26 "field V09._root (fldOffset=0x0)" P-INDEP -; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x27 "field V09._comparers (fldOffset=0x8)" P-INDEP
+; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x25 "field V09._root (fldOffset=0x0)" P-INDEP +; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x26 "field V09._comparers (fldOffset=0x8)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref "field V11._root (fldOffset=0x0)" P-INDEP
-; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x27 "field V11._comparers (fldOffset=0x8)" P-INDEP
+; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x26 "field V11._comparers (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T01] ( 3,3632.75) int -> x2 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 3,3048.48) ref -> x4 "CSE - aggressive" ; V26 cse2 [V26,T15] ( 3, 36.69) int -> x2 "CSE - aggressive" ; V27 cse3 [V27,T16] ( 3, 30.79) ref -> x4 "CSE - aggressive" ; V28 cse4 [V28,T09] ( 7, 400.98) int -> x23 "CSE - aggressive"
-; V29 cse5 [V29,T14] ( 4, 101.00) byref -> x24 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M61968_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - stp x25, x26, [sp, #0x58] - str x27, [sp, #0x68]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V13 tmp7], [V13 tmp7+0x08] - str xzr, [fp, #0x20] // [V13 tmp7+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V13 tmp7], [V13 tmp7+0x08] + str xzr, [fp, #0x28] // [V13 tmp7+0x10]
ldr w20, [fp, #0xB4] ldp x22, x21, [fp, #0xA0] ; gcrRegs +[x21-x22] ldr w19, [fp, #0x9C]
- ;; size=48 bbWeight=0.01 PerfScore 0.16
+ ;; size=44 bbWeight=0.01 PerfScore 0.15
G_M61968_IG02: ; bbWeight=0.01, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz ldr w23, [x22, #0x08] cmp w23, w19 ble G_M61968_IG22 tbnz w19, #31, G_M61968_IG11
- add x24, x22, #16 - ; byrRegs +[x24] - ;; size=20 bbWeight=0.01 PerfScore 0.06 -G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref, isz - ; gcrRegs -[x22] - ldr x25, [x24, w19, UXTW #3] - ; gcrRegs +[x25]
+ ;; size=16 bbWeight=0.01 PerfScore 0.06 +G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz + add x0, x22, #16 + ; byrRegs +[x0] + ldr x24, [x0, w19, UXTW #3] + ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24 - ldp x26, x27, [x21, #0x08] - ; gcrRegs +[x26-x27] - ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24 + ldp x25, x26, [x21, #0x08] + ; gcrRegs +[x25-x26] + ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0] + mov x1, x24
; gcrRegs +[x1] movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 @@ -85,44 +83,44 @@ G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=100000 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ldrsb wzr, [x26] - ;; size=48 bbWeight=98.99 PerfScore 2276.77 -G_M61968_IG04: ; bbWeight=1243.91, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz - ldr x4, [x26, #0x08]
+ ldrsb wzr, [x25] + ;; size=52 bbWeight=98.99 PerfScore 2326.27 +G_M61968_IG04: ; bbWeight=1243.91, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz + ldr x4, [x25, #0x08]
; gcrRegs +[x4] cbz x4, G_M61968_IG20
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2 beq G_M61968_IG08 ;; size=20 bbWeight=1243.91 PerfScore 10573.27
-G_M61968_IG05: ; bbWeight=1144.92, gcrefRegs=E200010 {x4 x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M61968_IG05: ; bbWeight=1144.92, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2 ble G_M61968_IG07 ;; size=8 bbWeight=1144.92 PerfScore 1717.39
-G_M61968_IG06: ; bbWeight=584.27, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG06: ; bbWeight=584.27, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG04 ;; size=8 bbWeight=584.27 PerfScore 2337.08
-G_M61968_IG07: ; bbWeight=560.65, gcrefRegs=A200010 {x4 x21 x25 x27}, byrefRegs=1000000 {x24}, byref - ; gcrRegs -[x26] +[x4] - mov x26, x4 - ; gcrRegs +[x26]
+G_M61968_IG07: ; bbWeight=560.65, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x25] +[x4] + mov x25, x4 + ; gcrRegs +[x25]
b G_M61968_IG04 ;; size=8 bbWeight=560.65 PerfScore 840.98
-G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, nogc
+G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x4]
- ldp x0, x2, [x26, #0x20] - stp x0, x2, [fp, #0x10] - ldr x0, [x26, #0x30] - str x0, [fp, #0x20]
+ ldp x0, x2, [x25, #0x20] + stp x0, x2, [fp, #0x18] + ldr x0, [x25, #0x30] + str x0, [fp, #0x28]
;; size=16 bbWeight=395.96 PerfScore 3563.64 G_M61968_IG09: ; bbWeight=395.96, isz, extend
- add x0, fp, #16 // [V13 tmp7]
+ add x0, fp, #24 // [V13 tmp7]
add x4, fp, #144 // [V05 loc4]
- mov x2, x25
+ mov x2, x24
; gcrRegs +[x2]
- mov x3, x27
+ mov x3, x26
; gcrRegs +[x3] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -132,7 +130,7 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend movk x5, #0xD1FFAB1E LSL #32 ldr x5, [x5] blr x5
- ; gcrRegs -[x2-x3 x25-x27]
+ ; gcrRegs -[x2-x3 x24-x26]
; gcr arg pop 0 eor w0, w20, w0 uxtb w20, w0 @@ -140,25 +138,24 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend cmp w23, w19 ble G_M61968_IG22 ;; size=68 bbWeight=395.96 PerfScore 4751.52
-G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
b G_M61968_IG03 ;; size=4 bbWeight=98.99 PerfScore 98.99 G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x22] - ; byrRegs -[x24]
cmp w19, w23 bhs G_M61968_IG19
- add x24, x22, #16 - ; byrRegs +[x24] - ldr x25, [x24, w19, UXTW #3] - ; gcrRegs +[x25]
+ add x0, x22, #16 + ; byrRegs +[x0] + ldr x24, [x0, w19, UXTW #3] + ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24 - ldp x26, x27, [x21, #0x08] - ; gcrRegs +[x26-x27] - ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24 + ldp x25, x26, [x21, #0x08] + ; gcrRegs +[x25-x26] + ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0] + mov x1, x24
; gcrRegs +[x1] movz x11, #0xD1FFAB1E movk x11, #0xD1FFAB1E LSL #16 @@ -166,46 +163,45 @@ G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- ; byrRegs -[x24]
; gcr arg pop 0
- ldrsb wzr, [x26]
+ ldrsb wzr, [x25]
;; size=60 bbWeight=1.00 PerfScore 25.00
-G_M61968_IG12: ; bbWeight=12.56, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz - ldr x4, [x26, #0x08]
+G_M61968_IG12: ; bbWeight=12.56, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz + ldr x4, [x25, #0x08]
; gcrRegs +[x4] cbz x4, G_M61968_IG21
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2 beq G_M61968_IG16 ;; size=20 bbWeight=12.56 PerfScore 106.80
-G_M61968_IG13: ; bbWeight=11.56, gcrefRegs=E600010 {x4 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M61968_IG13: ; bbWeight=11.56, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2 ble G_M61968_IG15 ;; size=8 bbWeight=11.56 PerfScore 17.35
-G_M61968_IG14: ; bbWeight=5.90, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M61968_IG14: ; bbWeight=5.90, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG12 ;; size=8 bbWeight=5.90 PerfScore 23.61
-G_M61968_IG15: ; bbWeight=5.66, gcrefRegs=A600010 {x4 x21 x22 x25 x27}, byrefRegs=0000 {}, byref - ; gcrRegs -[x26] +[x4] - mov x26, x4 - ; gcrRegs +[x26]
+G_M61968_IG15: ; bbWeight=5.66, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x25] +[x4] + mov x25, x4 + ; gcrRegs +[x25]
b G_M61968_IG12 ...

+20 (+3.76%) : 39037.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T09] ( 4, 3.02) byref -> x22 single-def ; V03 arg3 [V03,T07] ( 4, 4.03) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.04) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.04) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100.00) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=101.01 PerfScore 2323.20
-G_M3489_IG05: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0 beq G_M3489_IG17
- ;; size=24 bbWeight=100.00 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x0, x23, x28 lsl x0, x0, #1 @@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 sxtw w3, w0 ;; size=28 bbWeight=0.51 PerfScore 3.30 G_M3489_IG12: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.02 PerfScore 1.02
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - sub w0, w27, #1 - and w0, w27, w0 - sub w1, w0, #1 - and w27, w0, w1 - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - cbnz w27, G_M3489_IG09 - b G_M3489_IG05 - ;; size=28 bbWeight=0.01 PerfScore 0.04 -G_M3489_IG14: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22] str x23, [fp, #0xD1FFAB1E] // [V05 loc1] ;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M3489_IG15: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add w0, w23, w28 ;; size=8 bbWeight=1.01 PerfScore 2.52
-G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.01, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=1.01 PerfScore 9.58
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22] + sub w0, w27, #1 + and w0, w27, w0 + sub w1, w0, #1 + and w27, w0, w1 + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + cbnz w27, G_M3489_IG09 + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG06 + ;; size=48 bbWeight=0.01 PerfScore 0.08 +G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend @@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3895.74, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3895.74, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -278,7 +285,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+3.76%) : 149382.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T09] ( 4, 3.02) byref -> x22 single-def ; V03 arg3 [V03,T07] ( 4, 4.04) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.05) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.05) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=101.01 PerfScore 2323.24
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0 beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x0, x23, x28 lsl x0, x0, #1 @@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 sxtw w3, w0 ;; size=28 bbWeight=0.51 PerfScore 3.31 G_M3489_IG12: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.02 PerfScore 1.02
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - sub w0, w27, #1 - and w0, w27, w0 - sub w1, w0, #1 - and w27, w0, w1 - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - cbnz w27, G_M3489_IG09 - b G_M3489_IG05 - ;; size=28 bbWeight=0.01 PerfScore 0.04 -G_M3489_IG14: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22] str x23, [fp, #0xD1FFAB1E] // [V05 loc1] ;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M3489_IG15: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add w0, w23, w28 ;; size=8 bbWeight=1.01 PerfScore 2.53
-G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.01, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=1.01 PerfScore 9.60
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22] + sub w0, w27, #1 + and w0, w27, w0 + sub w1, w0, #1 + and w27, w0, w1 + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + cbnz w27, G_M3489_IG09 + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG06 + ;; size=48 bbWeight=0.01 PerfScore 0.08 +G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend @@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3895.89, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3895.88, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -278,7 +285,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+4.51%) : 143938.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T14] ( 4, 3.59) byref -> x22 single-def ; V03 arg3 [V03,T09] ( 4, 7.11) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,610.10) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,610.10) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=102.84, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=102.84 PerfScore 2365.21
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.33, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0
- beq G_M3489_IG19 - ;; size=24 bbWeight=100 PerfScore 650.00
+ beq G_M3489_IG18 + ;; size=24 bbWeight=99.33 PerfScore 645.62
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -163,9 +163,27 @@ G_M3489_IG09: ; bbWeight=3.51, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG17
+ bne G_M3489_IG12
;; size=24 bbWeight=3.51 PerfScore 15.80
-G_M3489_IG10: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG10: ; bbWeight=2.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22] + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add w0, w23, w28 + ;; size=8 bbWeight=2.84 PerfScore 7.09 +G_M3489_IG11: ; bbWeight=2.84, epilog, nogc, extend + ldp x27, x28, [sp, #0x70] + ldp x25, x26, [sp, #0x60] + ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp d10, d11, [sp, #0x20] + ldp d8, d9, [sp, #0x10] + ldp fp, lr, [sp], #0x80 + add sp, sp, #0xD1FFAB1E + ret lr + ;; size=40 bbWeight=2.84 PerfScore 26.93 +G_M3489_IG12: ; bbWeight=1.59, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22]
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x0, x23, x28 lsl x0, x0, #1 @@ -173,9 +191,9 @@ G_M3489_IG10: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x ; byrRegs +[x0] ubfiz x2, x21, #1, #32 cmp x2, #10
- bne G_M3489_IG12
+ bne G_M3489_IG14
;; size=28 bbWeight=1.59 PerfScore 10.36
-G_M3489_IG11: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x19 x22}, byref
+G_M3489_IG13: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x19 x22}, byref
mov x1, x22 ; byrRegs +[x1] ldr x2, [x0] @@ -187,9 +205,9 @@ G_M3489_IG11: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 cmp x2, x3 ccmp x0, x1, 0, eq cset x3, eq
- b G_M3489_IG13
+ b G_M3489_IG15
;; size=36 bbWeight=0.80 PerfScore 11.96
-G_M3489_IG12: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x19 x22}, byref
+G_M3489_IG14: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x19 x22}, byref
; byrRegs +[x0] mov x1, x22 ; byrRegs +[x1] @@ -202,10 +220,10 @@ G_M3489_IG12: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 ; gcr arg pop 0 sxtw w3, w0 ;; size=28 bbWeight=0.80 PerfScore 5.18
-G_M3489_IG13: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - cbnz w3, G_M3489_IG16
+G_M3489_IG15: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz + cbnz w3, G_M3489_IG20
;; size=4 bbWeight=1.59 PerfScore 1.59
-G_M3489_IG14: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG16: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
sub w0, w27, #1 and w0, w27, w0 sub w1, w0, #1 @@ -213,33 +231,19 @@ G_M3489_IG14: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x str x23, [fp, #0xD1FFAB1E] // [V05 loc1] cbnz w27, G_M3489_IG09 ;; size=24 bbWeight=0.68 PerfScore 2.71
-G_M3489_IG15: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref - b G_M3489_IG05 - ;; size=4 bbWeight=0.67 PerfScore 0.67 -G_M3489_IG16: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19 x22] - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M3489_IG17: ; bbWeight=2.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG17: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- add w0, w23, w28 - ;; size=8 bbWeight=2.84 PerfScore 7.09 -G_M3489_IG18: ; bbWeight=2.84, epilog, nogc, extend - ldp x27, x28, [sp, #0x70] - ldp x25, x26, [sp, #0x60] - ldp x23, x24, [sp, #0x50] - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp d10, d11, [sp, #0x20] - ldp d8, d9, [sp, #0x10] - ldp fp, lr, [sp], #0x80 - add sp, sp, #0xD1FFAB1E - ret lr - ;; size=40 bbWeight=2.84 PerfScore 26.93 -G_M3489_IG19: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG06 + ;; size=24 bbWeight=0.67 PerfScore 4.38 +G_M3489_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M3489_IG20: ; bbWeight=0.00, epilog, nogc, extend
+G_M3489_IG19: ; bbWeight=0.00, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -251,7 +255,11 @@ G_M3489_IG20: ; bbWeight=0.00, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=0.00 PerfScore 0.02
-G_M3489_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref
+G_M3489_IG20: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + b G_M3489_IG10 + ;; size=8 bbWeight=0.80 PerfScore 1.59 +G_M3489_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
; byrRegs +[x19 x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -271,7 +279,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 4029.12, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 556, prolog size 52, PerfScore 4029.24, instruction count 139, allocated bytes for code 556 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -282,7 +290,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 139 (0x0008b) Actual length = 556 (0x00022c)
---- 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

+0 (0.00%) : 6506.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)

@@ -79,12 +79,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbz w0, G_M44603_IG12
+ cbnz w0, G_M44603_IG10
;; size=24 bbWeight=2 PerfScore 13.00
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - b G_M44603_IG10 - ;; size=4 bbWeight=4 PerfScore 4.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21] + b G_M44603_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -110,7 +112,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-Total bytes of code 156, prolog size 16, PerfScore 67.25, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 156, prolog size 16, PerfScore 63.75, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 13807.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> x19 class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate> ; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [fp+0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V03 loc2 [V03,T21] ( 13, 43 ) ref -> [fp+0x38] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>> @@ -21,7 +21,7 @@ ; V10 loc9 [V10,T14] ( 9, 53 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain> ; V11 loc10 [V11,T11] ( 4, 72 ) ubyte -> x22 ; V12 loc11 [V12,T23] ( 3, 40 ) int -> x21
-; V13 loc12 [V13,T02] ( 5,132 ) int -> x23
+; V13 loc12 [V13,T03] ( 5,132 ) int -> x23
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V15 loc14 [V15,T54] ( 3, 10 ) int -> x19 ; V16 loc15 [V16,T25] ( 5, 33 ) int -> x20 @@ -33,7 +33,7 @@ ;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V23 tmp5 [V23,T44] ( 2, 16 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Net.NetEventSource> ; V24 tmp6 [V24,T12] ( 8, 64 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T37] ( 3, 24 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]> ; V27 tmp9 [V27,T38] ( 3, 24 ) ref -> x21 class-hnd exact "dup spill" <System.Object[]> ;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback> @@ -144,10 +144,10 @@ ;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement> ;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 5,288 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> -; V137 tmp119 [V137,T03] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String> -; V138 tmp120 [V138,T01] ( 6,132 ) ref -> x25 -; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 5,320 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> +; V137 tmp119 [V137,T04] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String> +; V138 tmp120 [V138,T02] ( 6,148 ) ref -> x25 +; V139 tmp121 [V139,T01] ( 3,192 ) ref -> x25 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String> ;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource> @@ -165,8 +165,8 @@ ;* V154 tmp136 [V154,T107] ( 0, 0 ) ref -> zero-ref ;* V155 tmp137 [V155 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V156 tmp138 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
-; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x25 class-hnd "Inlining Arg" <System.FormattableString> -; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x24
+; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x24 class-hnd "Inlining Arg" <System.FormattableString> +; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x25
; V159 tmp141 [V159,T31] ( 2, 32 ) ref -> x26 ;* V160 tmp142 [V160 ] ( 0, 0 ) ref -> zero-ref ;* V161 tmp143 [V161 ] ( 0, 0 ) ref -> zero-ref @@ -235,7 +235,7 @@ ; V224 tmp206 [V224,T76] ( 3, 6 ) ref -> x1 single-def "argument with side effect" ; V225 tmp207 [V225,T77] ( 3, 6 ) ref -> x1 single-def "argument with side effect" ; V226 tmp208 [V226,T13] ( 6, 54 ) ref -> x1 "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> x0 "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> x0 "argument with side effect"
; V228 tmp210 [V228,T34] ( 2, 32 ) ref -> x0 "argument with side effect" ; V229 tmp211 [V229,T19] ( 3, 48 ) ref -> x0 "argument with side effect" ; V230 tmp212 [V230,T104] ( 2, 4 ) long -> x2 "argument with side effect" @@ -247,13 +247,13 @@ ; V236 cse1 [V236,T115] ( 3, 3 ) ref -> x1 "CSE - conservative" ; V237 cse2 [V237,T116] ( 3, 3 ) ref -> x1 "CSE - conservative" ; V238 cse3 [V238,T117] ( 3, 3 ) ref -> x1 "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
; V240 cse5 [V240,T118] ( 3, 3 ) ref -> x0 "CSE - conservative" ; V241 cse6 [V241,T82] ( 4, 4 ) ref -> x19 "CSE - conservative" ; V242 cse7 [V242,T80] ( 5, 5 ) ref -> x19 "CSE - conservative" ; V243 cse8 [V243,T119] ( 3, 3 ) int -> x21 "CSE - conservative" ; V244 cse9 [V244,T22] ( 6, 43 ) int -> x19 multi-def "CSE - moderate"
-; V245 cse10 [V245,T10] ( 3, 80 ) byref -> x24 "CSE - aggressive"
+; V245 cse10 [V245,T10] ( 3, 96 ) byref -> x24 "CSE - aggressive"
; V246 rat0 [V246,T79] ( 3, 6 ) ref -> x6 "delegate invoke call" ; ; Lcl frame size = 80 @@ -272,7 +272,7 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x48] // [V00 this] ; GC ptr vars +{V00} ;; size=44 bbWeight=1 PerfScore 10.00
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] stp xzr, xzr, [fp, #0x38] // [V03 loc2], [V02 loc1] ; GC ptr vars +{V02 V03} @@ -418,7 +418,7 @@ G_M34773_IG07: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0xA0 ret lr ;; size=24 bbWeight=1 PerfScore 6.00
-G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200020 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200040 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] ; GC ptr vars +{V02 V03 V21 V41} ldr x1, [x19, #0x30] @@ -475,7 +475,7 @@ G_M34773_IG09: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {} str xzr, [fp, #0x28] // [V05 loc4] ; GC ptr vars +{V05} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200020 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200040 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V21 V41} movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this movk x1, #0xD1FFAB1E LSL #16 @@ -494,7 +494,7 @@ G_M34773_IG10: ; bbWeight=1, gcVars=0000000000000000000000000000001000000 ldr w2, [x2] tbnz w2, #0, G_M34773_IG12 ;; size=52 bbWeight=1 PerfScore 17.00
-G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208020 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208040 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -681,7 +681,7 @@ G_M34773_IG16: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000 ;; size=24 bbWeight=1 PerfScore 6.00 G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -701,7 +701,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20] @@ -724,7 +724,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=44 bbWeight=1 PerfScore 23.50 G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -744,12 +744,12 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20] ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -769,7 +769,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0 x19] @@ -810,7 +810,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ; gcrRegs +[x19] cbz x19, G_M34773_IG26 ;; size=104 bbWeight=1 PerfScore 42.50
-G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000020 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000040 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ; GC ptr vars -{V03} ldr x0, [x19] @@ -897,7 +897,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x20, [x0] ; gcrRegs +[x20] ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -911,7 +911,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x3 ; gcrRegs -[x0-x2 x19-x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=60 bbWeight=1 PerfScore 18.00 G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x48] // [V00 this] @@ -919,7 +919,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x1, [x0, #0x38] ; gcrRegs +[x1] ldr x1, [x1, #0x10]
- cbz x1, G_M34773_IG57
+ cbz x1, G_M34773_IG58
ldr x1, [x1, #0x08] mov x0, x1 ldr x1, [x1] @@ -930,7 +930,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] ; gcr arg pop 0 cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this @@ -956,7 +956,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [x0, #0x08] cbnz w19, G_M34773_IG29 ;; size=120 bbWeight=1 PerfScore 50.00
-G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208020 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208040 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x19, x20 ; gcrRegs +[x19] @@ -1021,23 +1021,23 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] ; gcr arg pop 0 cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
;; size=48 bbWeight=1 PerfScore 24.00 G_M34773_IG31: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x30] // [V04 loc3] ; gcrRegs +[x0]
- cbz x0, G_M34773_IG50
+ cbz x0, G_M34773_IG51
;; size=8 bbWeight=8 PerfScore 24.00 G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr x0, [fp, #0x30] // [V04 loc3] ; gcrRegs +[x0] ldr w19, [x0, #0x08]
- cbz w19, G_M34773_IG50
+ cbz w19, G_M34773_IG51
stp xzr, xzr, [fp, #0x18] // [V10 loc9], [V09 loc8] ; GC ptr vars +{V09 V10} ;; size=16 bbWeight=4 PerfScore 28.00
-G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] @@ -1061,7 +1061,7 @@ G_M34773_IG33: ; bbWeight=4, gcVars=0000000000000000000000000000000000000 ; gcr arg pop 0 str x0, [fp, #0x20] // [V09 loc8] ...

+0 (0.00%) : 32936.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)

@@ -198,7 +198,7 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ; gcr arg pop 0 mov x26, x0 ; gcrRegs +[x26]
- cbz x21, G_M41722_IG46
+ cbz x21, G_M41722_IG47
add x14, x26, #8 ; byrRegs +[x14] mov x15, x21 @@ -208,12 +208,12 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ; byrRegs -[x14] ldr w0, [x20, #0x08] cmp w0, #0
- ble G_M41722_IG41
+ ble G_M41722_IG42
;; size=64 bbWeight=1 PerfScore 12.50 G_M41722_IG03: ; bbWeight=4, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz ldr w0, [x20, #0x08] cmp w24, w0
- bhs G_M41722_IG43
+ bhs G_M41722_IG44
add x0, x20, #12 ; byrRegs +[x0] ldrh w0, [x0, w24, UXTW #2] @@ -228,7 +228,7 @@ G_M41722_IG04: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0 ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbz w0, G_M41722_IG12
+ cbz w0, G_M41722_IG13
b G_M41722_IG06 ;; size=28 bbWeight=2 PerfScore 15.00 G_M41722_IG05: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz @@ -236,18 +236,18 @@ G_M41722_IG05: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M41722_IG12
+ tbz w0, #7, G_M41722_IG13
;; size=20 bbWeight=2 PerfScore 11.00 G_M41722_IG06: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref mov w25, #1 add w24, w24, #1 mov w27, w24
- b G_M41722_IG40
+ b G_M41722_IG41
;; size=16 bbWeight=2 PerfScore 5.00 G_M41722_IG07: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz ldr x0, [x26, #0x08] ; gcrRegs +[x0]
- cbz x0, G_M41722_IG48
+ cbz x0, G_M41722_IG49
ldr w1, [x26, #0x10] ldr w2, [x0, #0x08] cmp w2, w1 @@ -265,52 +265,54 @@ G_M41722_IG08: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0 G_M41722_IG09: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz uxth w0, w0 cmp w0, #0xD1FFAB1E
- blo G_M41722_IG10
+ blo G_M41722_IG11
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbz w0, G_M41722_IG14 - b G_M41722_IG11 - ;; size=40 bbWeight=8 PerfScore 76.00 -G_M41722_IG10: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M41722_IG12 + ;; size=36 bbWeight=8 PerfScore 68.00 +G_M41722_IG10: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref + b G_M41722_IG15 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M41722_IG11: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M41722_IG14
+ tbz w0, #7, G_M41722_IG15
;; size=20 bbWeight=8 PerfScore 44.00
-G_M41722_IG11: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG12: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x26, #0x08] ; gcrRegs +[x0]
- cbz x0, G_M41722_IG48
+ cbz x0, G_M41722_IG49
ldr w1, [x26, #0x10] sxtw w2, w1 ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w0, w2
- bls G_M41722_IG12
+ bls G_M41722_IG13
add w0, w1, #1 str w0, [x26, #0x10] ;; size=36 bbWeight=8 PerfScore 108.00
-G_M41722_IG12: ; bbWeight=16, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG13: ; bbWeight=16, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
cbnz w25, G_M41722_IG07 ;; size=4 bbWeight=16 PerfScore 16.00
-G_M41722_IG13: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref - b G_M41722_IG15 - ;; size=4 bbWeight=2 PerfScore 2.00
G_M41722_IG14: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
+ b G_M41722_IG16 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
mov w25, wzr ;; size=4 bbWeight=2 PerfScore 1.00
-G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG16: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
add x0, x20, #12 ; byrRegs +[x0] ldrh w0, [x0, w24, UXTW #2] ; byrRegs -[x0] cmp w0, #37
- bne G_M41722_IG16
+ bne G_M41722_IG17
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -341,7 +343,7 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0 sxtw w27, w0 ldr w0, [x20, #0x08] cmp w24, w0
- bhs G_M41722_IG43
+ bhs G_M41722_IG44
add x0, x20, #12 ; byrRegs +[x0] ldrh w24, [x0, w24, UXTW #2] @@ -349,12 +351,12 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0 ldr x0, [x26, #0x08] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbz x0, G_M41722_IG48
+ cbz x0, G_M41722_IG49
ldr w1, [x26, #0x10] sxtw w2, w1 ldr w3, [x0, #0x08] cmp w3, w2
- bls G_M41722_IG17
+ bls G_M41722_IG18
add w1, w1, #1 str w1, [x26, #0x10] add x0, x0, #12 @@ -362,37 +364,37 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0 ; byrRegs +[x0] ldrh w0, [x0, w2, UXTW #2] ; byrRegs -[x0]
- b G_M41722_IG18
+ b G_M41722_IG19
;; size=160 bbWeight=2 PerfScore 85.00
-G_M41722_IG16: ; bbWeight=1, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG17: ; bbWeight=1, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] mov w27, w24
- b G_M41722_IG40
+ b G_M41722_IG41
;; size=8 bbWeight=1 PerfScore 1.50
-G_M41722_IG17: ; bbWeight=2, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG18: ; bbWeight=2, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
; gcrRegs +[x21] movn w0, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M41722_IG18: ; bbWeight=2, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG19: ; bbWeight=2, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
uxth w2, w0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M41722_IG19: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG20: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
sxth w0, w2 cmn w0, #1
- bne G_M41722_IG21
+ bne G_M41722_IG22
;; size=12 bbWeight=16 PerfScore 32.00
-G_M41722_IG20: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG21: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
mov w28, wzr ;; size=4 bbWeight=8 PerfScore 4.00
-G_M41722_IG21: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG22: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x18] ldr x1, [x21, #0x08] ; gcrRegs +[x1] ldr w3, [x1, #0x08] cmp w3, w0
- bls G_M41722_IG23
+ bls G_M41722_IG24
;; size=20 bbWeight=16 PerfScore 168.00
-G_M41722_IG22: ; bbWeight=8, gcrefRegs=4380002 {x1 x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG23: ; bbWeight=8, gcrefRegs=4380002 {x1 x19 x20 x21 x26}, byrefRegs=0000 {}, byref
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -400,9 +402,9 @@ G_M41722_IG22: ; bbWeight=8, gcrefRegs=4380002 {x1 x19 x20 x21 x26}, byre ldr w0, [x21, #0x18] add w0, w0, #1 str w0, [x21, #0x18]
- b G_M41722_IG24
+ b G_M41722_IG25
;; size=24 bbWeight=8 PerfScore 56.00
-G_M41722_IG23: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG24: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
; byrRegs -[x1] mov x0, x21 ; gcrRegs +[x0] @@ -415,32 +417,32 @@ G_M41722_IG23: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRe ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=28 bbWeight=8 PerfScore 52.00
-G_M41722_IG24: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG25: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x26, #0x08] ; gcrRegs +[x0]
- cbz x0, G_M41722_IG48
+ cbz x0, G_M41722_IG49
ldr w1, [x26, #0x10] ldr w2, [x0, #0x08] cmp w2, w1
- bls G_M41722_IG26
+ bls G_M41722_IG27
;; size=24 bbWeight=16 PerfScore 184.00
-G_M41722_IG25: ; bbWeight=8, gcrefRegs=4380001 {x0 x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG26: ; bbWeight=8, gcrefRegs=4380001 {x0 x19 x20 x21 x26}, byrefRegs=0000 {}, byref
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] ldrh w1, [x0, w1, UXTW #2]
- b G_M41722_IG27
+ b G_M41722_IG28
;; size=12 bbWeight=8 PerfScore 36.00
-G_M41722_IG26: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG27: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
; byrRegs -[x0] movn w1, #0 ;; size=4 bbWeight=8 PerfScore 4.00
-G_M41722_IG27: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG28: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
uxth w2, w1 cmp w2, #0xD1FFAB1E
- blo G_M41722_IG29
+ blo G_M41722_IG30
;; size=12 bbWeight=16 PerfScore 32.00
-G_M41722_IG28: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG29: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
str w1, [fp, #0x48] // [V56 tmp41] ...

+0 (0.00%) : 45508.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)

@@ -42,7 +42,7 @@ ;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp26 [V32,T36] ( 3, 6 ) int -> x26 "Inline return value spill temp" ; V33 tmp27 [V33,T37] ( 4, 8 ) int -> x0 "Inline stloc first use temp"
-; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
+; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x22 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp30 [V36,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -66,7 +66,7 @@ ; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> x28 class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount> ;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount> ;* V57 tmp51 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 "Inlining Arg"
+; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V60 tmp54 [V60,T60] ( 2, 2 ) int -> x21 "Single return block return value" ; V61 tmp55 [V61,T25] ( 6, 13 ) int -> x20 "V01.[000..004)" @@ -110,7 +110,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w20, [fp, #0x38] // [V01 arg1] ldrb w0, [x19, #0x4F]
- cbnz w0, G_M55237_IG91
+ cbnz w0, G_M55237_IG92
bl <unknown method> ; gcr arg pop 0 sxtw w21, w0 @@ -120,7 +120,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x44] cmp w21, w0
- beq G_M55237_IG92
+ beq G_M55237_IG93
add x22, x19, #80 ; byrRegs +[x22] mov x0, x22 @@ -142,10 +142,10 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 { mrs x0, tpidr_el0 ldr w1, [x0, #0xD1FFAB1E] cmp w1, #4
- blt G_M55237_IG93
+ blt G_M55237_IG94
ldr x0, [x0, #0xD1FFAB1E] ldr x0, [x0, #0x20]
- cbz x0, G_M55237_IG93
+ cbz x0, G_M55237_IG94
ldr x0, [x0] ; byrRegs +[x0] add x23, x0, #16 @@ -233,7 +233,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=2080000 {x19 x25}, byrefRegs=C0 ; gcrRegs +[x24] ldr w0, [x24, #0x18] cmp w0, #0
- bgt G_M55237_IG94
+ bgt G_M55237_IG95
ldr w1, [x19, #0x40] cmp w21, w1 bne G_M55237_IG35 @@ -287,10 +287,10 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 { mrs x0, tpidr_el0 ldr w1, [x0, #0xD1FFAB1E] cmp w1, #4
- blt G_M55237_IG95
+ blt G_M55237_IG96
ldr x0, [x0, #0xD1FFAB1E] ldr x0, [x0, #0x20]
- cbz x0, G_M55237_IG95
+ cbz x0, G_M55237_IG96
ldr x0, [x0] ; byrRegs +[x0] add x23, x0, #16 @@ -512,7 +512,7 @@ G_M55237_IG36: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 ldr w0, [x19, #0x48] mov w1, #0xD1FFAB1E cmp w0, w1
- blo G_M55237_IG88
+ blo G_M55237_IG84
cmn w20, #1 beq G_M55237_IG38 ;; size=24 bbWeight=4 PerfScore 26.00 @@ -530,11 +530,11 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 sub w0, w0, w1 cmp w0, w20 ccmp w0, #0, nc, lt
- blt G_M55237_IG84
+ blt G_M55237_IG85
sub w26, w20, w0 ;; size=28 bbWeight=2 PerfScore 12.00 G_M55237_IG40: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
- cbz w26, G_M55237_IG84
+ cbz w26, G_M55237_IG85
;; size=4 bbWeight=2 PerfScore 2.00 G_M55237_IG41: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz cmp w25, #20 @@ -883,7 +883,7 @@ G_M55237_IG74: ; bbWeight=4, gcrefRegs=1080002 {x1 x19 x24}, byrefRegs=C0 ; byrRegs -[x2] ; gcr arg pop 0 sxtw w21, w0
- cbz w21, G_M55237_IG86
+ cbz w21, G_M55237_IG87
ldr x0, [x24, #0x10] ldr x26, [x19, #0x28] cmp x0, x26 @@ -964,13 +964,55 @@ G_M55237_IG83: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 ; gcrRegs -[x28] b G_M55237_IG36 ;; size=4 bbWeight=4 PerfScore 4.00
-G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x19 x24]
+G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x23]
+ ldr w0, [x19, #0x48] + add w0, w0, #1 + str w0, [x19, #0x48] + ldr w0, [x24, #0x18] + add w0, w0, #1 + str w0, [x24, #0x18] + b G_M55237_IG89 + ;; size=28 bbWeight=0.50 PerfScore 5.00 +G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs -[x19 x24] + ldr w0, [x22] + cbnz w0, G_M55237_IG86 + 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 + ; gcr arg pop 0 + ;; size=52 bbWeight=0.50 PerfScore 6.25 +G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref + stlr wzr, [x22] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M55237_IG87: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x22] + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M55237_IG88: ; bbWeight=0.50, epilog, nogc, extend + ldp x27, x28, [sp, #0x80] + ldp x25, x26, [sp, #0x70] + ldp x23, x24, [sp, #0x60] + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x90 + ret lr + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M55237_IG89: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; byrRegs +[x22]
mov x19, x22 ; byrRegs +[x19] ldr w0, [x19]
- cbnz w0, G_M55237_IG85
+ cbnz w0, G_M55237_IG90
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -985,56 +1027,11 @@ G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22} ; byrRegs -[x22] ; gcr arg pop 0 ;; size=56 bbWeight=0.50 PerfScore 6.50
-G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - stlr wzr, [x19] - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19] - mov w0, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M55237_IG87: ; bbWeight=0.50, epilog, nogc, extend - ldp x27, x28, [sp, #0x80] - ldp x25, x26, [sp, #0x70] - ldp x23, x24, [sp, #0x60] - ldp x21, x22, [sp, #0x50] - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x90 - ret lr - ;; size=28 bbWeight=0.50 PerfScore 3.50 -G_M55237_IG88: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs +[x19 x24] - ; byrRegs +[x22] - ldr w0, [x19, #0x48] - add w0, w0, #1 - str w0, [x19, #0x48] - ldr w0, [x24, #0x18] - add w0, w0, #1 - str w0, [x24, #0x18] - mov x19, x22 - ; gcrRegs -[x19] - ; byrRegs +[x19] - ldr w0, [x19] - cbnz w0, G_M55237_IG89 - 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 - ; gcrRegs -[x24] - ; byrRegs -[x22] - ; gcr arg pop 0 - ;; size=80 bbWeight=0.50 PerfScore 11.00 -G_M55237_IG89: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stlr wzr, [x19] uxtb w0, w21 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG91: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x80] ldp x25, x26, [sp, #0x70] ldp x23, x24, [sp, #0x60] @@ -1043,7 +1040,7 @@ G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x90 ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] ; byrRegs -[x19] mov x0, x19 @@ -1057,7 +1054,7 @@ G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -1097,7 +1094,7 @@ G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] ; gcr arg pop 0 ;; size=88 bbWeight=0 PerfScore 0.00
-G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M55237_IG94: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x19] ; byrRegs +[x22] mov w0, #4 @@ -1108,7 +1105,7 @@ G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; byrRegs +[x23] ...

+4 (+0.24%) : 12608.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan1[ushort],System.ReadOnlyMemory1[ubyte]):this (Tier0-FullOpts)

@@ -583,12 +583,12 @@ G_M6729_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M6729_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x28] // [V06 loc3] ; gcrRegs +[x0]
- cbz x0, G_M6729_IG37
+ cbz x0, G_M6729_IG39
mov w19, wzr ldr w0, [fp, #0x40] // [V10 loc7] ; gcrRegs -[x0] cmp w0, #0
- ble G_M6729_IG34
+ ble G_M6729_IG37
ldr x0, [fp, #0x28] // [V06 loc3] ; gcrRegs +[x0] ldr w20, [x0, #0x08] @@ -596,7 +596,7 @@ G_M6729_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M6729_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] cmp w19, w20
- bhs G_M6729_IG35
+ bhs G_M6729_IG33
ldr x0, [fp, #0x28] // [V06 loc3] ; gcrRegs +[x0] ubfiz x1, x19, #6, #32 @@ -608,17 +608,30 @@ G_M6729_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x1, xzr swpal x1, x21, [x0] ; gcrRegs +[x21]
- cbz x21, G_M6729_IG33
+ cbz x21, G_M6729_IG36
;; size=40 bbWeight=8 PerfScore 104.00 G_M6729_IG31: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0001 {x0}, byref, isz ldr w1, [x0, #0x08] lsr w22, w1, #31
- cbnz w22, G_M6729_IG32 - cbz w1, G_M6729_IG32
+ cbnz w22, G_M6729_IG35 + cbz w1, G_M6729_IG35
ldr w0, [x21, #0x08] ; byrRegs -[x0] cmp w0, w1
- blo G_M6729_IG36
+ bhs G_M6729_IG34 + ;; size=28 bbWeight=4 PerfScore 42.00 +G_M6729_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x21] + ; GC ptr vars -{V06} + b G_M6729_IG38 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M6729_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M6729_IG34: ; bbWeight=4, gcVars=0000000000000080 {V06}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21] + ; GC ptr vars +{V06 V07}
add x0, x21, #16 ; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -628,8 +641,8 @@ G_M6729_IG31: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0001 {x0}, blr x2 ; byrRegs -[x0] ; gcr arg pop 0
- ;; size=52 bbWeight=4 PerfScore 66.00 -G_M6729_IG32: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=4 PerfScore 24.00 +G_M6729_IG35: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
movz x23, #0xD1FFAB1E movk x23, #0xD1FFAB1E LSL #16 movk x23, #0xD1FFAB1E LSL #32 @@ -646,13 +659,13 @@ G_M6729_IG32: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, by ; gcrRegs -[x0-x1 x21] ; gcr arg pop 0 ;; size=44 bbWeight=4 PerfScore 44.00
-G_M6729_IG33: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6729_IG36: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w19, w19, #1 ldr w0, [fp, #0x40] // [V10 loc7] cmp w19, w0 blt G_M6729_IG30 ;; size=16 bbWeight=8 PerfScore 32.00
-G_M6729_IG34: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #0xD1FFAB1E LSL #32 @@ -673,17 +686,13 @@ G_M6729_IG34: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] ldr wzr, [x0]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V06 V07}
blr x3 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- b G_M6729_IG37
+ b G_M6729_IG39
;; size=76 bbWeight=1 PerfScore 20.00
-G_M6729_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M6729_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG38: ; 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 @@ -692,7 +701,7 @@ G_M6729_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #0xD1FFAB1E LSL #32 @@ -751,7 +760,7 @@ G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=168 bbWeight=1 PerfScore 51.00
-G_M6729_IG38: ; bbWeight=1, funclet epilog, nogc, extend
+G_M6729_IG40: ; bbWeight=1, funclet epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] @@ -760,7 +769,7 @@ G_M6729_IG38: ; bbWeight=1, funclet epilog, nogc, extend ret lr ;; size=24 bbWeight=1 PerfScore 12.50
-Total bytes of code 1700, prolog size 68, PerfScore 734.50, instruction count 425, allocated bytes for code 1700 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
+Total bytes of code 1704, prolog size 68, PerfScore 734.50, instruction count 426, allocated bytes for code 1704 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -815,7 +824,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
+ Function Length : 167 (0x000a7) Actual length = 668 (0x00029c)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+20 (+3.91%) : 48292.dasm - System.String:Concat(System.String[]):System.String (Tier1)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -33,10 +33,10 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value" ; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG23 - cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25 + cbz w21, G_M46295_IG19
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG17 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG14 - cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16 + cbnz x23, G_M46295_IG12
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08] sub w0, w0, w24 cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12 ; byrRegs +[x2] sbfiz x0, x24, #1, #32 @@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================ Unwind Info: @@ -266,7 +277,7 @@ Unwind Info: E bit : 0 ...

coreclr_tests.run.linux.arm64.checked.mch

-12 (-3.19%) : 254388.dasm - System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)

@@ -35,8 +35,8 @@ ;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x8)" P-INDEP ;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref "field V19.key (fldOffset=0x0)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V19.value (fldOffset=0x8)" P-INDEP
-; V26 tmp22 [V26,T02] ( 5, 7.03) ref -> x20 single-def "V01.[000..008)" -; V27 tmp23 [V27,T13] ( 3, 3.44) int -> x21 "V01.[008..012)"
+; V26 tmp22 [V26,T02] ( 4, 7.03) ref -> x20 single-def "V01.[000..008)" +; V27 tmp23 [V27,T13] ( 2, 3.44) int -> x21 "V01.[008..012)"
; V28 tmp24 [V28,T00] ( 4, 5.73) int -> registers "V01.[012..016)" ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "V01.[016..020)" ; V30 tmp26 [V30,T11] ( 4, 1.14) ref -> x23 "V01.[024..032)" @@ -65,7 +65,7 @@ G_M2401_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M2401_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x20] ; gcrRegs +[x20]
- cbz x20, G_M2401_IG10
+ cbz x20, G_M2401_IG09
ldr w21, [x20, #0x44] mov w22, wzr b G_M2401_IG04 @@ -73,29 +73,27 @@ G_M2401_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr G_M2401_IG03: ; bbWeight=1.44, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x23] cmp w0, #2
- bgt G_M2401_IG11
+ bgt G_M2401_IG10
;; size=8 bbWeight=1.44 PerfScore 2.17 G_M2401_IG04: ; bbWeight=2.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x23] ldr w0, [x20, #0x44] cmp w21, w0
- bne G_M2401_IG08 - ;; size=12 bbWeight=2.44 PerfScore 11.00 -G_M2401_IG05: ; bbWeight=2.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ bne G_M2401_IG07
ldr w0, [x20, #0x38]
- ;; size=4 bbWeight=2.44 PerfScore 7.33 -G_M2401_IG06: ; bbWeight=2.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=2.44 PerfScore 18.33 +G_M2401_IG05: ; bbWeight=2.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w22, w0
- bhs G_M2401_IG10
+ bhs G_M2401_IG09
;; size=8 bbWeight=2.44 PerfScore 3.67
-G_M2401_IG07: ; bbWeight=1.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M2401_IG06: ; bbWeight=1.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x20, #0x10] ; gcrRegs +[x1] add w2, w22, #1 sxtw w23, w2 ldr w2, [x1, #0x08] cmp w22, w2
- bhs G_M2401_IG09
+ bhs G_M2401_IG08
mov w2, #24 mov x3, #16 umaddl x2, w22, w2, x3 @@ -105,13 +103,13 @@ G_M2401_IG07: ; bbWeight=1.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr w2, [x1, #0x0C] cmn w2, #1 mov w22, w23
- blt G_M2401_IG06
+ blt G_M2401_IG05
ldr x23, [x1] ; gcrRegs +[x23] ldr w0, [x1, #0x10] b G_M2401_IG03 ;; size=68 bbWeight=1.14 PerfScore 30.80
-G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20 x23] ; byrRegs -[x1] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() @@ -122,18 +120,18 @@ G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M2401_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M2401_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M2401_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x40 ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-G_M2401_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M2401_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20 x23] ldr x0, [x19, #0x40] ; gcrRegs +[x0] @@ -154,10 +152,10 @@ G_M2401_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=980000 cbz w0, G_M2401_IG04 ldr x2, [x19, #0x30] ; gcrRegs +[x2]
- cbnz x2, G_M2401_IG12
+ cbnz x2, G_M2401_IG11
ldr x2, [x19, #0x38] ;; size=56 bbWeight=0 PerfScore 0.00
-G_M2401_IG12: ; bbWeight=0, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+G_M2401_IG11: ; bbWeight=0, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
mov x0, x19 ; gcrRegs +[x0] mov x1, x23 @@ -202,13 +200,10 @@ G_M2401_IG12: ; bbWeight=0, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs= blr x3 ; gcrRegs -[x0-x2 x23-x24] ; gcr arg pop 0
- ldr w0, [x20, #0x44] - cmp w21, w0 - beq G_M2401_IG05 - b G_M2401_IG08 - ;; size=128 bbWeight=0 PerfScore 0.00
+ b G_M2401_IG04 + ;; size=116 bbWeight=0 PerfScore 0.00
-Total bytes of code 376, prolog size 24, PerfScore 68.47, instruction count 94, allocated bytes for code 376 (MethodHash=9d11f69e) for method System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
+Total bytes of code 364, prolog size 24, PerfScore 68.47, instruction count 91, allocated bytes for code 364 (MethodHash=9d11f69e) for method System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
; ============================================================ Unwind Info: @@ -219,7 +214,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
+ 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)

-8 (-2.22%) : 314183.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)

@@ -38,12 +38,12 @@ G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp w20, w21, [fp, #0x58] ;; size=36 bbWeight=1 PerfScore 12.50 G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG11
+ b G_M3612_IG09
;; size=4 bbWeight=1 PerfScore 1.00 G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] cmp w23, w0
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x19, #16 ; byrRegs +[x0] ldr x22, [x0, w23, UXTW #3] @@ -59,12 +59,12 @@ G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 G_M3612_IG05: ; bbWeight=10.61, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x10] cmp w20, w0
- bhs G_M3612_IG18
+ bhs G_M3612_IG17
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w20, w1
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -96,28 +96,15 @@ G_M3612_IG06: ; bbWeight=1.05, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x10] sub w21, w0, #2
- tbz w21, #31, G_M3612_IG10
+ tbnz w21, #31, G_M3612_IG13
;; size=12 bbWeight=0.52 PerfScore 2.35
-G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] - add w23, w23, #1 - ldr w0, [x19, #0x08] - cmp w0, w23 - ble G_M3612_IG16 - b G_M3612_IG03 - ;; size=20 bbWeight=0.52 PerfScore 3.14 -G_M3612_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr wzr, [x19, #0x08] - b G_M3612_IG08 - ;; size=8 bbWeight=0.50 PerfScore 1.99 -G_M3612_IG10: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x22]
+G_M3612_IG08: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
sub w20, w21, #1 ;; size=4 bbWeight=9.77 PerfScore 4.89
-G_M3612_IG11: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - tbnz w20, #31, G_M3612_IG13
+G_M3612_IG09: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + tbnz w20, #31, G_M3612_IG11
;; size=4 bbWeight=9.77 PerfScore 9.77
-G_M3612_IG12: ; bbWeight=90.23, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG10: ; bbWeight=90.23, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22 ; gcrRegs +[x0] mov w1, w20 @@ -129,24 +116,31 @@ G_M3612_IG12: ; bbWeight=90.23, gcrefRegs=480000 {x19 x22}, byrefRegs=000 blr x3 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M3612_IG17
+ cbnz w0, G_M3612_IG16
sub w20, w20, #1
- tbz w20, #31, G_M3612_IG12
+ tbz w20, #31, G_M3612_IG10
;; size=44 bbWeight=90.23 PerfScore 857.17
-G_M3612_IG13: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG11: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1
- tbz w21, #31, G_M3612_IG10
+ tbz w21, #31, G_M3612_IG08
;; size=8 bbWeight=9.77 PerfScore 14.66
-G_M3612_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3612_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M3612_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr wzr, [x19, #0x08] + ;; size=4 bbWeight=0.50 PerfScore 1.49 +G_M3612_IG13: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + add w23, w23, #1 + ldr w0, [x19, #0x08] + cmp w0, w23 + ble G_M3612_IG15 + b G_M3612_IG03 + ;; size=20 bbWeight=0.52 PerfScore 3.14 +G_M3612_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -154,7 +148,7 @@ G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add sp, sp, #64 ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M3612_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x22] mov x0, x22 ; gcrRegs +[x0] @@ -167,9 +161,9 @@ G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M3612_IG13
+ b G_M3612_IG11
;; size=36 bbWeight=0 PerfScore 0.00
-G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3612_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x22] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -180,7 +174,7 @@ G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 360, prolog size 36, PerfScore 1274.91, instruction count 90, allocated bytes for code 360 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
+Total bytes of code 352, prolog size 36, PerfScore 1273.92, instruction count 88, allocated bytes for code 352 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -191,7 +185,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-1.72%) : 412421.dasm - System.CommandLine.CliSymbol:ThrowIfEmptyOrWithWhitespaces(System.String,System.String,ubyte):System.String (Tier1)

@@ -12,7 +12,7 @@ ; V00 arg0 [V00,T05] ( 7, 6 ) ref -> x19 class-hnd single-def <System.String> ; V01 arg1 [V01,T09] ( 3, 2 ) ref -> x21 class-hnd single-def <System.String> ; V02 arg2 [V02,T08] ( 3, 3 ) ubyte -> x20 single-def
-; V03 loc0 [V03,T01] ( 5, 26.52) int -> x25
+; V03 loc0 [V03,T01] ( 5, 26.52) int -> x22
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T12] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>> ; V06 tmp2 [V06,T13] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -67,27 +67,26 @@ ; V55 cse0 [V55,T03] ( 4, 9.48) int -> x23 "CSE - aggressive" ; V56 cse1 [V56,T04] ( 3, 8.48) byref -> x24 hoist "CSE - aggressive" ;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M38453_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov x21, x1 ; gcrRegs +[x21] mov w20, w2
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.00
G_M38453_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M38453_IG15
+ cbz x19, G_M38453_IG14
mov w22, wzr ldr w23, [x19, #0x08] cmp w23, #0
- ble G_M38453_IG15
+ ble G_M38453_IG14
add x24, x19, #12 ; byrRegs +[x24] ;; size=24 bbWeight=1 PerfScore 6.50 @@ -101,8 +100,8 @@ G_M38453_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbz w0, G_M38453_IG07 - b G_M38453_IG05
+ cbnz w0, G_M38453_IG05 + b G_M38453_IG07
;; size=40 bbWeight=1 PerfScore 12.00 G_M38453_IG04: ; bbWeight=1.00, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz movz x1, #0xD1FFAB1E @@ -119,58 +118,94 @@ G_M38453_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 G_M38453_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19 x21] ; byrRegs -[x24]
- b G_M38453_IG15
+ b G_M38453_IG14
;; size=4 bbWeight=1.00 PerfScore 1.00 G_M38453_IG07: ; bbWeight=1.00, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz ; gcrRegs +[x19 x21] ; byrRegs +[x24] tst w20, #255
- bne G_M38453_IG12
+ bne G_M38453_IG11
;; size=8 bbWeight=1.00 PerfScore 1.50 G_M38453_IG08: ; bbWeight=0.60, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
- mov w25, wzr
+ mov w22, wzr
;; size=4 bbWeight=0.60 PerfScore 0.30 G_M38453_IG09: ; bbWeight=6.48, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
- ldrh w0, [x24, w25, UXTW #2]
+ ldrh w0, [x24, w22, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M38453_IG10
+ blo G_M38453_IG13
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbnz w0, G_M38453_IG14 - b G_M38453_IG11 - ;; size=40 bbWeight=6.48 PerfScore 77.76
+ cbnz w0, G_M38453_IG15 + ;; size=36 bbWeight=6.48 PerfScore 71.28
G_M38453_IG10: ; bbWeight=6.48, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldrb w0, [x1, w0, UXTW #2] - tbnz w0, #7, G_M38453_IG14 - ;; size=20 bbWeight=6.48 PerfScore 35.64 -G_M38453_IG11: ; bbWeight=6.48, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz - add w25, w25, #1 - cmp w23, w25
+ add w22, w22, #1 + cmp w23, w22
bgt G_M38453_IG09 ;; size=12 bbWeight=6.48 PerfScore 12.96
-G_M38453_IG12: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M38453_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] ; byrRegs -[x24] mov x0, x19 ; gcrRegs +[x0] ;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M38453_IG13: ; bbWeight=1.00, epilog, nogc, extend - ldr x25, [sp, #0x48] - ldp x23, x24, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x50
+G_M38453_IG12: ; bbWeight=1.00, epilog, nogc, extend + ldp x23, x24, [sp, #0x30] + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=24 bbWeight=1.00 PerfScore 7.00 -G_M38453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1.00 PerfScore 5.00 +G_M38453_IG13: ; bbWeight=6.48, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, gcvars, byref, isz
; gcrRegs -[x0] +[x21]
+ ; byrRegs +[x24] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldrb w0, [x1, w0, UXTW #2] + tbnz w0, #7, G_M38453_IG15 + b G_M38453_IG10 + ;; size=24 bbWeight=6.48 PerfScore 42.12 +G_M38453_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19 x21] + ; byrRegs -[x24] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + mov w0, #0xD1FFAB1E + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_STRCNS + ; gcrRegs +[x0] + ; gcr arg pop 0 + mov x1, x0 + ; gcrRegs +[x1] + mov x0, x19 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0-x1] + ; gcr arg pop 0 + mov x0, x19 + ; gcrRegs +[x0] + bl CORINFO_HELP_THROW + ; gcrRegs -[x0 x19] + ; gcr arg pop 0 + ;; size=76 bbWeight=0 PerfScore 0.00 +G_M38453_IG15: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19 x21]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -225,55 +260,22 @@ G_M38453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 ; gcrRegs +[x0] bl CORINFO_HELP_THROW ; gcrRegs -[x0 x20]
- ; gcr arg pop 0 - ;; size=136 bbWeight=0 PerfScore 0.00 -G_M38453_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - mov w0, #0xD1FFAB1E - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_STRCNS - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x1, x0 - ; gcrRegs +[x1] - mov x0, x19 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - mov x0, x19 - ; gcrRegs +[x0] - bl CORINFO_HELP_THROW - ; gcrRegs -[x0 x19]
; gcr arg pop 0 brk_unix #0
- ;; size=80 bbWeight=0 PerfScore 0.00
+ ;; size=140 bbWeight=0 PerfScore 0.00
-Total bytes of code 464, prolog size 36, PerfScore 169.66, instruction count 116, allocated bytes for code 464 (MethodHash=480369ca) for method System.CommandLine.CliSymbol:ThrowIfEmptyOrWithWhitespaces(System.String,System.String,ubyte):System.String (Tier1)
+Total bytes of code 456, prolog size 32, PerfScore 166.66, instruction count 114, allocated bytes for code 456 (MethodHash=480369ca) for method System.CommandLine.CliSymbol:ThrowIfEmptyOrWithWhitespaces(System.String,System.String,ubyte):System.String (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 116 (0x00074) Actual length = 464 (0x0001d0)
+ Function Length : 114 (0x00072) Actual length = 456 (0x0001c8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -281,13 +283,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 89 save_reg X#6 Z#9 (0x09); str x25, [sp, #72]
E6 save_next E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end - E4 end
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
...

+8 (+5.26%) : 309832.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)

@@ -69,43 +69,49 @@ G_M44603_IG05: ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbz w0, G_M44603_IG10
+ cbnz w0, G_M44603_IG10
;; size=24 bbWeight=0.36 PerfScore 2.36
-G_M44603_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - add w20, w20, #1 - cmp w21, w20 - bgt G_M44603_IG04 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M44603_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44603_IG06: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ b G_M44603_IG12 + ;; size=4 bbWeight=0.35 PerfScore 0.35 +G_M44603_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- ;; size=4 bbWeight=0.64 PerfScore 0.32 -G_M44603_IG08: ; bbWeight=0.64, epilog, nogc, extend
+ ;; size=4 bbWeight=0.02 PerfScore 0.01 +G_M44603_IG08: ; bbWeight=0.02, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.64 PerfScore 3.18
+ ;; size=16 bbWeight=0.02 PerfScore 0.08
G_M44603_IG09: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M44603_IG06
+ tbz w0, #7, G_M44603_IG12
;; size=20 bbWeight=0.36 PerfScore 2.00
-G_M44603_IG10: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44603_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + add w20, w20, #1 + cmp w21, w20 + bgt G_M44603_IG04 + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M44603_IG11: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ b G_M44603_IG07 + ;; size=4 bbWeight=0.64 PerfScore 0.64 +G_M44603_IG12: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr ;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M44603_IG11: ; bbWeight=0.36, epilog, nogc, extend
+G_M44603_IG13: ; bbWeight=0.36, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.36 PerfScore 1.82
-Total bytes of code 152, prolog size 20, PerfScore 26.52, instruction count 38, allocated bytes for code 152 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 160, prolog size 20, PerfScore 24.08, instruction count 40, allocated bytes for code 160 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -116,7 +122,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+36.36%) : 489126.dasm - JIT.HardwareIntrinsics.General.Vector1281.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)

@@ -8,46 +8,59 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 16
-G_M36530_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36530_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp str w1, [fp, #0x1C] // [V01 arg1] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M36530_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36530_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01] - mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq - cinc w0, wzr, eq - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M36530_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M36530_IG05 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M36530_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [fp, #0x1D] // [V01 arg1+0x01] + cmp w0, #255 + bne G_M36530_IG05 + mov w0, #1 + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M36530_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M36530_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M36530_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=46ff714d) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=46ff714d) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ 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) Epilog Start Index : 1 (0x01)
+ ---- Scope 1 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

+16 (+36.36%) : 489154.dasm - JIT.HardwareIntrinsics.General.Vector1281.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)

@@ -8,46 +8,59 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetUInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 16
-G_M62610_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M62610_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp str w1, [fp, #0x1C] // [V01 arg1] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M62610_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62610_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01] - mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq - cinc w0, wzr, eq - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M62610_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M62610_IG05 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M62610_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [fp, #0x1D] // [V01 arg1+0x01] + cmp w0, #255 + bne G_M62610_IG05 + mov w0, #1 + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M62610_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M62610_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M62610_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=4c4b0b6d) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=4c4b0b6d) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ 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) Epilog Start Index : 1 (0x01)
+ ---- Scope 1 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

libraries.crossgen2.linux.arm64.checked.mch

+0 (0.00%) : 1845.dasm - Program:Main(System.String[]):int (FullOpts)

@@ -1587,7 +1587,7 @@ G_M58511_IG17: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, mov w23, wzr ;; size=164 bbWeight=1 PerfScore 47.00 G_M58511_IG18: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M58511_IG26
+ b G_M58511_IG35
;; size=4 bbWeight=1 PerfScore 1.00 G_M58511_IG19: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr w11, [x19, #0x08] @@ -1697,38 +1697,12 @@ G_M58511_IG25: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg ldr w0, [fp, #0xD1FFAB1E] // [V11 loc10] ldr w11, [fp, #0xD1FFAB1E] // [V03 loc2] cmp w0, w11
- bne G_M58511_IG27 - mov x0, x22 - ; gcrRegs +[x0] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - mov x11, #0xD1FFAB1E - cmp x0, x11 - bgt G_M58511_IG35 - mov w0, #5 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcr arg pop 0 - ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14] - add w0, w0, #1 - str w0, [fp, #0xD1FFAB1E] // [V15 loc14] - ;; size=80 bbWeight=4 PerfScore 88.00 -G_M58511_IG26: ; bbWeight=8, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr w11, [fp, #0xD1FFAB1E] // [V15 loc14] - cmp w11, #40 - bge G_M58511_IG48 - b G_M58511_IG19 - ;; size=16 bbWeight=8 PerfScore 36.00 -G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ beq G_M58511_IG34 + ;; size=16 bbWeight=4 PerfScore 22.00 +G_M58511_IG26: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14] cmp w0, #2
- bge G_M58511_IG30
+ bge G_M58511_IG36
stp xzr, xzr, [fp, #0x30] stp xzr, xzr, [fp, #0x40] str xzr, [fp, #0x50] @@ -1741,13 +1715,13 @@ G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg blr x3 ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 13.00
-G_M58511_IG28: ; bbWeight=1, nogc, extend
+G_M58511_IG27: ; bbWeight=1, nogc, extend
ldp q16, q17, [fp, #0x30] stp q16, q17, [fp, #0xD1FFAB1E] ldr x0, [fp, #0x50] str x0, [fp, #0xD1FFAB1E] ;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG29: ; bbWeight=1, extend
+G_M58511_IG28: ; bbWeight=1, extend
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] @@ -1813,535 +1787,18 @@ G_M58511_IG29: ; bbWeight=1, extend ; gcr arg pop 0 ldr w0, [fp, #0xD1FFAB1E] // [V03 loc2] str w0, [fp, #0xD1FFAB1E] // [V11 loc10]
- b G_M58511_IG34 - ;; size=204 bbWeight=1 PerfScore 67.00 -G_M58511_IG30: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - stp xzr, xzr, [fp, #0x58] - stp xzr, xzr, [fp, #0x68] - str xzr, [fp, #0x78] - add x0, fp, #88 // [V55 tmp28] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - mov w1, #53 - mov w2, #3 - ldr x3, [x11] - blr x3 - ; gcr arg pop 0 - ;; size=40 bbWeight=1 PerfScore 9.50 -G_M58511_IG31: ; bbWeight=1, nogc, extend - sub x0, fp, #200 - ldp q16, q17, [x0, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E] - ldr x1, [x0, #0xD1FFAB1E] - str x1, [fp, #0xD1FFAB1E] - ;; size=20 bbWeight=1 PerfScore 8.50 -G_M58511_IG32: ; bbWeight=1, extend - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V11 loc10] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V03 loc2] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=216 bbWeight=1 PerfScore 72.50 -G_M58511_IG33: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs +[x0] - ; gcr arg pop 0 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ;; size=36 bbWeight=1 PerfScore 10.50 -G_M58511_IG34: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=200 bbWeight=1 PerfScore 66.00 +G_M58511_IG29: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov w23, #1
- b G_M58511_IG48 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M58511_IG35: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - stp xzr, xzr, [fp, #0x80] - stp xzr, xzr, [fp, #0x90] - str xzr, [fp, #0xA0] - add x0, fp, #128 // [V54 tmp27] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - mov w1, #72 - mov w2, #2 - ldr x3, [x11] - blr x3 - ; gcr arg pop 0 - ;; size=40 bbWeight=1 PerfScore 9.50 -G_M58511_IG36: ; bbWeight=1, nogc, extend - ldp q16, q17, [fp, #0x80] - stp q16, q17, [fp, #0xD1FFAB1E] - ldr x0, [fp, #0xA0] - str x0, [fp, #0xD1FFAB1E] - ;; size=16 bbWeight=1 PerfScore 6.00 -G_M58511_IG37: ; bbWeight=1, isz, extend - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - mov x0, x22 - ; gcrRegs +[x0] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14] - add w1, w1, #1 - sxtw x1, w1 - cmp x1, #0 - beq G_M58511_IG40 - cmn x1, #1 - bne G_M58511_IG38 - cmp x0, #1 - bvs G_M58511_IG39 - ;; size=92 bbWeight=1 PerfScore 25.50 -G_M58511_IG38: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - sdiv x1, x0, x1 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24]
...

libraries.pmi.linux.arm64.checked.mch

-40 (-27.03%) : 141023.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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 (-1.49%) : 120865.dasm - Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T12] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.Diagnostics.Tracing.Stacks.StackSource> ; V01 loc0 [V01,T06] ( 7, 7 ) ref -> x20 class-hnd exact single-def <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+<>c__DisplayClass0_0>
-; V02 loc1 [V02 ] ( 7, 13 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
+; V02 loc1 [V02 ] ( 7, 13 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
; V03 loc2 [V03,T01] ( 5, 18 ) ref -> x24 class-hnd <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]> ;# 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 "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+<>c__DisplayClass0_0> @@ -27,12 +27,12 @@ ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]> ; V17 tmp13 [V17,T17] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.__Canon]> ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]>
-; V19 tmp15 [V19,T02] ( 4, 16 ) ref -> x25 class-hnd exact "Inlining Arg" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample[]>
+; V19 tmp15 [V19,T02] ( 4, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample[]>
; V20 tmp16 [V20,T03] ( 3, 12 ) int -> x1 "Inlining Arg"
-; V21 tmp17 [V21 ] ( 3, 6 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V02._dictionary (fldOffset=0x0)" P-DEP -; V22 tmp18 [V22 ] ( 4, 10 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._currentValue (fldOffset=0x8)" P-DEP -; V23 tmp19 [V23 ] ( 3, 6 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP -; V24 tmp20 [V24 ] ( 3, 6 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._version (fldOffset=0x14)" P-DEP
+; V21 tmp17 [V21 ] ( 3, 6 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._dictionary (fldOffset=0x0)" P-DEP +; V22 tmp18 [V22 ] ( 4, 10 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._currentValue (fldOffset=0x8)" P-DEP +; V23 tmp19 [V23 ] ( 3, 6 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP +; V24 tmp20 [V24 ] ( 3, 6 ) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V02._version (fldOffset=0x14)" P-DEP
; V25 tmp21 [V25,T21] ( 3, 3 ) ref -> x0 single-def "field V16._dictionary (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26,T23] ( 0, 0 ) ref -> zero-ref single-def "field V16._currentValue (fldOffset=0x8)" P-INDEP ;* V27 tmp23 [V27,T24] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x10)" P-INDEP @@ -45,20 +45,19 @@ ; V34 cse3 [V34,T11] ( 3, 6 ) long -> x19 "CSE - aggressive" ; V35 cse4 [V35,T08] ( 4, 6 ) long -> x21 hoist multi-def "CSE - aggressive" ;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M39455_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V02 loc1], [V02 loc1+0x08] - str xzr, [fp, #0x20] // [V02 loc1+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V02 loc1], [V02 loc1+0x08] + str xzr, [fp, #0x28] // [V02 loc1+0x10]
mov x19, x0 ; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M39455_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -156,9 +155,9 @@ G_M39455_IG04: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} ; gcrRegs +[x0] ldr w1, [x0, #0x44] ; gcrRegs -[x1]
- stp x0, xzr, [fp, #0x10] // [V21 tmp17], [V22 tmp18] - stp wzr, w1, [fp, #0x20] // [V23 tmp19], [V24 tmp20] - add x0, fp, #16 // [V02 loc1]
+ stp x0, xzr, [fp, #0x18] // [V21 tmp17], [V22 tmp18] + stp wzr, w1, [fp, #0x28] // [V23 tmp19], [V24 tmp20] + add x0, fp, #24 // [V02 loc1]
; gcrRegs -[x0] movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 @@ -181,7 +180,7 @@ G_M39455_IG04: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} movk x23, #0xD1FFAB1E LSL #32 ;; size=96 bbWeight=1 PerfScore 21.50 G_M39455_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x24, [fp, #0x18] // [V22 tmp18]
+ ldr x24, [fp, #0x20] // [V22 tmp18]
; gcrRegs +[x24] add x0, x21, #0xD1FFAB1E bl CORINFO_HELP_NEWSFAST @@ -201,27 +200,28 @@ G_M39455_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ble G_M39455_IG07 ;; size=44 bbWeight=4 PerfScore 46.00 G_M39455_IG06: ; bbWeight=2, gcrefRegs=1100004 {x2 x20 x24}, byrefRegs=0000 {}, byref, isz
- ldr x25, [x24, #0x08] - ; gcrRegs +[x25] - cbz x25, G_M39455_IG10 - ldr w0, [x25, #0x08] - cmp w0, w1
+ ldr x0, [x24, #0x08] + ; gcrRegs +[x0] + cbz x0, G_M39455_IG10 + ldr w3, [x0, #0x08] + cmp w3, w1
blo G_M39455_IG10
- add x0, x25, #16
+ add x0, x0, #16 + ; gcrRegs -[x0]
; byrRegs +[x0] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x2 x25]
+ ; gcrRegs -[x2]
; byrRegs -[x0] ;; size=44 bbWeight=2 PerfScore 29.00 G_M39455_IG07: ; bbWeight=4, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz ldr w0, [x24, #0x14] add w0, w0, #1 str w0, [x24, #0x14]
- add x0, fp, #16 // [V02 loc1]
+ add x0, fp, #24 // [V02 loc1]
mov x1, x19 movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -236,13 +236,12 @@ G_M39455_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 3.00 G_M39455_IG09: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28]
+ ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M39455_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0 x20] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() @@ -253,18 +252,18 @@ G_M39455_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 536, prolog size 32, PerfScore 210.25, instruction count 134, allocated bytes for code 536 (MethodHash=171665e0) for method Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
+Total bytes of code 528, prolog size 28, PerfScore 207.25, instruction count 132, allocated bytes for code 528 (MethodHash=171665e0) for method Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 134 (0x00086) Actual length = 536 (0x000218)
+ Function Length : 132 (0x00084) Actual length = 528 (0x000210)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -272,13 +271,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 8B save_reg X#6 Z#11 (0x0B); str x25, [sp, #88]
E6 save_next E6 save_next
- C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]! E4 end E4 end
- E4 end - E4 end

-8 (-1.05%) : 166587.dasm - System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)

@@ -26,7 +26,7 @@ ; V15 tmp1 [V15,T10] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" ; V16 tmp2 [V16,T18] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" ; V17 tmp3 [V17,T05] ( 5, 27 ) ref -> x24 class-hnd "spilling QMark2" <System.ComponentModel.PropertyDescriptor>
-; V18 tmp4 [V18,T21] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.PropertyDescriptorCollection>
+; V18 tmp4 [V18,T21] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.PropertyDescriptorCollection>
; V19 tmp5 [V19,T00] ( 3, 96 ) ref -> [fp+0x10] spill-single-def "argument with side effect" ; V20 tmp6 [V20,T03] ( 2, 64 ) ref -> x1 "argument with side effect" ; V21 PSPSym [V21,T24] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" @@ -100,25 +100,20 @@ G_M28628_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180 blr x1 ; gcrRegs -[x20] ; gcr arg pop 0
- mov x1, x0 - ; gcrRegs +[x1] - str x1, [fp, #0x20] // [V06 loc4]
+ str x0, [fp, #0x20] // [V06 loc4]
; GC ptr vars +{V06}
- ;; size=56 bbWeight=0.50 PerfScore 9.25 -G_M28628_IG07: ; bbWeight=0.50, gcVars=0000000000004000 {V06}, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0] - mov x0, x1 - ; gcrRegs +[x0]
+ ;; size=52 bbWeight=0.50 PerfScore 9.00 +G_M28628_IG07: ; bbWeight=0.50, gcVars=0000000000004000 {V06}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #0xD1FFAB1E LSL #32 mov x11, x20
- ldr x2, [x11] - blr x2 - ; gcrRegs -[x0-x1]
+ ldr x1, [x11] + blr x1 + ; gcrRegs -[x0]
; gcr arg pop 0 cbz w0, G_M28628_IG22
- ;; size=32 bbWeight=0.50 PerfScore 3.75
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
G_M28628_IG08: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x20] // [V06 loc4] ; gcrRegs +[x0] @@ -154,7 +149,7 @@ G_M28628_IG11: ; bbWeight=4, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0 ; gcrRegs -[x0] mov w25, wzr cmp w21, #0
- ble G_M28628_IG18
+ ble G_M28628_IG21
;; size=12 bbWeight=4 PerfScore 8.00 G_M28628_IG12: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref add x26, x19, #16 @@ -201,12 +196,12 @@ G_M28628_IG14: ; bbWeight=8, gcVars=0000000000004004 {V06 V12}, gcrefRegs blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M28628_IG19
+ cbz w0, G_M28628_IG17
;; size=24 bbWeight=8 PerfScore 92.00 G_M28628_IG15: ; bbWeight=16, gcrefRegs=11480000 {x19 x22 x24 x28}, byrefRegs=4000000 {x26}, byref, isz ldr x1, [fp, #0x18] // [V12 loc10] ; gcrRegs +[x1]
- cbz x1, G_M28628_IG17
+ cbz x1, G_M28628_IG20
;; size=8 bbWeight=16 PerfScore 48.00 G_M28628_IG16: ; bbWeight=8, gcrefRegs=11480002 {x1 x19 x22 x24 x28}, byrefRegs=4000000 {x26}, byref, isz mov x0, x1 @@ -220,29 +215,11 @@ G_M28628_IG16: ; bbWeight=8, gcrefRegs=11480002 {x1 x19 x22 x24 x28}, byr blr x2 ; gcrRegs -[x0-x1 x28] ; gcr arg pop 0
- cbz w0, G_M28628_IG19
+ cbnz w0, G_M28628_IG20
;; size=32 bbWeight=8 PerfScore 112.00
-G_M28628_IG17: ; bbWeight=16, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=4000000 {x26}, byref, isz - add w25, w25, #1 - cmp w21, w25 - bgt G_M28628_IG13 - ;; size=12 bbWeight=16 PerfScore 32.00 -G_M28628_IG18: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
+G_M28628_IG17: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x24]
; byrRegs -[x26]
- ldr w14, [x22, #0x08] - cmp w23, w14 - bhs G_M28628_IG21 - add x14, x22, #16 - ; byrRegs +[x14] - add x14, x14, x23, LSL #3 - mov x15, x24 - ; gcrRegs +[x15] - bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x15 x24] - ; byrRegs -[x14] - add w23, w23, #1 - ;; size=32 bbWeight=2 PerfScore 16.00 -G_M28628_IG19: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x20] // [V06 loc4] ; gcrRegs +[x0] mov x11, x20 @@ -252,18 +229,40 @@ G_M28628_IG19: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 { ; gcr arg pop 0 cbnz w0, G_M28628_IG08 ;; size=20 bbWeight=4 PerfScore 30.00
-G_M28628_IG20: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M28628_IG18: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] b G_M28628_IG22 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28628_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28628_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0
- brk_unix #0 - ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00 +G_M28628_IG20: ; bbWeight=16, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=4000000 {x26}, byref, isz + ; gcrRegs +[x19 x22 x24] + ; byrRegs +[x26] + add w25, w25, #1 + cmp w21, w25 + bgt G_M28628_IG13 + ;; size=12 bbWeight=16 PerfScore 32.00 +G_M28628_IG21: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x26] + ldr w14, [x22, #0x08] + cmp w23, w14 + bhs G_M28628_IG19 + add x14, x22, #16 + ; byrRegs +[x14] + add x14, x14, x23, LSL #3 + mov x15, x24 + ; gcrRegs +[x15] + bl CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[x15 x24] + ; byrRegs -[x14] + add w23, w23, #1 + b G_M28628_IG17 + ;; size=36 bbWeight=2 PerfScore 18.00
G_M28628_IG22: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x22]
+ ; gcrRegs -[x19]
ldr x1, [fp, #0x20] // [V06 loc4] ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -307,8 +306,8 @@ G_M28628_IG23: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {} bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x22, x0 - ; gcrRegs +[x22]
+ mov x19, x0 + ; gcrRegs +[x19]
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.ComponentModel.PropertyDescriptorCollection:.ctor(System.ComponentModel.PropertyDescriptor[]):this @@ -318,7 +317,7 @@ G_M28628_IG23: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {} blr x2 ; gcrRegs -[x0-x1 x20] ; gcr arg pop 0
- mov x0, x22
+ mov x0, x19
; gcrRegs +[x0] ;; size=104 bbWeight=0.50 PerfScore 10.00 G_M28628_IG24: ; bbWeight=0.50, epilog, nogc, extend @@ -331,7 +330,7 @@ G_M28628_IG24: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50 G_M28628_IG25: ; bbWeight=0, gcVars=0000000000004000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; gcrRegs -[x0 x22]
+ ; gcrRegs -[x0 x19]
; GC ptr vars +{V06} stp fp, lr, [sp, #-0x70]! stp x19, x20, [sp, #0x20] @@ -372,7 +371,7 @@ G_M28628_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 764, prolog size 40, PerfScore 845.25, instruction count 191, allocated bytes for code 764 (MethodHash=a758902b) for method System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
+Total bytes of code 756, prolog size 40, PerfScore 846.75, instruction count 189, allocated bytes for code 756 (MethodHash=a758902b) for method System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
; ============================================================ Unwind Info: @@ -383,7 +382,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 164 (0x000a4) Actual length = 656 (0x000290)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+2.17%) : 290543.dasm - System.Threading.RateLimiting.ConcurrencyLimiter:Release(int):this (FullOpts)

@@ -8,11 +8,11 @@ ; 6 inlinees with PGO data; 29 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 32, 53.50) ref -> [fp+0x20] this class-hnd single-def <System.Threading.RateLimiting.ConcurrencyLimiter>
+; V00 this [V00,T00] ( 32, 53.50) ref -> [fp+0x18] this class-hnd single-def <System.Threading.RateLimiting.ConcurrencyLimiter>
; V01 arg1 [V01,T23] ( 3, 2.50) int -> x20 single-def
-; V02 loc0 [V02 ] ( 4, 9 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer> -; V03 loc1 [V03,T28] ( 4, 1.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <<unknown class>> -; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V02 loc0 [V02 ] ( 4, 9 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer> +; V03 loc1 [V03,T28] ( 4, 1.50) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <<unknown class>> +; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V05 loc3 [V05,T03] ( 8, 20 ) ref -> x21 class-hnd <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration> ; V06 loc4 [V06,T25] ( 2, 4.00) ref -> x15 class-hnd <System.Threading.RateLimiting.ConcurrencyLimiter+ConcurrencyLease> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -43,9 +43,9 @@ ; V32 tmp25 [V32,T21] ( 3, 6.00) ubyte -> x22 "Inline stloc first use temp" ; V33 tmp26 [V33,T02] ( 7, 22.12) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]> ; V34 tmp27 [V34,T26] ( 3, 4.00) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V35 tmp28 [V35,T27] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V35 tmp28 [V35,T27] ( 2, 0 ) ubyte -> x25 "Inline return value spill temp"
; V36 tmp29 [V36,T13] ( 5, 9.99) int -> x14 "Inline stloc first use temp"
-; V37 tmp30 [V37,T35] ( 3, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V37 tmp30 [V37,T35] ( 3, 0 ) ubyte -> x25 "Inline return value spill temp"
; V38 tmp31 [V38,T33] ( 6, 0 ) int -> x0 "Inline stloc first use temp" ; V39 tmp32 [V39,T36] ( 3, 0 ) int -> x2 "Inline stloc first use temp" ; V40 tmp33 [V40,T34] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> @@ -56,47 +56,48 @@ ;* V45 tmp38 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V46 tmp39 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.RateLimiting.ConcurrencyLimiterOptions> ;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V48 tmp41 [V48 ] ( 4, 9 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._next (fldOffset=0x0)" P-DEP
+; V48 tmp41 [V48 ] ( 4, 9 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._next (fldOffset=0x0)" P-DEP
;* V49 tmp42 [V49,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V19.hasValue (fldOffset=0x0)" P-INDEP ; V50 tmp43 [V50,T30] ( 2, 1 ) long -> x0 single-def "field V19.value (fldOffset=0x8)" P-INDEP ; V51 tmp44 [V51,T06] ( 3, 12 ) ref -> x1 "arr expr" ; V52 tmp45 [V52,T08] ( 3, 12 ) int -> x0 "index expr" ; V53 tmp46 [V53,T07] ( 3, 12 ) ref -> x0 "arr expr"
-; V54 PSPSym [V54,T31] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+; V54 PSPSym [V54,T31] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V55 cse0 [V55,T11] ( 5, 10 ) int -> x20 "CSE - aggressive" ; V56 cse1 [V56,T20] ( 3, 6 ) int -> x12 "CSE - moderate" ; V57 cse2 [V57,T14] ( 7, 9.99) byref -> x23 "CSE - moderate" ; V58 cse3 [V58,T29] ( 3, 1.50) ref -> x1 "CSE - moderate" ;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M60402_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60]
+ stp x19, x20, [sp, #0x38] + stp x21, x22, [sp, #0x48] + stp x23, x24, [sp, #0x58] + str x25, [sp, #0x68]
mov fp, sp
- stp xzr, xzr, [fp, #0x28] // [V04 loc2], [V02 loc0]
+ stp xzr, xzr, [fp, #0x20] // [V04 loc2], [V02 loc0]
add x2, sp, #112
- str x2, [fp, #0x38] // [V54 PSPSym]
+ str x2, [fp, #0x30] // [V54 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M60402_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V03 loc1]
+ str x0, [fp, #0x10] // [V03 loc1]
; GC ptr vars +{V03} ;; size=8 bbWeight=1 PerfScore 4.00 G_M60402_IG03: ; bbWeight=1, gcVars=0000000010000000 {V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb w1, [fp, #0x28] // [V04 loc2]
+ ldrb w1, [fp, #0x20] // [V04 loc2]
cbnz w1, G_M60402_IG18
- add x1, fp, #40 // [V04 loc2]
+ add x1, fp, #32 // [V04 loc2]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x28] // [V04 loc2]
+ ldrb w0, [fp, #0x20] // [V04 loc2]
cbnz w0, G_M60402_IG05 ;; size=24 bbWeight=1 PerfScore 7.50 G_M60402_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref @@ -115,7 +116,7 @@ G_M60402_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ;; size=36 bbWeight=0.50 PerfScore 3.75 G_M60402_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x30]
- cbnz w0, G_M60402_IG42
+ cbnz w0, G_M60402_IG43
;; size=8 bbWeight=1 PerfScore 4.00 G_M60402_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x28] @@ -195,12 +196,12 @@ G_M60402_IG12: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; gcrRegs -[x0] add x14, x21, #16 ; byrRegs +[x14]
- ldr x15, [fp, #0x30] // [V48 tmp41]
+ ldr x15, [fp, #0x28] // [V48 tmp41]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- str x21, [fp, #0x30] // [V48 tmp41]
+ str x21, [fp, #0x28] // [V48 tmp41]
ldr x0, [x19, #0x10] ; gcrRegs +[x0] ldr w0, [x0, #0x18] @@ -211,14 +212,14 @@ G_M60402_IG12: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { G_M60402_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x21] ldr w0, [x19, #0x28]
- str x19, [fp, #0x20] // [V00 this]
+ str x19, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00} ldr x1, [x19, #0x08] ; gcrRegs +[x1] ldr w1, [x1, #0x08] ; gcrRegs -[x1] cmp w0, w1
- bne G_M60402_IG42
+ bne G_M60402_IG43
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -228,7 +229,7 @@ G_M60402_IG14: ; bbWeight=0.50, gcVars=0000000010000001 {V00 V03}, gcrefR blr x0 ; gcr arg pop 0 mov w1, #1
- ldr x19, [fp, #0x20] // [V00 this]
+ ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19] strb w1, [x19, #0x38] str x0, [x19, #0x40] @@ -236,12 +237,12 @@ G_M60402_IG14: ; bbWeight=0.50, gcVars=0000000010000001 {V00 V03}, gcrefR movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr w0, [x0]
- cbz w0, G_M60402_IG42
+ cbz w0, G_M60402_IG43
; GC ptr vars -{V00} bl CORINFO_HELP_POLL_GC ; gcrRegs -[x19] ; gcr arg pop 0
- b G_M60402_IG42
+ b G_M60402_IG43
;; size=48 bbWeight=0.50 PerfScore 6.50 G_M60402_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException() @@ -255,7 +256,7 @@ G_M60402_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M60402_IG16: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs +[x15 x19-x21] ; byrRegs +[x23]
- cbz w0, G_M60402_IG35
+ cbz w25, G_M60402_IG35
b G_M60402_IG31 ;; size=8 bbWeight=0 PerfScore 0.00 G_M60402_IG17: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz @@ -303,15 +304,9 @@ G_M60402_IG19: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefReg G_M60402_IG20: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M60402_IG38 - orr w1, w0, #0xD1FFAB1E - mov w2, w0 - casal w2, w1, [x23] - cmp w2, w0 - beq G_M60402_IG39 - sxtw w0, w2 - b G_M60402_IG20 - ;; size=40 bbWeight=0 PerfScore 0.00
+ beq G_M60402_IG38 + b G_M60402_IG39 + ;; size=16 bbWeight=0 PerfScore 0.00
G_M60402_IG21: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x15 x20] ; byrRegs -[x23] @@ -507,7 +502,7 @@ G_M60402_IG34: ; bbWeight=2.00, gcrefRegs=280000 {x19 x21}, byrefRegs=000 mov w22, #1 ;; size=4 bbWeight=2.00 PerfScore 1.00 G_M60402_IG35: ; bbWeight=2.00, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbnz w22, G_M60402_IG41
+ cbnz w22, G_M60402_IG42
;; size=4 bbWeight=2.00 PerfScore 2.00 G_M60402_IG36: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ldr x0, [x21, #0x08] @@ -533,19 +528,28 @@ G_M60402_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60402_IG38: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
+G_M60402_IG38: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs +[x15 x19-x21] ; byrRegs +[x23]
- mov w0, wzr - b G_M60402_IG40 - ;; size=8 bbWeight=0 PerfScore 0.00
+ orr w1, w0, #0xD1FFAB1E + mov w2, w0 + casal w2, w1, [x23] + cmp w2, w0 + beq G_M60402_IG40 + sxtw w0, w2 + b G_M60402_IG20 + ;; size=28 bbWeight=0 PerfScore 0.00
G_M60402_IG39: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
- mov w0, #1 - ;; size=4 bbWeight=0 PerfScore 0.00
+ mov w25, wzr + b G_M60402_IG41 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M60402_IG40: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
+ mov w25, #1 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M60402_IG41: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
b G_M60402_IG16 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60402_IG41: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M60402_IG42: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x15 x20] ; byrRegs -[x23] add x14, x19, #32 @@ -555,21 +559,21 @@ G_M60402_IG41: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; byrRegs -[x14] b G_M60402_IG12 ;; size=16 bbWeight=2 PerfScore 10.00
-G_M60402_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60402_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x21]
- ldrb w0, [fp, #0x28] // [V04 loc2] - cbz w0, G_M60402_IG44
+ ldrb w0, [fp, #0x20] // [V04 loc2] + cbz w0, G_M60402_IG45
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60402_IG43: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V03 loc1]
+G_M60402_IG44: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V03 loc1]
; gcrRegs +[x0] ; GC ptr vars -{V03} bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50 ...

+32 (+3.98%) : 16669.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0 ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75 -G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M3645_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M3645_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M3645_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M3645_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M3645_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M3645_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M3645_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M3645_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M3645_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M3645_IG17
...

+32 (+3.98%) : 183630.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0 ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75 -G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M3645_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M3645_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M3645_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M3645_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M3645_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M3645_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M3645_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M3645_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M3645_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M3645_IG17
...

libraries_tests.run.linux.arm64.Release.mch

-40 (-27.03%) : 374874.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,13 +8,13 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 11399 ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 3.97) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 5.90) int -> x1 single-def -; V02 loc0 [V02,T01] ( 11, 7.38) int -> x3 -; V03 loc1 [V03,T03] ( 6, 4.07) ushort -> x5
+; V00 arg0 [V00,T02] ( 4, 3.97) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 6, 4.93) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 8.72) int -> x3 +; V03 loc1 [V03,T04] ( 3, 4.07) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 3.38) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 2.33) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 4.72) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 2.32) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,78 +26,56 @@ G_M3357_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] ldr w2, [x0, #0x08] cmp w2, w1
- ble G_M3357_IG08
+ ble G_M3357_IG10
;; size=12 bbWeight=1 PerfScore 4.50
-G_M3357_IG03: ; bbWeight=0.97, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG03: ; bbWeight=0.97, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG10 - ;; size=8 bbWeight=0.97 PerfScore 1.45 -G_M3357_IG04: ; bbWeight=0.96, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=4 bbWeight=0.96 PerfScore 0.48 -G_M3357_IG05: ; bbWeight=1.34, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG14 - ;; size=16 bbWeight=1.34 PerfScore 6.71 -G_M3357_IG06: ; bbWeight=1.35, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG05 - ;; size=12 bbWeight=1.35 PerfScore 2.70 -G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x4] - b G_M3357_IG12 - ;; size=4 bbWeight=0.01 PerfScore 0.01 -G_M3357_IG08: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, wzr - ;; size=4 bbWeight=0.03 PerfScore 0.02 -G_M3357_IG09: ; bbWeight=0.03, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.03 PerfScore 0.07 -G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0]
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.97 PerfScore 0.97 +G_M3357_IG04: ; bbWeight=1.36, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w3, w2
- bhs G_M3357_IG16 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG14 - ;; size=28 bbWeight=0.01 PerfScore 0.09 -G_M3357_IG11: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x4]
+ bhs G_M3357_IG12 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG08 + ;; size=24 bbWeight=1.36 PerfScore 8.81 +G_M3357_IG05: ; bbWeight=1.36, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w3, w3, #1 cmp w2, w3
- bgt G_M3357_IG10 - ;; size=12 bbWeight=0.01 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+ bgt G_M3357_IG04 + ;; size=12 bbWeight=1.36 PerfScore 2.72 +G_M3357_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.01 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0.01, epilog, nogc, extend
+G_M3357_IG07: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG14: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG08: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w3, w1 ;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M3357_IG15: ; bbWeight=0.96, epilog, nogc, extend
+G_M3357_IG09: ; bbWeight=0.96, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.96 PerfScore 1.92
-G_M3357_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.03 PerfScore 0.02 +G_M3357_IG11: ; bbWeight=0.03, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.03 PerfScore 0.07 +G_M3357_IG12: ; 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 148, prolog size 8, PerfScore 19.97, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 21.00, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info: @@ -108,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-40 (-27.03%) : 401867.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,13 +8,13 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 397 ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 3.52) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 4.54) int -> x1 single-def -; V02 loc0 [V02,T02] ( 11, 3.10) int -> x3 -; V03 loc1 [V03,T04] ( 6, 1.55) ushort -> x5
+; V00 arg0 [V00,T01] ( 4, 3.51) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 6, 4.03) int -> x1 single-def +; V02 loc0 [V02,T02] ( 7, 3.61) int -> x3 +; V03 loc1 [V03,T04] ( 3, 1.55) ushort -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.52) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 1.04) byref -> x4 hoist multi-def "CSE - moderate"
+; V05 cse0 [V05,T03] ( 5, 3.03) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 1.03) byref -> x4 hoist "CSE - moderate"
; ; Lcl frame size = 0 @@ -36,62 +36,46 @@ G_M3357_IG04: ; bbWeight=0.49, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.49 PerfScore 0.97
-G_M3357_IG05: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG07
add x4, x0, #12 ; byrRegs +[x4]
- ;; size=12 bbWeight=0.51 PerfScore 1.03 -G_M3357_IG06: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=8 bbWeight=0.51 PerfScore 0.51 +G_M3357_IG06: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG08 - add w3, w3, #1 - cmp w2, w3 - ble G_M3357_IG11 - b G_M3357_IG06 - ;; size=32 bbWeight=0.51 PerfScore 4.09 -G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - ; byrRegs -[x4]
cmp w3, w2
- bhs G_M3357_IG10 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG08
+ bhs G_M3357_IG09 + ldrh w0, [x4, w3, UXTW #2] + cmp w0, #32 + ccmp w0, #9, z, ne + bne G_M3357_IG07
add w3, w3, #1 cmp w2, w3
- ble G_M3357_IG11 - b G_M3357_IG07 - ;; size=44 bbWeight=0.01 PerfScore 0.05 -G_M3357_IG08: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+ ble G_M3357_IG10 + b G_M3357_IG06 + ;; size=40 bbWeight=0.52 PerfScore 4.91 +G_M3357_IG07: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4] sub w0, w3, w1 ;; size=4 bbWeight=0.51 PerfScore 0.26
-G_M3357_IG09: ; bbWeight=0.51, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.51, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.51 PerfScore 1.03
-G_M3357_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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_M3357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w2, w1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 13.67, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 13.92, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-44 (-13.10%) : 574398.dasm - System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)

@@ -9,16 +9,16 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 9, 4.00) ref -> x19 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 8, 5.50) int -> x1 single-def -; V02 arg2 [V02,T04] ( 3, 2 ) ubyte -> x20 single-def
+; V00 arg0 [V00,T01] ( 8, 4 ) ref -> x19 class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 7, 5 ) int -> x1 single-def +; V02 arg2 [V02,T05] ( 3, 2 ) ubyte -> x20 single-def
; V03 arg3 [V03,T02] ( 4, 3 ) byref -> x3 single-def ; V04 loc0 [V04,T03] ( 18, 4 ) int -> x22 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 4, 2 ) int -> x2 "Inline return value spill temp" -; V07 tmp2 [V07,T07] ( 11, 1.51) int -> x4 "Inline stloc first use temp" -; V08 tmp3 [V08,T08] ( 6, 1.51) ushort -> x0 "Inline stloc first use temp" -; V09 cse0 [V09,T05] ( 10, 3.50) int -> x21 "CSE - aggressive"
+; V06 tmp1 [V06,T07] ( 4, 2 ) int -> x2 "Inline return value spill temp" +; V07 tmp2 [V07,T06] ( 7, 2 ) int -> x4 "Inline stloc first use temp" +; V08 tmp3 [V08,T08] ( 3, 1.50) ushort -> x0 "Inline stloc first use temp" +; V09 cse0 [V09,T04] ( 9, 4 ) int -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -40,88 +40,52 @@ G_M52160_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, ;; size=16 bbWeight=1 PerfScore 5.50 G_M52160_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref mov w2, wzr
- b G_M52160_IG07
+ b G_M52160_IG06
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M52160_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
sxtw w4, w1
- tbnz w1, #31, G_M52160_IG11 - ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M52160_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ cmp w4, w21 + bhs G_M52160_IG13
add x2, x19, #12 ; byrRegs +[x2] ldrh w0, [x2, w4, UXTW #2] cmp w0, #32 ccmp w0, #9, z, ne
- beq G_M52160_IG13 - ;; size=20 bbWeight=0.50 PerfScore 2.75 -G_M52160_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref - ; byrRegs -[x2]
+ beq G_M52160_IG14
sub w2, w4, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M52160_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ ; byrRegs -[x2] + ;; size=32 bbWeight=0.50 PerfScore 3.75 +G_M52160_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
add w22, w1, w2 cmp w21, w22
- beq G_M52160_IG09
+ beq G_M52160_IG08
;; size=12 bbWeight=1 PerfScore 2.00
-G_M52160_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
cmp w22, w21
- bhs G_M52160_IG12
+ bhs G_M52160_IG13
add x0, x19, #12 ; byrRegs +[x0] ldrh w0, [x0, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #44
- beq G_M52160_IG16
+ beq G_M52160_IG10
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M52160_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52160_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ; byrRegs -[x3] mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52160_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M52160_IG09: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M52160_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, gcvars, byref, isz
+G_M52160_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, gcvars, byref, isz
; gcrRegs +[x19] ; byrRegs +[x3]
- cmp w4, w21 - bhs G_M52160_IG12 - add x0, x19, #12 - ; byrRegs +[x0] - ldrh w0, [x0, w4, UXTW #2] - ; byrRegs -[x0] - cmp w0, #32 - ccmp w0, #9, z, ne - beq G_M52160_IG14 - b G_M52160_IG06 - ;; size=32 bbWeight=0.01 PerfScore 0.04 -G_M52160_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ; byrRegs -[x3] - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M52160_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x3] - add w4, w4, #1 - cmp w21, w4 - bgt G_M52160_IG05 - b G_M52160_IG15 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M52160_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz - add w4, w4, #1 - cmp w21, w4 - bgt G_M52160_IG11 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M52160_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref - sub w2, w21, w1 - b G_M52160_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M52160_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
mov w0, #1 strb w0, [x3] add w22, w22, #1 @@ -138,10 +102,10 @@ G_M52160_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, ; gcr arg pop 0 add w22, w0, w22 tst w20, #255
- beq G_M52160_IG09 - b G_M52160_IG18
+ beq G_M52160_IG08 + b G_M52160_IG12
;; size=56 bbWeight=0 PerfScore 0.00
-G_M52160_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M52160_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #1 mov x0, x19 ; gcrRegs +[x0] @@ -155,21 +119,35 @@ G_M52160_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w22, w0, w22 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M52160_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M52160_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w22
- ble G_M52160_IG09
+ ble G_M52160_IG08
cmp w22, w21
- bhs G_M52160_IG12
+ bhs G_M52160_IG13
add x0, x19, #12 ; byrRegs +[x0] ldrh w0, [x0, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #44
- beq G_M52160_IG17 - b G_M52160_IG09
+ beq G_M52160_IG11 + b G_M52160_IG08
;; size=36 bbWeight=0 PerfScore 0.00
+G_M52160_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M52160_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz + ; gcrRegs +[x19] + ; byrRegs +[x3] + add w4, w4, #1 + cmp w21, w4 + bgt G_M52160_IG05 + sub w2, w21, w1 + b G_M52160_IG06 + ;; size=20 bbWeight=0 PerfScore 0.00
-Total bytes of code 336, prolog size 24, PerfScore 24.29, instruction count 84, allocated bytes for code 336 (MethodHash=17d3343f) for method System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
+Total bytes of code 292, prolog size 24, PerfScore 24.50, instruction count 73, allocated bytes for code 292 (MethodHash=17d3343f) for method System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
; ============================================================ Unwind Info: @@ -180,7 +158,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+4.52%) : 388646.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -23,22 +23,23 @@ ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp" ; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M10785_IG13 cmp x20, x19 @@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov w0, #1 ;; size=16 bbWeight=1 PerfScore 3.00 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- 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=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ldr x0, [x19, #0x30] cmn x0, #1 @@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x19, #0x18] cmp x0, x1 bne G_M10785_IG13
+ ldr x0, [x20, #0x20] + ldr x1, [x19, #0x20] + cmp x0, x1 + cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x20 ; gcrRegs +[x0] @@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2, #0x10] ;; size=40 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x0, [x20, #0x28] @@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00 G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00 -G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - ldr x0, [x20, #0x20] - ldr x1, [x19, #0x20] - cmp x0, x1 - cset x0, eq - uxtb w0, w0 - ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + uxtb w0, w21 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20] ldr x1, [x19] cmp x0, x1 @@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M10785_IG02 ;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -273,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -296,10 +303,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

+28 (+4.64%) : 472327.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -21,24 +21,25 @@ ; V09 tmp5 [V09,T07] ( 3, 0 ) ubyte -> x1 "Inline stloc first use temp" ;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V12 tmp8 [V12,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V12 tmp8 [V12,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V13 tmp9 [V13,T11] ( 2, 0 ) int -> x0 "argument with side effect" ; V14 tmp10 [V14,T08] ( 2, 0 ) ref -> x19 single-def "arg temp" ; V15 tmp11 [V15,T03] ( 3, 0 ) ref -> x0 "argument with side effect" ; V16 tmp12 [V16,T12] ( 2, 0 ) int -> x0 "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M10785_IG12 cmp x20, x19 @@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov w0, #1 ;; size=16 bbWeight=1 PerfScore 3.00 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- 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=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ldr x0, [x19, #0x30] cmn x0, #1 @@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x19, #0x18] cmp x0, x1 bne G_M10785_IG12
+ ldr x0, [x20, #0x20] + ldr x1, [x19, #0x20] + cmp x0, x1 + cset x21, eq
b G_M10785_IG14
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x20 ; gcrRegs +[x0] @@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2, #0x10] ;; size=40 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -126,10 +134,11 @@ G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2] ;; size=84 bbWeight=0 PerfScore 0.00 G_M10785_IG10: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x0, [x20, #0x28] @@ -148,24 +157,22 @@ G_M10785_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00 G_M10785_IG13: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00 -G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - ldr x0, [x20, #0x20] - ldr x1, [x19, #0x20] - cmp x0, x1 - cset x0, eq - uxtb w0, w0 - ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + uxtb w0, w21 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG15: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20] ldr x1, [x19] cmp x0, x1 @@ -254,7 +261,7 @@ G_M10785_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M10785_IG02 ;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 604, prolog size 12, PerfScore 9.50, instruction count 151, allocated bytes for code 604 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 632, prolog size 16, PerfScore 12.50, instruction count 158, allocated bytes for code 632 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -265,7 +272,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
+ Function Length : 158 (0x0009e) Actual length = 632 (0x000278)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -288,10 +295,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

+16 (+4.88%) : 734954.dasm - System.Threading.Tasks.ParallelLoopState:Breaklong (Tier1)

@@ -11,61 +11,61 @@ ; ; V00 arg0 [V00,T01] ( 6, 3.57) long -> x20 ld-addr-op single-def ; V01 arg1 [V01,T00] ( 8, 5.57) ref -> x19 class-hnd single-def <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-; V02 loc0 [V02,T02] ( 6, 5.07) int -> x0 ld-addr-op
+; V02 loc0 [V02,T02] ( 8, 5 ) int -> x22 ld-addr-op
; V03 loc1 [V03,T03] ( 8, 3.13) long -> x21 ld-addr-op
-; V04 loc2 [V04 ] ( 2, 0.55) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
+; V04 loc2 [V04 ] ( 2, 0.55) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 tmp2 [V07,T06] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V08 tmp3 [V08,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09 ] ( 2, 1 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
+; V09 tmp4 [V09 ] ( 2, 1 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V14 tmp9 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V15 tmp10 [V15 ] ( 2, 0.55) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V04._count (fldOffset=0x0)" P-DEP -; V16 tmp11 [V16 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V09._count (fldOffset=0x0)" P-DEP
+; V15 tmp10 [V15 ] ( 2, 0.55) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V04._count (fldOffset=0x0)" P-DEP +; V16 tmp11 [V16 ] ( 2, 1 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed "field V09._count (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17,T07] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V18 cse0 [V18,T04] ( 3, 3 ) byref -> x21 hoist "CSE - aggressive"
+; V18 cse0 [V18,T04] ( 4, 3 ) byref -> x21 hoist "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M16438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x28] - str x21, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp mov x20, x0 mov x19, x1 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M16438_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M16438_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrsb wzr, [x19]
- str wzr, [fp, #0x18] // [V09 tmp4]
+ str wzr, [fp, #0x10] // [V09 tmp4]
add x21, x19, #8 ; byrRegs +[x21]
- ;; size=12 bbWeight=1 PerfScore 4.50 -G_M16438_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ldapr w0, [x21] - mov w1, #13 - tst w0, w1
+ ldapr w22, [x21] + mov w0, #13 + tst w22, w0
bne G_M16438_IG09
- orr w1, w0, #2 - mov w2, w0 - casal w2, w1, [x21] - cmp w2, w0 - bne G_M16438_IG11
+ ;; size=28 bbWeight=1 PerfScore 9.50 +G_M16438_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz + orr w0, w22, #2 + mov w1, w22 + casal w1, w0, [x21] + cmp w1, w22 + bne G_M16438_IG10
add x0, x19, #16 ; byrRegs +[x0] ldapr x21, [x0] ; byrRegs -[x21] cmp x20, x21 bge G_M16438_IG06
- ;; size=52 bbWeight=1 PerfScore 15.50
+ ;; size=36 bbWeight=1 PerfScore 10.50
G_M16438_IG04: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0]
- str wzr, [fp, #0x20] // [V04 loc2]
+ str wzr, [fp, #0x18] // [V04 loc2]
add x0, x19, #16 ; byrRegs +[x0] mov x1, x21 @@ -75,7 +75,7 @@ G_M16438_IG04: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ;; size=24 bbWeight=0.46 PerfScore 2.97 G_M16438_IG05: ; bbWeight=0.09, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0]
- add x0, fp, #32 // [V04 loc2]
+ add x0, fp, #24 // [V04 loc2]
mov w1, #20 movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -96,11 +96,11 @@ G_M16438_IG05: ; bbWeight=0.09, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ;; size=64 bbWeight=0.09 PerfScore 1.33 G_M16438_IG06: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ldr x21, [sp, #0x38] - ldp x19, x20, [sp, #0x28]
+ ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=0.07 PerfScore 0.34
+ ;; size=16 bbWeight=0.07 PerfScore 0.27
G_M16438_IG07: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] add x0, x19, #16 @@ -115,10 +115,8 @@ G_M16438_IG08: ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs -[x0] b G_M16438_IG06 ;; size=4 bbWeight=0.93 PerfScore 0.93
-G_M16438_IG09: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tbz w0, #2, G_M16438_IG06 - ;; size=4 bbWeight=0.07 PerfScore 0.07 -G_M16438_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M16438_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tbz w22, #2, G_M16438_IG06
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -146,21 +144,25 @@ G_M16438_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19]
- ;; size=76 bbWeight=0 PerfScore 0.00 -G_M16438_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+ ;; size=80 bbWeight=0 PerfScore 0.00 +G_M16438_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs +[x19] ; byrRegs +[x21]
- add x0, fp, #24 // [V09 tmp4]
+ add x0, fp, #16 // [V09 tmp4]
mov w1, #20 movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- b G_M16438_IG03 - ;; size=32 bbWeight=0 PerfScore 0.00
+ ldapr w22, [x21] + mov w0, #13 + tst w22, w0 + beq G_M16438_IG03 + b G_M16438_IG09 + ;; size=48 bbWeight=0 PerfScore 0.00
-Total bytes of code 328, prolog size 16, PerfScore 30.23, instruction count 82, allocated bytes for code 328 (MethodHash=e1eebfc9) for method System.Threading.Tasks.ParallelLoopState:Break[long](long,System.Threading.Tasks.ParallelLoopStateFlags`1[long]) (Tier1)
+Total bytes of code 344, prolog size 16, PerfScore 30.10, instruction count 86, allocated bytes for code 344 (MethodHash=e1eebfc9) for method System.Threading.Tasks.ParallelLoopState:Break[long](long,System.Threading.Tasks.ParallelLoopStateFlags`1[long]) (Tier1)
; ============================================================ Unwind Info: @@ -171,7 +173,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 86 (0x00056) Actual length = 344 (0x000158)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -179,9 +181,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end E4 end
+ E4 end

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-40 (-27.03%) : 145569.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-40 (-27.03%) : 20780.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-28 (-3.55%) : 144016.dasm - System.SpanTests.ReadOnlySpanTests:TestSingleValueCount_Byte() (FullOpts)

@@ -8,63 +8,61 @@ ; 6 inlinees with PGO data; 13 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-;* V00 loc0 [V00,T32] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <int[]> -; V01 loc1 [V01,T22] ( 5, 17 ) int -> x20 -; V02 loc2 [V02,T21] ( 5, 18 ) int -> x21 -; V03 loc3 [V03 ] ( 5, 44.24) struct (16) [fp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
+;* V00 loc0 [V00,T30] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <int[]> +; V01 loc1 [V01,T20] ( 5, 17 ) int -> x20 +; V02 loc2 [V02,T19] ( 5, 18 ) int -> x21 +; V03 loc3 [V03 ] ( 5, 44.24) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;* V04 loc4 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> ; V05 loc5 [V05,T04] ( 5, 68.47) int -> x23
-; V06 loc6 [V06,T10] ( 2, 32.24) ubyte -> [fp+0x4C] spill-single-def
+; V06 loc6 [V06,T10] ( 2, 32.24) ubyte -> x26
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T30] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <int[]> -; V09 tmp2 [V09,T25] ( 2, 16 ) ref -> x1 class-hnd "dup spill" <<unknown class>> -; V10 tmp3 [V10,T24] ( 3, 16 ) ref -> x22 class-hnd "impAppendStmt" <System.Collections.Generic.IEnumerable`1[int]> -; V11 tmp4 [V11,T29] ( 4, 7.81) byref -> x21
+; V08 tmp1 [V08,T28] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <int[]> +; V09 tmp2 [V09,T23] ( 2, 16 ) ref -> x1 class-hnd "dup spill" <<unknown class>> +; V10 tmp3 [V10,T22] ( 3, 16 ) ref -> x22 class-hnd "impAppendStmt" <System.Collections.Generic.IEnumerable`1[int]> +; V11 tmp4 [V11,T27] ( 4, 7.81) byref -> x21
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref
-; V13 tmp6 [V13,T26] ( 4, 14 ) ref -> x1
+; V13 tmp6 [V13,T24] ( 4, 14 ) ref -> x1
; V14 tmp7 [V14,T02] ( 3, 96.71) ref -> x0 class-hnd exact "dup spill" <ubyte[]> ;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ubyte]> ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ; V17 tmp10 [V17,T15] ( 5, 20 ) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V18 tmp11 [V18,T28] ( 2, 8 ) long -> x0 "Inline stloc first use temp"
+; V18 tmp11 [V18,T26] ( 2, 8 ) long -> x0 "Inline stloc first use temp"
; V19 tmp12 [V19,T16] ( 5, 20 ) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+RangeIterator>
-; V20 tmp13 [V20,T27] ( 2, 8 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
+; V20 tmp13 [V20,T25] ( 2, 8 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
; V21 tmp14 [V21,T13] ( 4, 23.22) ref -> x0 class-hnd "Inlining Arg" <ubyte[]> ;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V23 tmp16 [V23,T05] ( 2, 64.47) int -> [fp+0x48] spill-single-def "Inlining Arg" -; V24 tmp17 [V24,T03] ( 3, 96.71) ref -> [fp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T05] ( 2, 64.47) int -> x26 "Inlining Arg" +; V24 tmp17 [V24,T03] ( 3, 96.71) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T06] ( 3, 48.35) ref -> [fp+0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T00] ( 4,128.94) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T01] ( 4,128.94) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V29 tmp22 [V29 ] ( 3, 24.12) byref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._reference (fldOffset=0x0)" P-DEP -; V30 tmp23 [V30 ] ( 3, 24.12) int -> [fp+0x58] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
+; V26 tmp19 [V26,T06] ( 3, 48.35) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T00] ( 4,128.94) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T01] ( 4,128.94) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V29 tmp22 [V29 ] ( 3, 24.12) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03._reference (fldOffset=0x0)" P-DEP +; V30 tmp23 [V30 ] ( 3, 24.12) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
; V31 tmp24 [V31,T14] ( 2, 20.12) byref -> x21 "field V04._reference (fldOffset=0x0)" P-INDEP ; V32 tmp25 [V32,T12] ( 3, 24.12) int -> x22 "field V04._length (fldOffset=0x8)" P-INDEP
-; V33 tmp26 [V33,T08] ( 2, 32.24) byref -> [fp+0x18] spill-single-def "field V15._reference (fldOffset=0x0)" P-INDEP -; V34 tmp27 [V34,T11] ( 2, 32.24) int -> [fp+0x44] spill-single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V33 tmp26 [V33,T08] ( 2, 32.24) byref -> x27 "field V15._reference (fldOffset=0x0)" P-INDEP +; V34 tmp27 [V34,T11] ( 2, 32.24) int -> x28 "field V15._length (fldOffset=0x8)" P-INDEP
;* V35 tmp28 [V35 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ; V37 tmp30 [V37,T09] ( 2, 32.24) byref -> x2 "field V22._reference (fldOffset=0x0)" P-INDEP
-;* V38 tmp31 [V38,T23] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP -; V39 cse0 [V39,T07] ( 3, 34.24) long -> x27 hoist "CSE - aggressive"
+;* V38 tmp31 [V38,T21] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP +; V39 cse0 [V39,T07] ( 3, 48.35) long -> [fp+0x18] spill-single-def "CSE - aggressive"
; V40 cse1 [V40,T17] ( 2, 18.12) long -> x24 hoist "CSE - moderate" ; V41 cse2 [V41,T18] ( 2, 18.12) long -> x25 hoist "CSE - moderate"
-; V42 cse3 [V42,T19] ( 2, 18.12) long -> x26 hoist "CSE - moderate" -; V43 cse4 [V43,T20] ( 2, 18.12) long -> x28 hoist "CSE - moderate" -; V44 cse5 [V44,T31] ( 3, 6 ) byref -> x19 "CSE - moderate"
+; V42 cse3 [V42,T29] ( 3, 6 ) byref -> x19 "CSE - moderate"
;
-; Lcl frame size = 80
+; Lcl frame size = 32
G_M13491_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xB0]! - stp x19, x20, [sp, #0x60] - stp x21, x22, [sp, #0x70] - stp x23, x24, [sp, #0x80] - stp x25, x26, [sp, #0x90] - stp x27, x28, [sp, #0xA0]
+ stp fp, lr, [sp, #-0x80]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60] + stp x27, x28, [sp, #0x70]
mov fp, sp
- stp xzr, xzr, [fp, #0x50] // [V03 loc3], [V03 loc3+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V03 loc3], [V03 loc3+0x08]
;; size=32 bbWeight=1 PerfScore 7.50 G_M13491_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -124,7 +122,7 @@ G_M13491_IG06: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x0] ; gcrRegs +[x1]
- add x21, fp, #80 // [V03 loc3]
+ add x21, fp, #32 // [V03 loc3]
; byrRegs +[x21] cbnz x1, G_M13491_IG08 ;; size=24 bbWeight=4 PerfScore 24.00 @@ -185,9 +183,9 @@ G_M13491_IG09: ; bbWeight=1.81, gcrefRegs=0001 {x0}, byrefRegs=280000 {x1 ;; size=16 bbWeight=1.81 PerfScore 9.93 G_M13491_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ; byrRegs -[x1 x21]
- ldr x21, [fp, #0x50] // [V29 tmp22]
+ ldr x21, [fp, #0x20] // [V29 tmp22]
; byrRegs +[x21]
- ldr w22, [fp, #0x58] // [V30 tmp23]
+ ldr w22, [fp, #0x28] // [V30 tmp23]
mov w23, wzr cmp w22, #0 ble G_M13491_IG13 @@ -199,136 +197,118 @@ G_M13491_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21 movz x25, #0xD1FFAB1E movk x25, #0xD1FFAB1E LSL #16 movk x25, #0xD1FFAB1E LSL #32
- movz x26, #0xD1FFAB1E - movk x26, #0xD1FFAB1E LSL #16 - movk x26, #0xD1FFAB1E LSL #32 - movz x27, #0xD1FFAB1E - movk x27, #0xD1FFAB1E LSL #16 - movk x27, #0xD1FFAB1E LSL #32 - movz x28, #0xD1FFAB1E - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #0xD1FFAB1E LSL #32 - ;; size=60 bbWeight=2 PerfScore 15.00
+ ;; size=24 bbWeight=2 PerfScore 6.00
G_M13491_IG12: ; bbWeight=16.12, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
- ldrb w2, [x21, w23, UXTW #2] - str w2, [fp, #0x4C] // [V06 loc6] - ldr x3, [fp, #0x50] // [V29 tmp22] - ; byrRegs +[x3] - str x3, [fp, #0x18] // [V33 tmp26] - ; GC ptr vars +{V33} - ldr w4, [fp, #0x58] // [V30 tmp23] - str w4, [fp, #0x44] // [V34 tmp27]
+ ldrb w26, [x21, w23, UXTW #2] + ldr x27, [fp, #0x20] // [V29 tmp22] + ; byrRegs +[x27] + ldr w28, [fp, #0x28] // [V30 tmp23]
mov x0, x24 mov x1, #1 bl CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[x0]
- ; byrRegs -[x3] - ldr w1, [fp, #0x4C] // [V06 loc6] - strb w1, [x0, #0x10]
+ strb w26, [x0, #0x10]
add x2, x0, #16 ; byrRegs +[x2]
- ldr x0, [fp, #0x18] // [V33 tmp26]
+ mov x0, x27
; gcrRegs -[x0] ; byrRegs +[x0]
- ldr w1, [fp, #0x44] // [V34 tmp27]
+ mov w1, w28
mov w3, #1 movz x4, #0xD1FFAB1E // code for <unknown method> movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4]
- ; GC ptr vars -{V33}
blr x4
- ; byrRegs -[x0 x2] - str w0, [fp, #0x48] // [V23 tmp16]
+ ; byrRegs -[x0 x2 x27] + sxtw w26, w0
mov x0, x25 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- str x0, [fp, #0x38] // [V24 tmp17] - ; GC ptr vars +{V24} - mov x0, x26
+ mov x27, x0 + ; gcrRegs +[x27] + movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + mov x28, x0 + ; gcrRegs +[x28] + str xzr, [x28, #0x08] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + str x1, [fp, #0x18] // [V39 cse0] + mov x0, x1
; gcrRegs -[x0] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- str x1, [fp, #0x30] // [V26 tmp19] - ; GC ptr vars +{V26} - str xzr, [x1, #0x08] - mov x0, x27 - ; gcrRegs -[x0] - bl CORINFO_HELP_NEWSFAST - ; gcrRegs -[x1] +[x0] - mov x1, x0 - ; gcrRegs +[x1] - str x1, [fp, #0x28] // [V27 tmp20]
+ str x1, [fp, #0x10] // [V27 tmp20]
; GC ptr vars +{V27} add x14, x1, #8 ; byrRegs +[x14]
- ldr x15, [fp, #0x30] // [V26 tmp19]
+ mov x15, x28
; gcrRegs +[x15]
- ; GC ptr vars -{V26}
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x0 x15 x28]
; byrRegs -[x14]
- str x28, [x1, #0x18] - add x0, x27, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E // code for <unknown method> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + str x0, [x1, #0x18] + ldr x28, [fp, #0x18] // [V39 cse0] + add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - str x2, [fp, #0x20] // [V28 tmp21] - ; GC ptr vars +{V28} - add x14, x2, #16
+ mov x28, x0 + ; gcrRegs +[x28] + add x14, x28, #16
; byrRegs +[x14]
- ldr x15, [fp, #0x28] // [V27 tmp20]
+ ldr x15, [fp, #0x10] // [V27 tmp20]
; gcrRegs +[x15] ; GC ptr vars -{V27} bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x2 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14] mov w0, #2 mov w1, wzr ...

+32 (+4.08%) : 12555.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -97,95 +97,73 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=84 bbWeight=0.50 PerfScore 12.25 -G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=88 bbWeight=0.50 PerfScore 12.50 +G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M10501_IG11
+ ble G_M10501_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M10501_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M10501_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M10501_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M10501_IG10
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M10501_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M10501_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M10501_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M10501_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M10501_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M10501_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -198,28 +176,32 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M10501_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M10501_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -229,22 +211,38 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M10501_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M10501_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M10501_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M10501_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M10501_IG17
...

+36 (+4.64%) : 97878.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)

@@ -12,41 +12,43 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V02 loc1 [V02,T03] ( 3, 9 ) ref -> x19 class-hnd exact single-def <<unknown class>> ; V03 loc2 [V03 ] ( 8, 14 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x21 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
+; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x23 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 7, 14 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp2 [V07,T07] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp5 [V10,T09] ( 4, 3.50) ref -> x2
+; V10 tmp5 [V10,T11] ( 4, 3.50) ref -> x2
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0> ; V12 tmp7 [V12,T00] ( 4, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>> ; V13 tmp8 [V13,T05] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T12] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V18 tmp13 [V18,T08] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> -; V19 tmp14 [V19,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V18 tmp13 [V18,T10] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> +; V19 tmp14 [V19,T15] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "V18.[000..008)"
-; V22 tmp17 [V22,T13] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
+; V22 tmp17 [V22,T14] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "V18.[012..016)" ;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "V18.[016..020)" ;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V27 tmp22 [V27,T15] ( 2, 0 ) ref -> x0 "argument with side effect" -; V28 tmp23 [V28,T16] ( 2, 0 ) ref -> x1 "argument with side effect" -; V29 cse0 [V29,T04] ( 3, 6 ) long -> x20 "CSE - aggressive" -; V30 cse1 [V30,T10] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive" -; V31 cse2 [V31,T11] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V27 tmp22 [V27,T16] ( 2, 0 ) ref -> x0 "argument with side effect" +; V28 tmp23 [V28,T17] ( 2, 0 ) ref -> x1 "argument with side effect" +; V29 cse0 [V29,T07] ( 2, 5 ) long -> x21 hoist "CSE - aggressive" +; V30 cse1 [V30,T08] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" +; V31 cse2 [V31,T04] ( 3, 6 ) long -> x20 "CSE - aggressive" +; V32 cse3 [V32,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 88 G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x68]
- str x21, [sp, #0x78]
+ stp x21, x22, [sp, #0x78] + str x23, [sp, #0x88]
mov fp, sp add x9, fp, #24 movi v16.16b, #0 @@ -55,7 +57,7 @@ G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, xzr, [x9, #0x40] mov x19, x0 ; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M64326_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -139,10 +141,10 @@ G_M64326_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs -[x0] ;; size=36 bbWeight=0.50 PerfScore 3.75 G_M64326_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - ldr x2, [x21]
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x2, [x0]
; gcrRegs +[x2] cbnz x2, G_M64326_IG08 ;; size=20 bbWeight=1 PerfScore 5.50 @@ -155,7 +157,10 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- ldr x15, [x21, #-0x68]
+ movz x14, #0xD1FFAB1E + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + ldr x15, [x14]
; gcrRegs +[x15] add x14, x2, #8 ; byrRegs +[x14] @@ -166,12 +171,14 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32 str x14, [x2, #0x18]
- mov x14, x21
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32
mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=80 bbWeight=0.50 PerfScore 7.25
G_M64326_IG08: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref mov x0, x19 ; gcrRegs +[x0] @@ -213,34 +220,36 @@ G_M64326_IG10: ; bbWeight=1, isz, extend ldr x2, [x2] blr x2 cbz w0, G_M64326_IG12
- ;; size=60 bbWeight=1 PerfScore 12.50
+ movz x21, #0xD1FFAB1E + movk x21, #0xD1FFAB1E LSL #16 + movk x21, #0xD1FFAB1E LSL #32 + movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #0xD1FFAB1E LSL #32 + ;; size=84 bbWeight=1 PerfScore 15.50
G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x21
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #8
+ mov x23, x0 + ; gcrRegs +[x23] + add x14, x23, #8
; byrRegs +[x14] add x13, fp, #88 // [V03 loc2+0x18] ; byrRegs +[x13] bl CORINFO_HELP_ASSIGN_BYREF ; gcrRegs -[x0] bl CORINFO_HELP_ASSIGN_BYREF
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x22
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; byrRegs -[x13-x14] add x14, x0, #8 ; byrRegs +[x14]
- mov x15, x21
+ mov x15, x23
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x21]
+ ; gcrRegs -[x15 x23]
; byrRegs -[x14] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -273,14 +282,15 @@ G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x2, [x2] blr x2 cbnz w0, G_M64326_IG11
- ;; size=168 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 116.00
G_M64326_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ldr x21, [sp, #0x78]
+ ldr x23, [sp, #0x88] + ldp x21, x22, [sp, #0x78]
ldp x19, x20, [sp, #0x68]
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -318,7 +328,7 @@ G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=104 bbWeight=0 PerfScore 0.00
-Total bytes of code 776, prolog size 36, PerfScore 223.00, instruction count 194, allocated bytes for code 776 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
+Total bytes of code 812, prolog size 40, PerfScore 221.25, instruction count 203, allocated bytes for code 812 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
; ============================================================ Unwind Info: @@ -329,7 +339,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 194 (0x000c2) Actual length = 776 (0x000308)
+ Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -337,9 +347,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ D1 11 save_reg X#4 Z#17 (0x11); str x23, [sp, #136] + E6 save_next
C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! - E4 end
+ 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
E4 end

+40 (+4.93%) : 97921.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentVariablesDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)

@@ -13,14 +13,14 @@ ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V03 loc2 [V03,T03] ( 3, 9 ) ref -> x19 class-hnd exact single-def <<unknown class>> ; V04 loc3 [V04 ] ( 8, 14 ) struct (40) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V05 loc4 [V05,T01] ( 4, 16 ) ref -> x22 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass8_1>
+; V05 loc4 [V05,T01] ( 4, 16 ) ref -> x24 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass8_1>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass8_0> ; V08 tmp2 [V08,T02] ( 7, 14 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp3 [V09,T08] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V09 tmp3 [V09,T10] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref single-def ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
-; V12 tmp6 [V12,T10] ( 4, 3.50) ref -> x2
+; V12 tmp6 [V12,T12] ( 4, 3.50) ref -> x2
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref single-def ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref @@ -31,7 +31,7 @@ ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V21 tmp15 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V22 tmp16 [V22,T14] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V23 tmp17 [V23,T09] ( 2, 4 ) struct (40) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V23 tmp17 [V23,T11] ( 2, 4 ) struct (40) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
; V24 tmp18 [V24,T16] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "V23.[000..008)" @@ -42,17 +42,18 @@ ;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V32 tmp26 [V32,T17] ( 2, 0 ) ref -> x0 "argument with side effect" ; V33 tmp27 [V33,T18] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V34 cse0 [V34,T05] ( 3, 6 ) long -> x21 "CSE - aggressive" -; V35 cse1 [V35,T11] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive" -; V36 cse2 [V36,T13] ( 3, 3 ) ref -> x22 "CSE - aggressive" -; V37 cse3 [V37,T12] ( 4, 3 ) long -> x22 "CSE - aggressive"
+; V34 cse0 [V34,T08] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" +; V35 cse1 [V35,T09] ( 2, 5 ) long -> x23 hoist "CSE - aggressive" +; V36 cse2 [V36,T05] ( 3, 6 ) long -> x21 "CSE - aggressive" +; V37 cse3 [V37,T13] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 80 G_M13147_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x60] stp x21, x22, [sp, #0x70]
+ stp x23, x24, [sp, #0x80]
mov fp, sp add x9, fp, #16 movi v16.16b, #0 @@ -61,7 +62,7 @@ G_M13147_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, xzr, [x9, #0x40] mov x19, x0 ; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M13147_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -96,21 +97,19 @@ G_M13147_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- movz x22, #0xD1FFAB1E - movk x22, #0xD1FFAB1E LSL #16 - movk x22, #0xD1FFAB1E LSL #32 - mov x2, x22 - ; gcrRegs +[x2]
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32
mov w3, #2 movz x4, #0xD1FFAB1E // code for <unknown method> movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] blr x4
- ; gcrRegs -[x0 x2] +[x22]
+ ; gcrRegs -[x0]
cbnz w0, G_M13147_IG04
- ;; size=144 bbWeight=1 PerfScore 28.00 -G_M13147_IG03: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=140 bbWeight=1 PerfScore 27.50 +G_M13147_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -123,23 +122,24 @@ G_M13147_IG03: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M13147_IG04: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M13147_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x21 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x2, x22 - ; gcrRegs +[x2]
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32
mov w3, #2 movz x4, #0xD1FFAB1E // code for <unknown method> movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] blr x4
- ; gcrRegs -[x0 x2 x22]
+ ; gcrRegs -[x0]
cbnz w0, G_M13147_IG06
- ;; size=48 bbWeight=1 PerfScore 9.50
+ ;; size=56 bbWeight=1 PerfScore 10.50
G_M13147_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -154,10 +154,10 @@ G_M13147_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; gcrRegs -[x0] ;; size=36 bbWeight=0.50 PerfScore 3.75 G_M13147_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- movz x22, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x22, #0xD1FFAB1E LSL #16 - movk x22, #0xD1FFAB1E LSL #32 - ldr x2, [x22]
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x2, [x0]
; gcrRegs +[x2] cbnz x2, G_M13147_IG08 ;; size=20 bbWeight=1 PerfScore 5.50 @@ -170,7 +170,10 @@ G_M13147_IG07: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- ldr x15, [x22, #-0x88]
+ movz x14, #0xD1FFAB1E + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + ldr x15, [x14]
; gcrRegs +[x15] add x14, x2, #8 ; byrRegs +[x14] @@ -181,12 +184,14 @@ G_M13147_IG07: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32 str x14, [x2, #0x18]
- mov x14, x22
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32
mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=80 bbWeight=0.50 PerfScore 7.25
G_M13147_IG08: ; bbWeight=1, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref mov x0, x19 ; gcrRegs +[x0] @@ -230,40 +235,42 @@ G_M13147_IG10: ; bbWeight=1, isz, extend ldr x2, [x2] blr x2 cbz w0, G_M13147_IG12
- ;; size=60 bbWeight=1 PerfScore 12.50
+ movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #0xD1FFAB1E LSL #32 + movz x23, #0xD1FFAB1E + movk x23, #0xD1FFAB1E LSL #16 + movk x23, #0xD1FFAB1E LSL #32 + ;; size=84 bbWeight=1 PerfScore 15.50
G_M13147_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x22
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x22, x0 - ; gcrRegs +[x22] - add x14, x22, #8
+ mov x24, x0 + ; gcrRegs +[x24] + add x14, x24, #8
; byrRegs +[x14] mov x15, x20 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- add x14, x22, #16
+ add x14, x24, #16
; byrRegs +[x14] add x13, fp, #80 // [V04 loc3+0x18] ; byrRegs +[x13] bl CORINFO_HELP_ASSIGN_BYREF bl CORINFO_HELP_ASSIGN_BYREF
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x23
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; byrRegs -[x13-x14] add x14, x0, #8 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x24
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x22]
+ ; gcrRegs -[x15 x24]
; byrRegs -[x14] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -296,14 +303,15 @@ G_M13147_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] blr x2 cbnz w0, G_M13147_IG11
- ;; size=180 bbWeight=4 PerfScore 132.00
+ ;; size=164 bbWeight=4 PerfScore 124.00
G_M13147_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19-x20]
+ ldp x23, x24, [sp, #0x80]
ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60]
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M13147_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -341,7 +349,7 @@ G_M13147_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=104 bbWeight=0 PerfScore 0.00
-Total bytes of code 812, prolog size 36, PerfScore 234.00, instruction count 203, allocated bytes for code 812 (MethodHash=ad97cca4) for method System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentVariablesDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
+Total bytes of code 852, prolog size 40, PerfScore 232.75, instruction count 213, allocated bytes for code 852 (MethodHash=ad97cca4) for method System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentVariablesDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
; ============================================================ Unwind Info: @@ -352,7 +360,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0 ...

realworld.run.linux.arm64.checked.mch

-40 (-27.03%) : 15422.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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 (-0.77%) : 21766.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)

@@ -74,7 +74,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b cmp w1, #1 beq G_M39186_IG23 mov w19, wzr
- b G_M39186_IG35
+ b G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.50 G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz movn w1, #0 @@ -290,7 +290,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov w21, wzr ldr w11, [x0, #0x30] cmp w11, #0
- ble G_M39186_IG29
+ ble G_M39186_IG37
;; size=28 bbWeight=0.50 PerfScore 3.50 G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -300,11 +300,11 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs +[x11] ldr w1, [x11, #0x10] cmp w21, w1
- bhs G_M39186_IG30
+ bhs G_M39186_IG27
ldr x11, [x11, #0x08] ldr w1, [x11, #0x08] cmp w21, w1
- bhs G_M39186_IG31
+ bhs G_M39186_IG26
add x11, x11, #16 ; gcrRegs -[x11] ; byrRegs +[x11] @@ -320,10 +320,40 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M39186_IG34 - cbnz x20, G_M39186_IG27 - ;; size=80 bbWeight=4 PerfScore 116.00 -G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M39186_IG28 + ;; size=76 bbWeight=4 PerfScore 112.00 +G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20 x22] + mov w19, wzr + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + b G_M39186_IG38 + ;; size=32 bbWeight=0.50 PerfScore 4.50 +G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + brk_unix #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M39186_IG28: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x20 x22] + cbnz x20, G_M39186_IG33 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M39186_IG29: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] @@ -331,10 +361,22 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b ldr x2, [x1, #0x38] ldr x2, [x2] ldr x2, [x2, #0x38]
- cbz x2, G_M39186_IG32
+ cbz x2, G_M39186_IG31
;; size=24 bbWeight=2 PerfScore 30.00
-G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ b G_M39186_IG32 + ;; size=4 bbWeight=1.60 PerfScore 1.60 +G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref + mov x0, x1 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov x2, x0 + ;; size=24 bbWeight=0.40 PerfScore 1.40 +G_M39186_IG32: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x2 ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -345,7 +387,7 @@ G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b mov x20, x0 ; gcrRegs +[x20] ;; size=20 bbWeight=2 PerfScore 14.00
-G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19] ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -353,9 +395,20 @@ G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 { ldr x1, [x0, #0x38] ldr x1, [x1] ldr x11, [x1, #0x30]
- cbz x11, G_M39186_IG33
+ cbz x11, G_M39186_IG35
;; size=24 bbWeight=4 PerfScore 60.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref + b G_M39186_IG36 + ;; size=4 bbWeight=3.20 PerfScore 3.20 +G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov x11, x0 + ;; size=20 bbWeight=0.80 PerfScore 2.40 +G_M39186_IG36: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22 ; gcrRegs +[x0] ldr x1, [x11] @@ -374,7 +427,7 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 cmp w21, w14 blt G_M39186_IG24 ;; size=44 bbWeight=4 PerfScore 48.00
-G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -390,68 +443,17 @@ G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} sxtw w20, w0 mov w19, w20 ; gcrRegs -[x19]
- b G_M39186_IG35 - ;; size=36 bbWeight=0.50 PerfScore 3.75 -G_M39186_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - brk_unix #0 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M39186_IG32: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x22] - mov x0, x1 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov x2, x0 - b G_M39186_IG26 - ;; size=28 bbWeight=0.40 PerfScore 1.80 -G_M39186_IG33: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov x11, x0 - b G_M39186_IG28 - ;; size=24 bbWeight=0.80 PerfScore 3.20 -G_M39186_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20 x22] - ldr x19, [fp, #0x18] // [V00 this] - ; gcrRegs +[x19] - mov w20, wzr - mov x0, x19 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0 x19] - ; gcr arg pop 0 - mov w19, w20 - ;; size=36 bbWeight=0.50 PerfScore 4.50 -G_M39186_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.25 +G_M39186_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w19 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M39186_IG36: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V03 V24} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -459,10 +461,10 @@ G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs add x3, fp, #80 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V03 loc2] ; gcrRegs +[x0]
- cbz x0, G_M39186_IG39
+ cbz x0, G_M39186_IG42
movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 movk x19, #0xD1FFAB1E LSL #32 @@ -473,20 +475,20 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] add x3, fp, #80 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG44: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...

-4 (-0.15%) : 2729.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -23,24 +23,24 @@ ; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String> ; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28 ; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3 ; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]> ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1 ;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt" ;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg" ;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -67,13 +67,13 @@ ;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" ;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> -; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg" -; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> +; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg" +; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]> ; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg" ; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]> @@ -90,14 +90,14 @@ ;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> -; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> +; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP ;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP @@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2 bhi G_M4730_IG74
- cmp w1, #0 - cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w3, [x1, #0x08] cmp w3, w0 bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref ; byrRegs -[x27] add x1, x1, #16 @@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {}, beq G_M4730_IG67 b G_M4730_IG27 ;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89} str w1, [fp, #0x60] // [V10 loc6] mov w28, w2 @@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; GC ptr vars +{V89} ldr w28, [fp, #0x68] // [V07 loc3] ;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3] ; GC ptr vars -{V57} cmp w25, w26 @@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89} ; GC ptr vars +{V13} cbz x24, G_M4730_IG39 ;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26] ldr w26, [fp, #0x44] // [V90 tmp68] cbz w26, G_M4730_IG32 @@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g str w0, [x19, #0x18] b G_M4730_IG41 ;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27] ; GC ptr vars +{V13 V16 V89} b G_M4730_IG42 @@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; gcrRegs -[x26] b G_M4730_IG47 ;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26] ; GC ptr vars +{V13 V16 V89} ldr x2, [fp, #0x30] // [V13 loc9] @@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ; gcr arg pop 0 b G_M4730_IG06 ;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27] ; GC ptr vars +{V13 V16 V89} ldr x1, [fp, #0x30] // [V13 loc9] @@ -1216,7 +1215,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2704, prolog size 48, PerfScore 6977.50, instruction count 676, allocated bytes for code 2704 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2700, prolog size 48, PerfScore 6975.50, instruction count 675, allocated bytes for code 2700 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -1227,7 +1226,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 676 (0x002a4) Actual length = 2704 (0x000a90)
+ Function Length : 675 (0x002a3) Actual length = 2700 (0x000a8c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.56%) : 23911.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)

@@ -38,7 +38,7 @@ G_M17353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M17353_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz mov x20, x19 ; gcrRegs +[x20]
- cbz x19, G_M17353_IG09
+ cbz x19, G_M17353_IG08
;; size=8 bbWeight=1 PerfScore 1.50 G_M17353_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x0, x20 @@ -69,7 +69,7 @@ G_M17353_IG04: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x8, x0
- bne G_M17353_IG11
+ bne G_M17353_IG12
mov x21, x20 ; gcrRegs +[x21] add x8, fp, #16 // [V03 loc2] @@ -103,27 +103,31 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ;; size=12 bbWeight=2 PerfScore 9.00 G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20]
+ b G_M17353_IG10 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] + mov x0, xzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x40 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M17353_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
mov x0, x21 ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x21] - mov x0, xzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldr x21, [sp, #0x38] - ldp x19, x20, [sp, #0x28] - ldp fp, lr, [sp], #0x40 - ret lr - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x20]
+G_M17353_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x21] +[x20]
mov x1, x20 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -131,7 +135,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 brk_unix #0 ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 256, prolog size 24, PerfScore 152.00, instruction count 64, allocated bytes for code 256 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 260, prolog size 24, PerfScore 152.50, instruction count 65, allocated bytes for code 260 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
; ============================================================ Unwind Info: @@ -142,7 +146,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ 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)

+8 (+1.96%) : 24934.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int

@@ -10,15 +10,15 @@ ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T03] ( 6, 10 ) ref -> x20 class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]>
-; V04 loc0 [V04 ] ( 8, 13.50) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
+; V04 loc0 [V04 ] ( 9, 14 ) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
; V05 loc1 [V05,T06] ( 5, 8.50) ref -> x23 ld-addr-op class-hnd <System.__Canon> ;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]> ; V07 loc3 [V07,T00] ( 6, 18.50) int -> x24 ; V08 loc4 [V08,T04] ( 4, 12 ) ref -> x26 class-hnd <System.__Canon> ; V09 loc5 [V09,T09] ( 4, 8 ) int -> x0
-; V10 loc6 [V10,T02] ( 6, 12.50) int -> x24
+; V10 loc6 [V10,T01] ( 7, 17 ) int -> x24
; V11 loc7 [V11,T12] ( 3, 6 ) ref -> x25 class-hnd <System.__Canon> ; V12 loc8 [V12,T13] ( 3, 6 ) int -> x0 ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -28,7 +28,7 @@ ;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V18 tmp5 [V18,T11] ( 4, 4.50) ref -> x21 single-def "field V01.array (fldOffset=0x0)" P-INDEP ; V19 tmp6 [V19,T10] ( 6, 7.50) ubyte -> [fp+0x18] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp7 [V20,T05] ( 5, 9 ) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
+; V20 tmp7 [V20,T05] ( 6, 9.50) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP ;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP ; V23 cse0 [V23,T14] ( 2, 1 ) int -> x0 "CSE - moderate" @@ -143,13 +143,15 @@ G_M52223_IG12: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
mov w24, wzr
- b G_M52223_IG16 - ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ldr w1, [fp, #0x1C] // [V20 tmp7] + cmp w24, w1 + bge G_M52223_IG16 + ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz cmp w24, w22
- bhs G_M52223_IG21
+ bhs G_M52223_IG20
add x25, x21, #16 ; byrRegs +[x25] ldr x25, [x25, w24, UXTW #3] @@ -174,21 +176,19 @@ G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg ; gcrRegs -[x0-x2 x25] cbz w0, G_M52223_IG15 cmp w0, #3
- bne G_M52223_IG19
+ bne G_M52223_IG18
;; size=68 bbWeight=2 PerfScore 48.00
-G_M52223_IG15: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M52223_IG15: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
- ;; size=4 bbWeight=2 PerfScore 1.00 -G_M52223_IG16: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz - ldr w1, [fp, #0x1C] // [V20 tmp7] - cmp w24, w1
+ ldr w0, [fp, #0x1C] // [V20 tmp7] + cmp w24, w0
blt G_M52223_IG14
- ;; size=12 bbWeight=4 PerfScore 14.00 -G_M52223_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 16.00 +G_M52223_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21 x23] ldr x0, [fp, #0x18] // [V04 loc0] ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -196,10 +196,10 @@ G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG19: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -207,12 +207,12 @@ G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG20: ; 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 408, prolog size 28, PerfScore 189.00, instruction count 102, allocated bytes for code 408 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 416, prolog size 28, PerfScore 191.25, instruction count 104, allocated bytes for code 416 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +223,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 102 (0x00066) Actual length = 408 (0x000198)
+ Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+3.91%) : 14486.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -33,10 +33,10 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value" ; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG23 - cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25 + cbz w21, G_M46295_IG19
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG17 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG14 - cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16 + cbnz x23, G_M46295_IG12
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08] sub w0, w0, w24 cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12 ; byrRegs +[x2] sbfiz x0, x24, #1, #32 @@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -266,7 +277,7 @@ Unwind Info: E bit : 0 ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 21 6 7 8 -228 +376
benchmarks.run_pgo.linux.arm64.checked.mch 508 388 87 33 -7,432 +3,144
benchmarks.run_tiered.linux.arm64.checked.mch 8 0 4 4 -0 +184
coreclr_tests.run.linux.arm64.checked.mch 334 69 120 145 -536 +1,240
libraries.crossgen2.linux.arm64.checked.mch 1 0 0 1 -0 +0
libraries.pmi.linux.arm64.checked.mch 171 45 51 75 -416 +1,188
libraries_tests.run.linux.arm64.Release.mch 1,346 642 365 339 -8,460 +3,496
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 225 62 59 104 -928 +1,236
realworld.run.linux.arm64.checked.mch 26 7 12 7 -68 +180
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
2,640 1,219 705 716 -18,068 +11,044

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 32,435 2,362 30,073 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.arm64.checked.mch 152,737 60,751 91,986 14 (0.01%) 14 (0.01%)
benchmarks.run_tiered.linux.arm64.checked.mch 60,787 45,077 15,710 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch 626,684 383,548 243,136 12 (0.00%) 12 (0.00%)
libraries.crossgen2.linux.arm64.checked.mch 1,936 0 1,936 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 295,687 6 295,681 3 (0.00%) 3 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 750,983 494,543 256,440 128 (0.02%) 128 (0.02%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 304,826 21,600 283,226 2 (0.00%) 2 (0.00%)
realworld.run.linux.arm64.checked.mch 33,343 157 33,186 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.arm64.checked.mch 52 0 52 0 (0.00%) 0 (0.00%)
2,259,470 1,008,044 1,251,426 159 (0.01%) 159 (0.01%)

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: 14972964 (overridden on cmd)
Total bytes of diff: 14973112 (overridden on cmd)
Total bytes of delta: 148 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 79903244 (overridden on cmd)
Total bytes of diff: 79898956 (overridden on cmd)
Total bytes of delta: -4288 (-0.01 % of base)
    relative diff is a regression.

Detail diffs



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


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: 22276872 (overridden on cmd)
Total bytes of diff: 22277056 (overridden on cmd)
Total bytes of delta: 184 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

0 total methods with Code Size differences (0 improved, 0 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: 509740232 (overridden on cmd)
Total bytes of diff: 509740936 (overridden on cmd)
Total bytes of delta: 704 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 315768 (overridden on cmd)
Total bytes of diff: 315768 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 76281012 (overridden on cmd)
Total bytes of diff: 76281784 (overridden on cmd)
Total bytes of delta: 772 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 400018960 (overridden on cmd)
Total bytes of diff: 400013996 (overridden on cmd)
Total bytes of delta: -4964 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 165110104 (overridden on cmd)
Total bytes of diff: 165110412 (overridden on cmd)
Total bytes of delta: 308 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 15918288 (overridden on cmd)
Total bytes of diff: 15918400 (overridden on cmd)
Total bytes of delta: 112 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



linux x64

Diffs are based on 2,249,703 contexts (981,298 MinOpts, 1,268,405 FullOpts).

MISSED contexts: 134 (0.01%)

Overall (-15,799 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,723,744 +124
benchmarks.run_pgo.linux.x64.checked.mch 69,144,788 -14,029
benchmarks.run_tiered.linux.x64.checked.mch 15,897,809 +62
coreclr_tests.run.linux.x64.checked.mch 403,316,719 +982
libraries.crossgen2.linux.x64.checked.mch 203,687 -1
libraries.pmi.linux.x64.checked.mch 60,405,907 +582
libraries_tests.run.linux.x64.Release.mch 348,249,945 -4,058
librariestestsnotieredcompilation.run.linux.x64.Release.mch 132,684,063 +428
realworld.run.linux.x64.checked.mch 13,212,110 +111

FullOpts (-15,799 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,459,811 +124
benchmarks.run_pgo.linux.x64.checked.mch 47,802,743 -14,029
benchmarks.run_tiered.linux.x64.checked.mch 3,639,425 +62
coreclr_tests.run.linux.x64.checked.mch 123,825,558 +982
libraries.crossgen2.linux.x64.checked.mch 203,687 -1
libraries.pmi.linux.x64.checked.mch 60,293,050 +582
libraries_tests.run.linux.x64.Release.mch 164,494,781 -4,058
librariestestsnotieredcompilation.run.linux.x64.Release.mch 122,066,277 +428
realworld.run.linux.x64.checked.mch 12,823,228 +111

Example diffs

benchmarks.run.linux.x64.checked.mch

-29 (-32.58%) : 4938.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] mov ecx, esi
- test esi, esi - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, eax + jae SHORT G_M3357_IG13
mov edx, ecx movzx rdx, word ptr [rdi+2*rdx+0x0C] cmp edx, 32 je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx cmp eax, ecx jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi] - cmp ecx, eax - jae SHORT G_M3357_IG17 - mov edx, ecx - movzx rdx, word ptr [rdi+2*rdx+0x0C] - cmp edx, 32 - je SHORT G_M3357_IG12 - ;; size=16 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - cmp edx, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc ecx - cmp eax, ecx - jg SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] sub eax, esi ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx sub eax, esi ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-35 (-2.63%) : 28663.dasm - BenchmarksGame.RegexRedux_1:RunBench():int:this (FullOpts)

@@ -54,21 +54,21 @@ ;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref ;* V44 tmp31 [V44 ] ( 0, 0 ) int -> zero-ref ;* V45 tmp32 [V45 ] ( 0, 0 ) int -> zero-ref
-; V46 tmp33 [V46,T32] ( 3, 8 ) int -> rdi
+; V46 tmp33 [V46,T33] ( 3, 8 ) int -> rdi
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V48 tmp35 [V48 ] ( 0, 0 ) ref -> zero-ref ;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref ;* V50 tmp37 [V50 ] ( 0, 0 ) ref -> zero-ref ;* V51 tmp38 [V51 ] ( 0, 0 ) int -> zero-ref ; V52 tmp39 [V52,T02] ( 10, 36 ) ref -> r12
-; V53 tmp40 [V53,T28] ( 3, 10 ) ref -> rbx
+; V53 tmp40 [V53,T20] ( 3, 12 ) ref -> rbx
; V54 tmp41 [V54,T06] ( 6, 30 ) ref -> [rbp-0x60] spill-single-def ;* V55 tmp42 [V55,T51] ( 0, 0 ) int -> zero-ref
-; V56 tmp43 [V56,T33] ( 3, 8 ) int -> [rbp-0x34]
+; V56 tmp43 [V56,T29] ( 3, 10 ) int -> [rbp-0x34]
; V57 tmp44 [V57,T15] ( 2, 16 ) ref -> rdx class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> ; V58 tmp45 [V58,T10] ( 8, 22 ) ref -> [rbp-0x68]
-; V59 tmp46 [V59,T20] ( 3, 12 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> -; V60 tmp47 [V60,T21] ( 3, 12 ) byref -> [rbp-0x78] spill-single-def "finalizable newobj spill"
+; V59 tmp46 [V59,T21] ( 3, 12 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> +; V60 tmp47 [V60,T22] ( 3, 12 ) byref -> [rbp-0x78] spill-single-def "finalizable newobj spill"
; V61 tmp48 [V61,T35] ( 2, 8 ) ref -> rdx class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> ;* V62 tmp49 [V62 ] ( 0, 0 ) ref -> zero-ref ;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref @@ -78,27 +78,27 @@ ;* V67 tmp54 [V67 ] ( 0, 0 ) ref -> zero-ref ;* V68 tmp55 [V68 ] ( 0, 0 ) long -> zero-ref ;* V69 tmp56 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
-; V70 tmp57 [V70,T30] ( 4, 8 ) long -> rax "Inline stloc first use temp"
+; V70 tmp57 [V70,T31] ( 4, 8 ) long -> rax "Inline stloc first use temp"
;* V71 tmp58 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo> ;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement> ; V73 tmp60 [V73,T12] ( 6, 18 ) ref -> [rbp-0x80] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V74 tmp61 [V74,T25] ( 2, 12 ) int -> [rbp-0x38] spill-single-def "Inlining Arg" -; V75 tmp62 [V75,T23] ( 2, 12 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> -; V76 tmp63 [V76,T26] ( 2, 12 ) int -> [rbp-0x3C] spill-single-def "Inlining Arg" -; V77 tmp64 [V77,T24] ( 2, 12 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V74 tmp61 [V74,T26] ( 2, 12 ) int -> [rbp-0x38] spill-single-def "Inlining Arg" +; V75 tmp62 [V75,T24] ( 2, 12 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> +; V76 tmp63 [V76,T27] ( 2, 12 ) int -> [rbp-0x3C] spill-single-def "Inlining Arg" +; V77 tmp64 [V77,T25] ( 2, 12 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
;* V78 tmp65 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V79 tmp66 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V80 tmp67 [V80,T31] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
+; V80 tmp67 [V80,T32] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
; V81 tmp68 [V81,T18] ( 5, 14 ) long -> rdi "Inline stloc first use temp" ;* V82 tmp69 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ; V83 tmp70 [V83,T40] ( 3, 6 ) ref -> r11 class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement> ;* V84 tmp71 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ;* V85 tmp72 [V85 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V86 tmp73 [V86,T22] ( 3, 12 ) ref -> [rbp-0x98] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
+; V86 tmp73 [V86,T23] ( 3, 12 ) ref -> [rbp-0x98] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
;* V87 tmp74 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V88 tmp75 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V89 tmp76 [V89,T36] ( 2, 8 ) ref -> rax class-hnd "dup spill" <System.Object>
-; V90 tmp77 [V90,T29] ( 4, 8 ) ref -> rax
+; V90 tmp77 [V90,T30] ( 4, 8 ) ref -> rax
;* V91 tmp78 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexReplacement> ; V92 tmp79 [V92,T19] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" ; V93 tmp80 [V93,T01] ( 6, 52 ) ref -> rdi class-hnd exact "Inlining Arg" <System.String> @@ -129,7 +129,7 @@ ; V118 tmp105 [V118,T45] ( 3, 6 ) byref -> rdi single-def "BlockOp address local" ; V119 tmp106 [V119,T08] ( 3, 24 ) byref -> rdi "BlockOp address local" ; V120 cse0 [V120,T53] ( 2, 2 ) ref -> rsi "CSE - moderate"
-; V121 cse1 [V121,T27] ( 4, 10 ) long -> r15 "CSE - moderate"
+; V121 cse1 [V121,T28] ( 4, 10 ) long -> r15 "CSE - moderate"
; ; Lcl frame size = 136 @@ -162,7 +162,7 @@ G_M53318_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[rax rsi rdi] test rbx, rbx
- je G_M53318_IG36
+ je G_M53318_IG34
test byte ptr [r14+0x40], 64 jne SHORT G_M53318_IG04 ;; size=65 bbWeight=1 PerfScore 12.75 @@ -249,7 +249,7 @@ G_M53318_IG06: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[rax rsi rdi r12] test rbx, rbx
- je G_M53318_IG36
+ je G_M53318_IG34
mov r9d, dword ptr [rbx+0x08] mov r12, gword ptr [rbp-0x50] ; gcrRegs +[r12] @@ -360,7 +360,7 @@ G_M53318_IG13: ; bbWeight=4, gcVars=0001000000000000 {V10}, gcrefRegs=400 call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[rax rsi rdi r12] test rbx, rbx
- je G_M53318_IG36
+ je G_M53318_IG34
mov r12, gword ptr [rbp-0x58] ; gcrRegs +[r12] mov rax, gword ptr [rbp-0xA0] @@ -373,16 +373,16 @@ G_M53318_IG13: ; bbWeight=4, gcVars=0001000000000000 {V10}, gcrefRegs=400 G_M53318_IG14: ; bbWeight=2, gcVars=0001000000000040 {V10 V54}, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V23 V101} xor ecx, ecx
+ mov dword ptr [rbp-0x34], ecx
jmp SHORT G_M53318_IG16
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M53318_IG15: ; bbWeight=2, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
+ ;; size=7 bbWeight=2 PerfScore 6.50 +G_M53318_IG15: ; bbWeight=4, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x08] mov dword ptr [rbp-0x34], ecx
- mov ecx, dword ptr [rbp-0x34] - ;; size=9 bbWeight=2 PerfScore 8.00
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M53318_IG16: ; bbWeight=4, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref, isz test rax, rax
- je G_M53318_IG37
+ je G_M53318_IG35
mov rdx, gword ptr [r12+0x30] ; gcrRegs +[rdx] test rdx, rdx @@ -390,7 +390,6 @@ G_M53318_IG16: ; bbWeight=4, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 ;; size=19 bbWeight=4 PerfScore 18.00 G_M53318_IG17: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax rdx]
- mov dword ptr [rbp-0x34], ecx
lea rdx, bword ptr [r12+0x30] ; byrRegs +[rdx] mov bword ptr [rbp-0x78], rdx @@ -413,7 +412,7 @@ G_M53318_IG17: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, xor esi, esi call [<unknown method>] ; gcrRegs -[rdi]
- ;; size=55 bbWeight=2 PerfScore 22.00
+ ;; size=52 bbWeight=2 PerfScore 20.00
G_M53318_IG18: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbp-0x70] ; gcrRegs +[rsi] @@ -421,7 +420,7 @@ G_M53318_IG18: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, mov rdi, bword ptr [rbp-0x78] ; byrRegs +[rdi] test rdi, rdi
- je G_M53318_IG38
+ je G_M53318_IG36
xor rdx, rdx ; gcrRegs +[rdx] ; GC ptr vars -{V59 V60} @@ -433,11 +432,10 @@ G_M53318_IG18: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, mov rax, rdx test rax, rax mov rdx, rax
- jne SHORT G_M53318_IG21
+ jne SHORT G_M53318_IG19
mov rax, gword ptr [r12+0x30] mov rdx, rax
- mov ecx, dword ptr [rbp-0x34] - ;; size=53 bbWeight=2 PerfScore 21.50
+ ;; size=50 bbWeight=2 PerfScore 19.50
G_M53318_IG19: ; bbWeight=4, gcrefRegs=100C {rdx rbx r12}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rsi, gword ptr [r12+0x18] @@ -456,9 +454,9 @@ G_M53318_IG19: ; bbWeight=4, gcrefRegs=100C {rdx rbx r12}, byrefRegs=0000 ; GC ptr vars +{V58} mov rdi, qword ptr [rdx+0x08] and rdi, -2
- jne SHORT G_M53318_IG22
+ jne SHORT G_M53318_IG21
;; size=56 bbWeight=4 PerfScore 65.00
-G_M53318_IG20: ; bbWeight=2, gcVars=0001000001800440 {V10 V54 V58 V75 V77}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M53318_IG20: ; bbWeight=2, gcVars=0001000003000440 {V10 V54 V58 V75 V77}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdx rsi r9] mov r8d, dword ptr [rbp-0x3C] mov r9, gword ptr [rbp-0x90] @@ -466,85 +464,73 @@ G_M53318_IG20: ; bbWeight=2, gcVars=0001000001800440 {V10 V54 V58 V75 V77 mov r10d, dword ptr [rbp-0x38] xor r11, r11 ; gcrRegs +[r11]
- jmp SHORT G_M53318_IG26
+ jmp SHORT G_M53318_IG25
;; size=20 bbWeight=2 PerfScore 10.50
-G_M53318_IG21: ; bbWeight=1, gcVars=0001000000000040 {V10 V54}, gcrefRegs=100C {rdx rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r9 r11] +[rdx] - ; GC ptr vars -{V10 V58 V75 V77} - mov ecx, dword ptr [rbp-0x34] - jmp SHORT G_M53318_IG19 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M53318_IG22: ; bbWeight=2, gcVars=0001000001800440 {V10 V54 V58 V75 V77}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rdx] - ; GC ptr vars +{V10 V23 V58 V75 V77}
+G_M53318_IG21: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r9 r11]
mov r8d, dword ptr [rbp-0x3C] mov r9, gword ptr [rbp-0x90] ; gcrRegs +[r9] mov r10d, dword ptr [rbp-0x38] test dil, 2
- jne SHORT G_M53318_IG23 - mov dword ptr [rbp-0x34], ecx
+ jne SHORT G_M53318_IG22
call <unknown method> ; gcrRegs -[r9] +[rax] mov r11, rax ; gcrRegs +[r11]
- jmp SHORT G_M53318_IG25 - ;; size=34 bbWeight=2 PerfScore 17.00 -G_M53318_IG23: ; bbWeight=2, gcrefRegs=1208 {rbx r9 r12}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M53318_IG24 + ;; size=31 bbWeight=2 PerfScore 15.00 +G_M53318_IG22: ; bbWeight=2, gcrefRegs=1208 {rbx r9 r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r11] +[r9]
- mov dword ptr [rbp-0x34], ecx
and rdi, -4 call <unknown method> ; gcrRegs -[r9] +[rax] mov gword ptr [rbp-0x98], rax ; GC ptr vars +{V86} mov rdi, qword ptr [rax+0x10]
- ; GC ptr vars -{V23}
call <unknown method> test rax, rax
- jne SHORT G_M53318_IG24
+ jne SHORT G_M53318_IG23
mov rdi, gword ptr [rbp-0x98] ; gcrRegs +[rdi] ; GC ptr vars -{V86} call [<unknown method>] ; gcrRegs -[rdi]
- ;; size=46 bbWeight=2 PerfScore 23.00 -G_M53318_IG24: ; bbWeight=2, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
+ ;; size=43 bbWeight=2 PerfScore 21.00 +G_M53318_IG23: ; bbWeight=2, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
mov r11, rax ; gcrRegs +[r11] ;; size=3 bbWeight=2 PerfScore 0.50
-G_M53318_IG25: ; bbWeight=2, gcrefRegs=1808 {rbx r11 r12}, byrefRegs=0000 {}, byref
+G_M53318_IG24: ; bbWeight=2, gcrefRegs=1808 {rbx r11 r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov r9, r11 ; gcrRegs +[r9] mov r11, r9
- mov ecx, dword ptr [rbp-0x34]
mov r8d, dword ptr [rbp-0x3C] mov r9, gword ptr [rbp-0x90] mov r10d, dword ptr [rbp-0x38]
- ;; size=24 bbWeight=2 PerfScore 9.00 -G_M53318_IG26: ; bbWeight=4, gcrefRegs=1A08 {rbx r9 r11 r12}, byrefRegs=0000 {}, byref
+ ;; size=21 bbWeight=2 PerfScore 7.00 +G_M53318_IG25: ; bbWeight=4, gcrefRegs=1A08 {rbx r9 r11 r12}, byrefRegs=0000 {}, byref
test r11, r11
- je G_M53318_IG35
...

-13 (-2.02%) : 3203.dasm - System.Linq.Enumerable:g_EnumerableToArray|2960ushort:ushort

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 26 single block inlinees; 22 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T13] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
+; V00 arg0 [V00,T12] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[ushort]> ; V02 loc1 [V02 ] ( 16, 12 ) struct (264) [rbp-0x140] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[ushort]> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <ushort[]> @@ -17,37 +17,37 @@ ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[ushort]> ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <ushort[]>
-; V09 tmp5 [V09,T22] ( 3, 2.50) int -> rsi "Inline stloc first use temp" -; V10 tmp6 [V10,T19] ( 6, 3.50) ref -> rbx class-hnd "Inline stloc first use temp" <ushort[]>
+; V09 tmp5 [V09,T21] ( 3, 2.50) int -> rsi "Inline stloc first use temp" +; V10 tmp6 [V10,T18] ( 6, 3.50) ref -> rbx class-hnd "Inline stloc first use temp" <ushort[]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <ushort[]> ;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ushort[]> ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V16 tmp12 [V16,T16] ( 8, 4 ) int -> r13 "Inline stloc first use temp"
+; V16 tmp12 [V16,T15] ( 8, 4 ) int -> r13 "Inline stloc first use temp"
; V17 tmp13 [V17 ] ( 3, 1.50) struct (16) [rbp-0x150] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]> ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort[]]> ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort[]]>
-; V22 tmp18 [V22,T01] ( 5, 16.50) int -> [rbp-0x154] "Inline stloc first use temp"
+; V22 tmp18 [V22,T02] ( 5, 16.50) int -> [rbp-0x154] "Inline stloc first use temp"
; V23 tmp19 [V23,T07] ( 4, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <ushort[]> ;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V27 tmp23 [V27,T17] ( 4, 4 ) int -> r12 "Inlining Arg" -; V28 tmp24 [V28,T24] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V27 tmp23 [V27,T16] ( 4, 4 ) int -> r12 "Inlining Arg" +; V28 tmp24 [V28,T23] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V34 tmp30 [V34,T27] ( 2, 2 ) long -> rax "Inlining Arg"
+; V34 tmp30 [V34,T26] ( 2, 2 ) long -> rax "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V38 tmp34 [V38,T21] ( 3, 3 ) int -> r14 "Inlining Arg" -; V39 tmp35 [V39,T25] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V38 tmp34 [V38,T20] ( 3, 3 ) int -> r14 "Inlining Arg" +; V39 tmp35 [V39,T24] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp37 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp38 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort[]]> @@ -59,7 +59,7 @@ ;* V48 tmp44 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V50 tmp46 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V51 tmp47 [V51,T04] ( 2, 16 ) long -> r8 "Inlining Arg"
+; V51 tmp47 [V51,T04] ( 2, 16 ) long -> rdx "Inlining Arg"
;* V52 tmp48 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V54 tmp50 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> @@ -67,20 +67,20 @@ ; V56 tmp52 [V56,T03] ( 2, 16 ) byref -> r15 "Inlining Arg" ;* V57 tmp53 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp54 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V59 tmp55 [V59,T18] ( 4, 4 ) int -> r13 "Inlining Arg"
+; V59 tmp55 [V59,T17] ( 4, 4 ) int -> r13 "Inlining Arg"
;* V60 tmp56 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V61 tmp57 [V61,T26] ( 2, 2 ) byref -> r12 single-def "Inlining Arg" -; V62 tmp58 [V62,T23] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V61 tmp57 [V61,T25] ( 2, 2 ) byref -> r12 single-def "Inlining Arg" +; V62 tmp58 [V62,T22] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
;* V63 tmp59 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T20] ( 3, 3 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP -;* V66 tmp62 [V66,T40] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T19] ( 3, 3 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP +;* V66 tmp62 [V66,T39] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V69 tmp65 [V69 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V70 tmp66 [V70 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V71 tmp67 [V71,T28] ( 3, 1.50) byref -> r15 "field V15._reference (fldOffset=0x0)" P-INDEP -; V72 tmp68 [V72,T29] ( 3, 1.50) int -> r14 "field V15._length (fldOffset=0x8)" P-INDEP
+; V71 tmp67 [V71,T27] ( 3, 1.50) byref -> r15 "field V15._reference (fldOffset=0x0)" P-INDEP +; V72 tmp68 [V72,T28] ( 3, 1.50) int -> r14 "field V15._length (fldOffset=0x8)" P-INDEP
; V73 tmp69 [V73 ] ( 2, 1 ) byref -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V17._reference (fldOffset=0x0)" P-DEP ; V74 tmp70 [V74 ] ( 2, 1 ) int -> [rbp-0x148] do-not-enreg[X] addr-exposed "field V17._length (fldOffset=0x8)" P-DEP ; V75 tmp71 [V75,T05] ( 8, 14.50) byref -> r15 "field V18._reference (fldOffset=0x0)" P-INDEP @@ -89,35 +89,34 @@ ;* V78 tmp74 [V78 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP ;* V79 tmp75 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP ;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V81 tmp77 [V81,T15] ( 2, 4.50) byref -> r12 single-def "field V21._reference (fldOffset=0x0)" P-INDEP -; V82 tmp78 [V82,T14] ( 3, 5 ) int -> r13 "field V21._length (fldOffset=0x8)" P-INDEP
+; V81 tmp77 [V81,T14] ( 2, 4.50) byref -> r12 single-def "field V21._reference (fldOffset=0x0)" P-INDEP +; V82 tmp78 [V82,T13] ( 3, 5 ) int -> r13 "field V21._length (fldOffset=0x8)" P-INDEP
;* V83 tmp79 [V83 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP ;* V84 tmp80 [V84 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V85 tmp81 [V85,T31] ( 2, 1 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP -; V86 tmp82 [V86,T36] ( 2, 1 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
+; V85 tmp81 [V85,T30] ( 2, 1 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP +; V86 tmp82 [V86,T35] ( 2, 1 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
;* V87 tmp83 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP ;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP ;* V89 tmp85 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP ;* V90 tmp86 [V90 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-; V91 tmp87 [V91,T32] ( 2, 1 ) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP -; V92 tmp88 [V92,T37] ( 2, 1 ) int -> r14 "field V37._length (fldOffset=0x8)" P-INDEP -; V93 tmp89 [V93,T33] ( 2, 1 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp87 [V91,T31] ( 2, 1 ) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP +; V92 tmp88 [V92,T36] ( 2, 1 ) int -> r14 "field V37._length (fldOffset=0x8)" P-INDEP +; V93 tmp89 [V93,T32] ( 2, 1 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp90 [V94 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V95 tmp91 [V95,T34] ( 2, 1 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V96 tmp92 [V96,T38] ( 2, 1 ) int -> r13 "field V43._length (fldOffset=0x8)" P-INDEP -; V97 tmp93 [V97,T10] ( 3, 8 ) byref -> rsi "field V47._reference (fldOffset=0x0)" P-INDEP -; V98 tmp94 [V98,T02] ( 5, 16 ) int -> [rbp-0x158] "field V47._length (fldOffset=0x8)" P-INDEP
+; V95 tmp91 [V95,T33] ( 2, 1 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP +; V96 tmp92 [V96,T37] ( 2, 1 ) int -> r13 "field V43._length (fldOffset=0x8)" P-INDEP +; V97 tmp93 [V97,T09] ( 3, 8 ) byref -> rsi "field V47._reference (fldOffset=0x0)" P-INDEP +; V98 tmp94 [V98,T01] ( 6, 20 ) int -> [rbp-0x158] "field V47._length (fldOffset=0x8)" P-INDEP
;* V99 tmp95 [V99 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP ;* V100 tmp96 [V100 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
-; V101 tmp97 [V101,T11] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP -; V102 tmp98 [V102,T12] ( 2, 8 ) int -> r14 "field V54._length (fldOffset=0x8)" P-INDEP -; V103 tmp99 [V103,T35] ( 2, 1 ) byref -> r12 single-def "field V60._reference (fldOffset=0x0)" P-INDEP -; V104 tmp100 [V104,T39] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0x8)" P-INDEP -; V105 cse0 [V105,T30] ( 3, 1.50) long -> [rbp-0x160] spill-single-def "CSE - conservative" -; V106 cse1 [V106,T08] ( 3, 12 ) long -> [rbp-0x168] spill-single-def "CSE - moderate" -; V107 cse2 [V107,T09] ( 9, 9 ) ref -> rsi multi-def "CSE - moderate"
+; V101 tmp97 [V101,T10] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP +; V102 tmp98 [V102,T11] ( 2, 8 ) int -> r14 "field V54._length (fldOffset=0x8)" P-INDEP +; V103 tmp99 [V103,T34] ( 2, 1 ) byref -> r12 single-def "field V60._reference (fldOffset=0x0)" P-INDEP +; V104 tmp100 [V104,T38] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0x8)" P-INDEP +; V105 cse0 [V105,T29] ( 3, 1.50) long -> [rbp-0x160] spill-single-def "CSE - conservative" +; V106 cse1 [V106,T08] ( 9, 9 ) ref -> rsi multi-def "CSE - moderate"
;
-; Lcl frame size = 328
+; Lcl frame size = 312
G_M32039_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -126,9 +125,9 @@ G_M32039_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 328
+ sub rsp, 312
vzeroupper
- lea rbp, [rsp+0x170]
+ lea rbp, [rsp+0x160]
vxorps xmm8, xmm8, xmm8 vmovdqa xmmword ptr [rbp-0x150], xmm8 vmovdqa xmmword ptr [rbp-0x140], xmm8 @@ -258,19 +257,18 @@ G_M32039_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=9040 {rsi r1 cmp ecx, r14d ja G_M32039_IG22 mov dword ptr [rbp-0x158], ecx
- mov r8d, ecx - add r8, r8 - mov qword ptr [rbp-0x168], r8 - mov rdx, r8
+ mov edx, ecx + add rdx, rdx
mov rdi, r15 ; byrRegs +[rdi] call [<unknown method>] ; byrRegs -[rsi rdi]
- mov rdi, qword ptr [rbp-0x168] - add r15, rdi - sub r14d, dword ptr [rbp-0x158]
+ mov edi, dword ptr [rbp-0x158] + mov esi, edi + lea r15, bword ptr [r15+2*rsi] + sub r14d, edi
jns SHORT G_M32039_IG13
- ;; size=59 bbWeight=4 PerfScore 46.00
+ ;; size=46 bbWeight=4 PerfScore 36.00
G_M32039_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -329,7 +327,7 @@ G_M32039_IG18: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25 G_M32039_IG19: ; bbWeight=1, epilog, nogc, extend
- add rsp, 328
+ add rsp, 312
pop rbx pop r12 pop r13 @@ -351,7 +349,7 @@ G_M32039_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 644, prolog size 87, PerfScore 162.17, instruction count 147, allocated bytes for code 644 (MethodHash=6f8582d8) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[ushort](System.Collections.Generic.IEnumerable`1[ushort]):ushort[] (FullOpts)
+Total bytes of code 631, prolog size 87, PerfScore 152.17, instruction count 146, allocated bytes for code 631 (MethodHash=6f8582d8) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[ushort](System.Collections.Generic.IEnumerable`1[ushort]):ushort[] (FullOpts)
; ============================================================ Unwind Info: @@ -365,7 +363,7 @@ Unwind Info: FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x11 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 41 * 8 = 328 = 0x00148
+ Size: 39 * 8 = 312 = 0x00138
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)

+18 (+0.64%) : 20723.dasm - Microsoft.CodeAnalysis.CommonReferenceManager2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager2+BoundInputAssembly[System.Canon,System.Canon][],System.Canon[],System.Collections.Immutable.ImmutableArray`1[System.Canon],int):this (FullOpts)

@@ -17,7 +17,7 @@ ; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]> ; V07 loc2 [V07,T62] ( 8, 28 ) int -> [rbp-0x34] spill-single-def ; V08 loc3 [V08,T58] ( 9, 33 ) int -> [rbp-0x38]
-; V09 loc4 [V09,T63] ( 6, 28 ) ref -> [rbp-0xA0] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V09 loc4 [V09,T63] ( 6, 44 ) ref -> [rbp-0xA0] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V10 loc5 [V10,T68] ( 2, 16 ) ref -> [rbp-0xA8] class-hnd spill-single-def <System.__Canon> ; V11 loc6 [V11,T35] ( 4, 112 ) ubyte -> [rbp-0x3C] ;* V12 loc7 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -67,7 +67,7 @@ ; V56 tmp34 [V56,T15] ( 8, 512 ) int -> r9 "Inline stloc first use temp" ;* V57 tmp35 [V57 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> ; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> rdi "Inlining Arg"
-; V59 tmp37 [V59,T60] ( 4, 32 ) int -> rsi "Inline stloc first use temp"
+; V59 tmp37 [V59,T60] ( 4, 32 ) int -> rcx "Inline stloc first use temp"
; V60 tmp38 [V60,T16] ( 12, 430 ) ref -> rbx single-def "field V03.array (fldOffset=0x0)" P-INDEP ; V61 tmp39 [V61,T27] ( 6, 192 ) ref -> [rbp-0xC8] "field V12.AssemblySymbol (fldOffset=0x0)" P-INDEP ; V62 tmp40 [V62,T21] ( 8, 256 ) int -> [rbp-0x5C] "field V12.DefinitionIndex (fldOffset=0x8)" P-INDEP @@ -112,10 +112,10 @@ ;* V101 cse2 [V101,T56] ( 0, 0 ) long -> zero-ref hoist multi-def "CSE - moderate" ;* V102 cse3 [V102,T79] ( 0, 0 ) long -> zero-ref "CSE - moderate" ; V103 cse4 [V103,T80] ( 3, 6.40) int -> r8 "CSE - conservative"
-; V104 cse5 [V104,T96] ( 3, 0.40) ref -> rsi "CSE - conservative"
+; V104 cse5 [V104,T96] ( 3, 0.40) ref -> rdx "CSE - conservative"
; V105 cse6 [V105,T13] ( 3, 633.60) int -> r8 "CSE - moderate" ; V106 cse7 [V106,T22] ( 6, 256 ) long -> [rbp-0x70] "CSE - moderate"
-; V107 cse8 [V107,T57] ( 3, 39.60) ref -> rsi "CSE - conservative"
+; V107 cse8 [V107,T57] ( 3, 39.60) ref -> rdx "CSE - conservative"
; V108 cse9 [V108,T18] ( 3, 380.16) int -> rsi "CSE - moderate" ; V109 cse10 [V109,T17] ( 3, 380.16) ref -> [rbp-0x108] spill-single-def "CSE - moderate" ; V110 cse11 [V110,T37] ( 3, 96 ) long -> [rbp-0x78] "CSE - moderate" @@ -307,7 +307,7 @@ G_M32652_IG13: ; bbWeight=0.40, gcVars=00000000000800000000000004004002 { ;; size=24 bbWeight=0.40 PerfScore 1.80 G_M32652_IG14: ; bbWeight=2, gcVars=00000000000800008000000004004002 {V00 V05 V06 V09 V99}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V83} +{V09 V63}
- jmp G_M32652_IG24
+ jmp G_M32652_IG64
;; size=5 bbWeight=2 PerfScore 4.00 G_M32652_IG15: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [r12+0x38] @@ -361,7 +361,7 @@ G_M32652_IG18: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov r8, gword ptr [rdi+0x08] ; gcrRegs +[r8] cmp esi, dword ptr [r8+0x08]
- jne G_M32652_IG26
+ jne G_M32652_IG31
inc esi ; GC ptr vars -{V10} call [System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]:Grow(int):this] @@ -381,7 +381,7 @@ G_M32652_IG19: ; bbWeight=8, gcrefRegs=C08C {rdx rbx rdi r14 r15}, byrefR ; gcrRegs +[rsi] mov r9d, dword ptr [rdi+0x14] cmp r9d, dword ptr [rsi+0x08]
- jae G_M32652_IG28
+ jae G_M32652_IG32
shl r9, 4 lea r9, bword ptr [rsi+r9+0x10] ; byrRegs +[r9] @@ -431,46 +431,79 @@ G_M32652_IG22: ; bbWeight=64, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs cmp dword ptr [rbp-0x3C], 0 je SHORT G_M32652_IG23 cmp dword ptr [rdi+0x18], 0
- jg SHORT G_M32652_IG29
+ jg SHORT G_M32652_IG34
;; size=12 bbWeight=64 PerfScore 448.00 G_M32652_IG23: ; bbWeight=8, gcVars=00000000000800008000000004004002 {V00 V05 V06 V09 V99}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V119} cmp dword ptr [rbp-0x3C], 0
- jne G_M32652_IG59
+ je G_M32652_IG64
;; size=10 bbWeight=8 PerfScore 24.00
-G_M32652_IG24: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M32652_IG24: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0xA0] - ; gcrRegs +[rdi] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rdi] - ; gcr arg pop 0 - test eax, eax - jne G_M32652_IG15 - ;; size=28 bbWeight=16 PerfScore 88.00 -G_M32652_IG25: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ xor eax, eax + mov ecx, dword ptr [rbp-0x34] + test ecx, ecx + jle SHORT G_M32652_IG30 + cmp dword ptr [r15+0x08], ecx + jl G_M32652_IG67 + mov edx, dword ptr [rbp-0x80] + cmp edx, ecx + jl SHORT G_M32652_IG29 + ;; size=26 bbWeight=2 PerfScore 17.50 +G_M32652_IG25: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + mov edx, eax + mov rdx, gword ptr [r15+8*rdx+0x10] + ; gcrRegs +[rdx] + test rdx, rdx + je SHORT G_M32652_IG27 + ;; size=12 bbWeight=15.84 PerfScore 55.44 +G_M32652_IG26: ; bbWeight=7.92, gcrefRegs=C00C {rdx rbx r14 r15}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x4C], eax + mov r8d, eax + shl r8, 4 + lea rdi, bword ptr [r14+r8+0x10] + ; byrRegs +[rdi] + mov rsi, rdx + ; gcrRegs +[rsi] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rdx rsi] + ; byrRegs -[rdi] + mov eax, dword ptr [rbp-0x4C] + ;; size=26 bbWeight=7.92 PerfScore 39.60 +G_M32652_IG27: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + inc eax + cmp eax, dword ptr [rbp-0x34] + jl SHORT G_M32652_IG25 + ;; size=7 bbWeight=15.84 PerfScore 51.48 +G_M32652_IG28: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
jmp G_M32652_IG71 ;; size=5 bbWeight=2 PerfScore 4.00
-G_M32652_IG26: ; bbWeight=4, gcVars=00000000000800208000000004004002 {V00 V05 V06 V09 V63 V99}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M32652_IG29: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref + mov ecx, dword ptr [rbp-0x34] + jmp G_M32652_IG67 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M32652_IG30: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref + jmp G_M32652_IG71 + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M32652_IG31: ; bbWeight=4, gcVars=00000000000800208000000004004002 {V00 V05 V06 V09 V63 V99}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] ; GC ptr vars +{V63} mov rdx, gword ptr [rbp-0xD0] ; gcrRegs +[rdx] jmp G_M32652_IG19 ;; size=12 bbWeight=4 PerfScore 12.00
-G_M32652_IG27: ; bbWeight=0, gcVars=00000000000000008000000004004002 {V00 V05 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32652_IG32: ; bbWeight=0, gcVars=00000000000000008000000004004002 {V00 V05 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdx rbx rdi r14-r15] ; GC ptr vars -{V63 V99}
+ call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M32652_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M32652_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M32652_IG29: ; bbWeight=32, gcVars=00000000000800008000000204004002 {V00 V05 V06 V09 V99 V119}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32652_IG34: ; bbWeight=32, gcVars=00000000000800008000000204004002 {V00 V05 V06 V09 V99 V119}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rdi r14-r15] ; GC ptr vars +{V83 V99 V119} call [System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]:Dequeue():Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]:this] @@ -478,16 +511,16 @@ G_M32652_IG29: ; bbWeight=32, gcVars=00000000000800008000000204004002 {V0 ; gcr arg pop 0 mov ecx, edx cmp ecx, dword ptr [rbp-0x80]
- jae SHORT G_M32652_IG28
+ jae SHORT G_M32652_IG32
mov r8d, ecx shl r8, 4 mov qword ptr [rbp-0x78], r8 mov rdi, gword ptr [r14+r8+0x10] ; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M32652_IG30
+ jne SHORT G_M32652_IG35
cmp ecx, dword ptr [r15+0x08]
- jae SHORT G_M32652_IG28
+ jae SHORT G_M32652_IG32
mov dword ptr [rbp-0x5C], ecx mov edi, ecx ; gcrRegs -[rdi] @@ -495,15 +528,15 @@ G_M32652_IG29: ; bbWeight=32, gcVars=00000000000800008000000204004002 {V0 ; gcrRegs +[rdi] mov ecx, dword ptr [rbp-0x5C] ;; size=53 bbWeight=32 PerfScore 624.00
-G_M32652_IG30: ; bbWeight=32, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG35: ; bbWeight=32, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je SHORT G_M32652_IG31
+ je SHORT G_M32652_IG36
cmp rdi, rax mov rdi, gword ptr [rbp-0x90] je G_M32652_IG22
- jmp G_M32652_IG24
+ jmp G_M32652_IG64
;; size=26 bbWeight=32 PerfScore 176.00
-G_M32652_IG31: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M32652_IG36: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov dword ptr [rbp-0x5C], ecx mov rdi, gword ptr [rbp-0x88] @@ -521,7 +554,7 @@ G_M32652_IG31: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs mov dword ptr [rbp-0x12C], eax mov ecx, dword ptr [rbp-0x5C] cmp ecx, dword ptr [rbp-0x7C]
- jae G_M32652_IG28
+ jae G_M32652_IG32
mov dword ptr [rbp-0x5C], ecx mov edi, ecx mov rdi, gword ptr [rbx+8*rdi+0x10] @@ -532,7 +565,7 @@ G_M32652_IG31: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs ; gcrRegs -[rdi] ; gcr arg pop 0 cmp dword ptr [rbp-0x12C], eax
- jne G_M32652_IG24
+ jne G_M32652_IG64
mov rcx, gword ptr [rbp-0xC8] ; gcrRegs +[rcx] mov esi, dword ptr [rbp-0x5C] @@ -572,64 +605,64 @@ G_M32652_IG31: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs mov dword ptr [rbp-0x40], eax xor ecx, ecx test eax, eax
- jle G_M32652_IG54
+ jle G_M32652_IG59
mov rdx, gword ptr [rbp-0xB0] ; gcrRegs +[rdx] test rdx, rdx
- je G_M32652_IG44
+ je G_M32652_IG49
cmp dword ptr [rdx+0x08], eax ;; size=215 bbWeight=32 PerfScore 1952.00
-G_M32652_IG32: ; bbWeight=32, isz, extend - jl SHORT G_M32652_IG36
+G_M32652_IG37: ; bbWeight=32, isz, extend + jl SHORT G_M32652_IG41
;; size=2 bbWeight=32 PerfScore 32.00
-G_M32652_IG33: ; bbWeight=253.44, gcrefRegs=C04C {rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG38: ; bbWeight=253.44, gcrefRegs=C04C {rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, ecx shl rdi, 4 mov r8d, dword ptr [rdx+rdi+0x18] test r8d, r8d
- jge SHORT G_M32652_IG37
+ jge SHORT G_M32652_IG42
;; size=16 bbWeight=253.44 PerfScore 1013.76
-G_M32652_IG34: ; bbWeight=126.72, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
+G_M32652_IG39: ; bbWeight=126.72, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] cmp ecx, dword ptr [rsi+0x10]
- jae G_M32652_IG27
+ jae G_M32652_IG33
mov r9, gword ptr [rsi+0x08] ...

+14 (+3.47%) : 25517.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T13] ( 5, 28 ) long -> rdi ; V02 loc1 [V02,T14] ( 5, 24 ) int -> r14 ; V03 loc2 [V03,T12] ( 5, 28.50) ref -> r13 class-hnd exact <System.String>
-; V04 loc3 [V04,T04] ( 8, 50 ) int -> r12
+; V04 loc3 [V04,T05] ( 8, 50 ) int -> r12
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax ; V06 loc5 [V06,T08] ( 3, 40 ) ref -> rcx class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> [rbp-0x2C] @@ -33,9 +33,9 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T18] ( 4, 5 ) ref -> rax "Single return block return value" ; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V25 cse0 [V25,T05] ( 6, 49 ) int -> r15 "CSE - aggressive"
+; V25 cse0 [V25,T03] ( 8, 57 ) int -> r15 "CSE - aggressive"
; V26 cse1 [V26,T07] ( 5, 40 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V27 cse2 [V27,T03] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
+; V27 cse2 [V27,T04] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -58,10 +58,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp r15d, 1 jle G_M46295_IG16 ;; size=23 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor edi, edi xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test r15d, r15d + jle SHORT G_M46295_IG07 + ;; size=9 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, eax mov rcx, gword ptr [rbx+8*rcx+0x10] @@ -94,7 +96,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r12d, r12d xor eax, eax ; gcrRegs -[rax]
- ;; size=41 bbWeight=4 PerfScore 19.00
+ test r15d, r15d + jle G_M46295_IG15 + ;; size=50 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz mov dword ptr [rbp-0x2C], eax mov edi, eax @@ -249,7 +253,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 403, prolog size 22, PerfScore 585.25, instruction count 115, allocated bytes for code 403 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 417, prolog size 22, PerfScore 595.25, instruction count 119, allocated bytes for code 417 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info:

+48 (+9.62%) : 774.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (FullOpts)

@@ -10,10 +10,10 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T03] ( 7, 19 ) int -> r15
-; V02 arg2 [V02,T04] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]> -; V03 loc0 [V03,T01] ( 14, 28.50) int -> r12
+; V02 arg2 [V02,T05] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]> +; V03 loc0 [V03,T00] ( 16, 33 ) int -> r12
; V04 loc1 [V04,T09] ( 3, 12 ) int -> [rbp-0x2C] spill-single-def
-; V05 loc2 [V05,T05] ( 4, 16 ) int -> rdi
+; V05 loc2 [V05,T06] ( 4, 16 ) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -44,13 +44,13 @@ ;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T00] ( 4, 32 ) int -> r12 "Inlining Arg"
+; V36 tmp30 [V36,T01] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V38 tmp32 [V38,T06] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V38 tmp32 [V38,T07] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V41 tmp35 [V41,T02] ( 29, 22 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp36 [V42,T07] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T08] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP @@ -79,7 +79,7 @@ ; V68 tmp62 [V68,T15] ( 2, 2 ) int -> rsi "argument with side effect" ; V69 tmp63 [V69,T16] ( 2, 2 ) int -> rsi "argument with side effect" ; V70 tmp64 [V70,T17] ( 2, 2 ) int -> rsi "argument with side effect"
-; V71 cse0 [V71,T08] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -138,16 +138,28 @@ G_M15629_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx G_M15629_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref mov r12d, r13d cmp r13d, 1
- jle G_M15629_IG20
+ jle G_M15629_IG23
;; size=13 bbWeight=1 PerfScore 1.50 G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz cmp r12d, 16
- jle G_M15629_IG13
+ jle G_M15629_IG15
test r15d, r15d
- je G_M15629_IG19
+ je G_M15629_IG21
dec r15d cmp r12d, r13d
- ja G_M15629_IG23
+ ja G_M15629_IG26 + test r12d, r12d + jge SHORT G_M15629_IG11 + ;; size=36 bbWeight=4 PerfScore 21.00 +G_M15629_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d mov rdi, rbx ; byrRegs +[rdi] @@ -164,15 +176,15 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, add rsi, rcx mov ecx, r13d cmp rsi, rcx
- ja G_M15629_IG23
+ ja G_M15629_IG26
lea rcx, bword ptr [rbx+4*rdi] ; byrRegs +[rcx] mov bword ptr [rbp-0x38], rcx ; GC ptr vars +{V38} test r12d, r12d
- jge SHORT G_M15629_IG11 - ;; size=88 bbWeight=4 PerfScore 58.00 -G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M15629_IG13 + ;; size=57 bbWeight=4 PerfScore 42.00 +G_M15629_IG12: ; bbWeight=2, gcVars=0000000000000080 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -181,7 +193,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=400 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r12d @@ -196,16 +208,16 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, cmp r12d, 1 jg G_M15629_IG09 ;; size=33 bbWeight=4 PerfScore 28.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] ; byrRegs -[rbx]
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] ; byrRegs +[rbx] cmp r12d, 2
- jne SHORT G_M15629_IG14
+ jne SHORT G_M15629_IG16
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov rdi, gword ptr [r14+0x08] @@ -213,17 +225,17 @@ G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi r14] test eax, eax
- jle G_M15629_IG20
+ jle G_M15629_IG23
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov dword ptr [rbx], edx mov dword ptr [rbx+0x04], esi
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=42 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] cmp r12d, 3
- jne SHORT G_M15629_IG17
+ jne SHORT G_M15629_IG19
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov rdi, gword ptr [r14+0x08] @@ -231,29 +243,29 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M15629_IG15
+ jle SHORT G_M15629_IG17
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov dword ptr [rbx], edx mov dword ptr [rbx+0x04], esi ;; size=33 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx] cmp r13d, 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
mov edx, dword ptr [rbx+0x08] mov rdi, gword ptr [r14+0x08] ; gcrRegs +[rdi] call [r14+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x08] mov dword ptr [rbx], edx mov dword ptr [rbx+0x08], esi ;; size=37 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx+0x04] mov edx, dword ptr [rbx+0x08] mov rdi, gword ptr [r14+0x08] @@ -261,19 +273,19 @@ G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi r14] test eax, eax
- jle SHORT G_M15629_IG20
+ jle SHORT G_M15629_IG23
mov edi, dword ptr [rbx+0x04] mov esi, dword ptr [rbx+0x08] mov dword ptr [rbx+0x04], esi mov dword ptr [rbx+0x08], edi
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=32 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
test r12d, r12d
- jge SHORT G_M15629_IG18
+ jge SHORT G_M15629_IG20
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -281,7 +293,7 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d mov rdi, rbx ; byrRegs +[rdi] @@ -290,13 +302,23 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[rdx r14] ; byrRegs -[rbx rdi]
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] ; byrRegs +[rbx] cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26 + test r12d, r12d + jge SHORT G_M15629_IG22 + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=29 bbWeight=0.50 PerfScore 3.00 +G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, rbx ; byrRegs +[rdi] mov esi, r12d @@ -305,11 +327,11 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[rdx r14] ; byrRegs -[rbx rdi]
- ;; size=20 bbWeight=0.50 PerfScore 2.50 -G_M15629_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 1.88 +G_M15629_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ...

benchmarks.run_pgo.linux.x64.checked.mch

-22 (-4.63%) : 25268.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)

@@ -23,7 +23,7 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]> ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ; V12 tmp6 [V12,T05] ( 2,399.96) long -> rsi "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> r12 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> r12 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> rax class-hnd "Inlining Arg" <System.__Canon> @@ -39,9 +39,9 @@ ; V26 tmp20 [V26,T03] ( 2,400 ) ref -> rsi class-hnd "Inlining Arg" <System.__Canon> ;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP ;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> [rbp-0x38] "V04.[000..008)" -; V30 tmp24 [V30,T14] ( 4,101.01) int -> [rbp-0x2C] "V04.[008..012)" -; V31 tmp25 [V31,T07] ( 6,301.01) int -> [rbp-0x30] "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> [rbp-0x38] "V04.[000..008)" +; V30 tmp24 [V30,T14] ( 3,101.01) int -> [rbp-0x2C] "V04.[008..012)" +; V31 tmp25 [V31,T06] ( 6,301.01) int -> [rbp-0x30] "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> r10 "V04.[024..032)" ; V33 tmp27 [V33,T11] ( 3,199.99) long -> rdx "V04.[032..040)" ;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)" @@ -86,15 +86,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ;; size=23 bbWeight=1 PerfScore 3.25 G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz test r12d, r12d
- je SHORT G_M19783_IG09
+ je SHORT G_M19783_IG06
;; size=5 bbWeight=0.01 PerfScore 0.01 G_M19783_IG04: ; bbWeight=7.99, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19783_IG09
+ jmp SHORT G_M19783_IG06
;; size=2 bbWeight=7.99 PerfScore 15.99 G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] cmp r13d, edi
- jae G_M19783_IG16
+ jae G_M19783_IG14
mov edi, r13d mov rdi, gword ptr [rbx+8*rdi+0x10] ; gcrRegs +[rdi] @@ -115,14 +115,18 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 ;; size=55 bbWeight=0.01 PerfScore 0.20 G_M19783_IG06: ; bbWeight=100, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz ; GC ptr vars -{V29}
+ mov r12d, 1 + mov dword ptr [rbp-0x2C], r8d + cmp r8d, dword ptr [rax+0x44] + jne G_M19783_IG19
mov r9d, dword ptr [rax+0x38]
- jmp SHORT G_M19783_IG12 - ;; size=6 bbWeight=100 PerfScore 400.00 -G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=C409 {rax rbx r10 r14 r15}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M19783_IG10 + ;; size=26 bbWeight=100 PerfScore 925.00 +G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=C409 {rax rbx r10 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r10]
+ mov dword ptr [rbp-0x30], edi
mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V29}
- mov dword ptr [rbp-0x30], edi
shl rdx, 2 movsxd rsi, r13d or rsi, rdx @@ -136,23 +140,15 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=C409 {rax rbx r10 r14 r15}, by ; gcrRegs -[rax rdx rdi r10] ; gcr arg pop 0 test eax, eax
- je G_M19783_IG17 - ;; size=45 bbWeight=99.99 PerfScore 1099.89 -G_M19783_IG08: ; bbWeight=50.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ je SHORT G_M19783_IG15
mov rax, gword ptr [rbp-0x38] ; gcrRegs +[rax] mov edi, dword ptr [rbp-0x30] mov r8d, dword ptr [rbp-0x2C]
- ;; size=11 bbWeight=50.00 PerfScore 149.99 -G_M19783_IG09: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars -{V29} - mov r12d, 1 - mov dword ptr [rbp-0x2C], r8d - cmp r8d, dword ptr [rax+0x44] - jne G_M19783_IG22
jmp SHORT G_M19783_IG06
- ;; size=22 bbWeight=100 PerfScore 725.00 -G_M19783_IG10: ; bbWeight=100, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=54 bbWeight=99.99 PerfScore 1599.84 +G_M19783_IG08: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars -{V29}
mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V29} mov rsi, gword ptr [rax+0x10] @@ -160,28 +156,28 @@ G_M19783_IG10: ; bbWeight=100, gcrefRegs=C009 {rax rbx r14 r15}, byrefReg lea edx, [rdi+0x01] mov dword ptr [rbp-0x30], edx cmp edi, dword ptr [rsi+0x08]
- jae SHORT G_M19783_IG16
+ jae SHORT G_M19783_IG14
mov edi, edi lea rdi, [rdi+2*rdi] lea rdi, bword ptr [rsi+8*rdi+0x10] ; byrRegs +[rdi] cmp dword ptr [rdi+0x14], -1
- jge SHORT G_M19783_IG13
+ jge SHORT G_M19783_IG11
;; size=36 bbWeight=100 PerfScore 1425.00
-G_M19783_IG11: ; bbWeight=50, gcVars=0000000000000040 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG09: ; bbWeight=50, gcVars=0000000000000080 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rsi] ; byrRegs -[rdi] mov rax, gword ptr [rbp-0x38] ; gcrRegs +[rax] mov edi, dword ptr [rbp-0x30] ;; size=7 bbWeight=50 PerfScore 100.00
-G_M19783_IG12: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19783_IG10: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V29} cmp edi, r9d
- jae SHORT G_M19783_IG19 - jmp SHORT G_M19783_IG10
+ jae SHORT G_M19783_IG16 + jmp SHORT G_M19783_IG08
;; size=7 bbWeight=100 PerfScore 325.00
-G_M19783_IG13: ; bbWeight=100, gcVars=0000000000000040 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080 {rdi}, gcvars, byref
+G_M19783_IG11: ; bbWeight=100, gcVars=0000000000000080 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs -[rax] ; byrRegs +[rdi] ; GC ptr vars +{V29} @@ -199,26 +195,26 @@ G_M19783_IG13: ; bbWeight=100, gcVars=0000000000000040 {V29}, gcrefRegs=C ; gcrRegs +[r10] mov r11d, 1 ;; size=26 bbWeight=100 PerfScore 675.00
-G_M19783_IG14: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C409 {rax rbx r10 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG12: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C409 {rax rbx r10 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi] ; GC ptr vars -{V29} test r11d, r11d jne G_M19783_IG07 ;; size=9 bbWeight=100 PerfScore 125.00
-G_M19783_IG15: ; bbWeight=0.01, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r10] inc r13d mov edi, dword ptr [rbx+0x08] cmp edi, r13d
- jle SHORT G_M19783_IG20
+ jle SHORT G_M19783_IG17
jmp G_M19783_IG05 ;; size=16 bbWeight=0.01 PerfScore 0.05
-G_M19783_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r14-r15] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcVars=0000000000000040 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19783_IG15: ; bbWeight=0, gcVars=0000000000000080 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx r14-r15] ; GC ptr vars +{V29} mov rdi, 0xD1FFAB1E @@ -228,34 +224,24 @@ G_M19783_IG17: ; bbWeight=0, gcVars=0000000000000040 {V29}, gcrefRegs=C00 call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- mov r12d, 1 - mov esi, dword ptr [rbp-0x2C] - mov rdi, gword ptr [rbp-0x38] - ; gcrRegs +[rdi] - cmp esi, dword ptr [rdi+0x44] - mov dword ptr [rbp-0x2C], esi - mov rax, rdi
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- je SHORT G_M19783_IG18 - jmp SHORT G_M19783_IG22 - ;; size=52 bbWeight=0 PerfScore 0.00 -G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdi] - ; GC ptr vars -{V29}
mov edi, dword ptr [rbp-0x30]
+ mov r8d, dword ptr [rbp-0x2C]
jmp G_M19783_IG06
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M19783_IG19: ; bbWeight=0, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz - lea edi, [r9+0x01] - mov esi, edi
+ ;; size=42 bbWeight=0 PerfScore 0.00 +G_M19783_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars -{V29} + lea edx, [r9+0x01] + mov esi, edx
xor r10, r10 ; gcrRegs +[r10] xor edx, edx xor r11d, r11d mov edi, esi
- jmp SHORT G_M19783_IG14
+ jmp SHORT G_M19783_IG12
;; size=18 bbWeight=0 PerfScore 0.00
-G_M19783_IG20: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+G_M19783_IG17: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r10] mov rax, gword ptr [r15+0x08] ; gcrRegs +[rax] @@ -268,7 +254,7 @@ G_M19783_IG20: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=15 bbWeight=0 PerfScore 0.00
-G_M19783_IG21: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
add rsp, 296 pop rbx pop r12 @@ -278,14 +264,14 @@ G_M19783_IG21: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=0 PerfScore 0.00
-G_M19783_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 475, prolog size 82, PerfScore 5061.13, instruction count 123, allocated bytes for code 475 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 453, prolog size 82, PerfScore 5211.09, instruction count 117, allocated bytes for code 453 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================ Unwind Info:

-48 (-2.94%) : 19373.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)

@@ -23,8 +23,8 @@ ;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]> ;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ptr ; V14 loc12 [V14,T04] ( 15, 43 ) int -> [rbp-0x94] ptr
-; V15 loc13 [V15,T11] ( 8, 18 ) int -> [rbp-0x98] spill-single-def ptr -; V16 loc14 [V16,T18] ( 4, 12 ) int -> [rbp-0x9C] spill-single-def ptr
+; V15 loc13 [V15,T11] ( 7, 18 ) int -> [rbp-0x98] spill-single-def ptr +; V16 loc14 [V16,T17] ( 4, 12 ) int -> [rbp-0x9C] spill-single-def ptr
; V17 loc15 [V17,T03] ( 6, 60 ) long -> [rbp-0xA8] ptr ; V18 loc16 [V18,T10] ( 3, 22 ) int -> r14 ; V19 loc17 [V19,T02] ( 13,114 ) long -> [rbp-0xB0] ptr @@ -38,7 +38,7 @@ ; V27 tmp5 [V27,T31] ( 3, 6 ) int -> rax "Span.get_Item index" ; V28 tmp6 [V28,T63] ( 2, 2 ) int -> rax "Span.get_Item index" ; V29 tmp7 [V29,T57] ( 5, 3 ) int -> rax
-; V30 tmp8 [V30,T24] ( 3, 8 ) int -> rdi
+; V30 tmp8 [V30,T23] ( 3, 8 ) int -> rdi
; V31 tmp9 [V31,T16] ( 5, 12 ) int -> rdx ;* V32 tmp10 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[uint]> ;* V33 tmp11 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]> @@ -64,8 +64,8 @@ ;* V53 tmp31 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp33 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V56 tmp34 [V56,T19] ( 3, 12 ) int -> [rbp-0xBC] spill-single-def ptr "Inlining Arg" -; V57 tmp35 [V57,T25] ( 2, 8 ) byref -> r14 "Inlining Arg"
+; V56 tmp34 [V56,T18] ( 3, 12 ) int -> [rbp-0xBC] spill-single-def ptr "Inlining Arg" +; V57 tmp35 [V57,T24] ( 2, 8 ) byref -> r14 "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V59 tmp37 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp38 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -77,8 +77,8 @@ ;* V66 tmp44 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V67 tmp45 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V69 tmp47 [V69,T17] ( 5, 12 ) int -> [rbp-0xC0] ptr "Inlining Arg" -; V70 tmp48 [V70,T23] ( 3, 8 ) byref -> r12 "Inlining Arg"
+; V69 tmp47 [V69,T19] ( 3, 12 ) int -> [rbp-0xC0] spill-single-def ptr "Inlining Arg" +; V70 tmp48 [V70,T25] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V71 tmp49 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V72 tmp50 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -92,7 +92,7 @@ ; V81 tmp59 [V81,T46] ( 2, 4 ) long -> rax "Inlining Arg" ; V82 tmp60 [V82,T47] ( 2, 4 ) long -> rdx "Inlining Arg" ; V83 tmp61 [V83,T14] ( 7, 15 ) byref -> rbx single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp62 [V84,T09] ( 15, 28 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
+; V84 tmp62 [V84,T09] ( 14, 28 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
; V85 tmp63 [V85,T13] ( 6, 7 ) byref -> [rbp-0x100] spill-single-def ptr "field V05._reference (fldOffset=0x0)" P-INDEP ; V86 tmp64 [V86,T08] ( 15, 21.50) int -> r13 "field V05._length (fldOffset=0x8)" P-INDEP ; V87 tmp65 [V87,T20] ( 7, 8 ) byref -> [rbp-0x108] spill-single-def ptr "field V06._reference (fldOffset=0x0)" P-INDEP @@ -134,7 +134,7 @@ ; V123 GsCookie [V123 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V124 tmp102 [V124,T60] ( 3, 3 ) struct (16) [rbp-0xD8] do-not-enreg[SFA] multireg-arg ptr "shadowVar" <System.UInt128> ; V125 tmp103 [V125,T61] ( 3, 3 ) struct (16) [rbp-0xE8] do-not-enreg[SFA] multireg-arg ptr "shadowVar" <System.UInt128>
-; V126 cse0 [V126,T30] ( 4, 6 ) byref -> r12 "CSE - conservative"
+; V126 cse0 [V126,T30] ( 3, 6 ) byref -> r12 "CSE - conservative"
; V127 cse1 [V127,T12] ( 4, 16 ) int -> [rbp-0xEC] spill-single-def "CSE - moderate" ; V128 cse2 [V128,T26] ( 6, 7.50) int -> registers multi-def "CSE - moderate" ; V129 cse3 [V129,T05] ( 3, 40 ) long -> [rbp-0xF8] spill-single-def "CSE - aggressive" @@ -190,7 +190,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov r15d, edi neg r15d add r15d, 4
- js G_M55503_IG50
+ js G_M55503_IG48
lea r14, [rbp-0x50] mov dword ptr [r14], ecx mov rdi, rcx @@ -215,7 +215,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov r13d, edi neg r13d add r13d, 4
- js G_M55503_IG50
+ js G_M55503_IG48
mov bword ptr [rbp-0x100], r14 ; GC ptr vars +{V85} lea r12, [rbp-0x60] @@ -228,7 +228,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref inc eax mov dword ptr [rbp-0xB8], eax cmp eax, 4
- ja G_M55503_IG50
+ ja G_M55503_IG48
mov edi, eax ;; size=271 bbWeight=1 PerfScore 49.33 G_M55503_IG03: ; bbWeight=1, isz, extend @@ -309,7 +309,7 @@ G_M55503_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4008 {rbx r1 G_M55503_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4008 {rbx r14}, byref mov ecx, r15d cmp r15d, r13d
- jl G_M55503_IG37
+ jl G_M55503_IG38
;; size=12 bbWeight=1 PerfScore 1.50 G_M55503_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4008 {rbx r14}, byref, isz mov esi, ecx @@ -441,11 +441,11 @@ G_M55503_IG26: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by G_M55503_IG27: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov qword ptr [rbp-0xB0], rdx test rdx, rdx
- je G_M55503_IG32
+ je G_M55503_IG33
;; size=16 bbWeight=8 PerfScore 18.00 G_M55503_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref cmp esi, r15d
- ja G_M55503_IG50
+ ja G_M55503_IG48
mov r8d, esi lea r12, bword ptr [rbx+4*r8] ; byrRegs +[r12] @@ -458,7 +458,7 @@ G_M55503_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr mov dword ptr [rbp-0x94], ecx jl G_M55503_IG45 ;; size=47 bbWeight=2 PerfScore 12.00
-G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=5008 {rbx r12 r14}, byref
+G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=5008 {rbx r12 r14}, byref, isz
mov rdi, r14 ; byrRegs +[rdi] mov esi, r8d @@ -474,15 +474,25 @@ G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=5008 {rbx r12 r je G_M55503_IG42 inc r14d cmp eax, r14d
- jne G_M55503_IG46
+ je SHORT G_M55503_IG30 + mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ; gcr arg pop 0 + ;; size=79 bbWeight=2 PerfScore 26.00 +G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, byref
mov r14d, dword ptr [rbp-0x98] mov edi, r15d sub edi, r14d mov esi, edi
+ mov dword ptr [rbp-0xC0], esi
test esi, esi
- jl G_M55503_IG41 - ;; size=80 bbWeight=2 PerfScore 25.00 -G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, byref
+ jl G_M55503_IG46 + ;; size=29 bbWeight=2 PerfScore 8.00 +G_M55503_IG31: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, byref
mov rdi, r12 ; byrRegs +[rdi] mov rdx, bword ptr [rbp-0x100] @@ -495,35 +505,35 @@ G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, dec r12 cmp eax, 1 mov qword ptr [rbp-0xB0], r12
- jne G_M55503_IG49
+ jne G_M55503_IG47
;; size=45 bbWeight=2 PerfScore 16.00
-G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55503_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov esi, r14d mov ecx, dword ptr [rbp-0x94] ;; size=9 bbWeight=1 PerfScore 1.25
-G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbp-0xC4] cmp esi, r14d
- jae SHORT G_M55503_IG34
+ jae SHORT G_M55503_IG35
;; size=12 bbWeight=4 PerfScore 9.00
-G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov eax, esi mov r12, bword ptr [rbp-0x108] ; byrRegs +[r12] mov rdx, qword ptr [rbp-0xB0] mov dword ptr [r12+4*rax], edx ;; size=20 bbWeight=2 PerfScore 6.50
-G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[r12] cmp ecx, r15d
- jae SHORT G_M55503_IG36
+ jae SHORT G_M55503_IG37
;; size=5 bbWeight=4 PerfScore 5.00
-G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55503_IG36: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov ecx, ecx xor eax, eax mov dword ptr [rbx+4*rcx], eax ;; size=7 bbWeight=2 PerfScore 3.00
-G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M55503_IG37: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [rbp-0xEC] mov r8d, ecx cmp r8d, r13d @@ -531,9 +541,9 @@ G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr mov r9d, dword ptr [rbp-0x84] mov r10d, dword ptr [rbp-0x88] mov r11d, dword ptr [rbp-0x8C]
- jge SHORT G_M55503_IG40
+ jge SHORT G_M55503_IG41
;; size=38 bbWeight=4 PerfScore 23.00
-G_M55503_IG37: ; bbWeight=1, gcVars=00000000000000000000000000100000 {V87}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55503_IG38: ; bbWeight=1, gcVars=00000000000000000000000000100000 {V87}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rbx] ; GC ptr vars -{V85} mov r12, bword ptr [rbp-0x108] @@ -548,16 +558,16 @@ G_M55503_IG37: ; bbWeight=1, gcVars=00000000000000000000000000100000 {V87 or rax, rdi mov rdi, 0xD1FFAB1E cmp qword ptr [rbp-0x30], rdi
- je SHORT G_M55503_IG38
+ je SHORT G_M55503_IG39
; GC ptr vars -{V87} call CORINFO_HELP_FAIL_FAST ; byrRegs -[r12] ; gcr arg pop 0 ;; size=61 bbWeight=1 PerfScore 14.75
-G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55503_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M55503_IG39: ; bbWeight=1, epilog, nogc, extend
+G_M55503_IG40: ; bbWeight=1, epilog, nogc, extend
add rsp, 232 pop rbx pop r12 @@ -567,7 +577,7 @@ G_M55503_IG39: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=1 PerfScore 4.25
-G_M55503_IG40: ; bbWeight=2, gcVars=00000000000000000000000000102000 {V85 V87}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M55503_IG41: ; bbWeight=2, gcVars=00000000000000000000000000102000 {V85 V87}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs +[rbx] ; GC ptr vars +{V85 V87} mov r8d, dword ptr [rbp-0x90] @@ -575,16 +585,11 @@ G_M55503_IG40: ; bbWeight=2, gcVars=00000000000000000000000000102000 {V85 ; byrRegs +[r14] jmp G_M55503_IG11 ;; size=19 bbWeight=2 PerfScore 8.00
-G_M55503_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, byref - ; byrRegs -[r14] +[r12] - mov dword ptr [rbp-0xC0], esi - jmp G_M55503_IG47 - ;; size=11 bbWeight=1 PerfScore 3.00
G_M55503_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[r12]
+ ; byrRegs -[r14]
mov ecx, dword ptr [rbp-0x94] mov esi, dword ptr [rbp-0x98]
- jmp G_M55503_IG32
...

-37 (-1.83%) : 153415.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d24[System.Canon]:MoveNext():this (Tier1-OSR)

@@ -17,7 +17,7 @@ ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon[]> ; V05 loc3 [V05 ] ( 5, 600.55) struct (16) [rbp+0x108] do-not-enreg[XSFR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Threading.Tasks.ValueTask> ; V06 loc4 [V06,T32] ( 1, 1 ) struct ( 8) [rbp+0x100] do-not-enreg[S] ld-addr-op tier0-frame <System.Threading.CancellationToken>
-; V07 loc5 [V07 ] ( 8, 1.79) struct (16) [rbp+0xF0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter>
+; V07 loc5 [V07 ] ( 8, 1.49) struct (16) [rbp+0xF0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter>
;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref ; V09 loc7 [V09 ] ( 6, 1 ) struct ( 8) [rbp+0xE0] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.TaskAwaiter> ; V10 loc8 [V10,T110] ( 2, 0 ) ref -> rsi class-hnd <System.Exception> @@ -44,12 +44,12 @@ ;* V31 tmp20 [V31,T98] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var" ;* V32 tmp21 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[System.__Canon]> ;* V33 tmp22 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V34 tmp23 [V34,T79] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+;* V34 tmp23 [V34,T78] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V35 tmp24 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <<unknown class>> ;* V37 tmp26 [V37 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-;* V38 tmp27 [V38,T68] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V39 tmp28 [V39,T37] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]>
+;* V38 tmp27 [V38,T67] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V39 tmp28 [V39,T43] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]>
;* V40 tmp29 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" ;* V42 tmp31 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> @@ -105,7 +105,7 @@ ;* V92 tmp81 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V93 tmp82 [V93 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V94 tmp83 [V94 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V95 tmp84 [V95,T80] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
+;* V95 tmp84 [V95,T79] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V96 tmp85 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V97 tmp86 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V98 tmp87 [V98 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken> @@ -115,7 +115,7 @@ ;* V102 tmp91 [V102 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V103 tmp92 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V104 tmp93 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V105 tmp94 [V105,T81] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V105 tmp94 [V105,T80] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V106 tmp95 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V107 tmp96 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V108 tmp97 [V108,T44] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -137,13 +137,13 @@ ;* V124 tmp113 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder> ;* V125 tmp114 [V125 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V126 tmp115 [V126 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V127 tmp116 [V127,T74] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V127 tmp116 [V127,T73] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V128 tmp117 [V128 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder> ;* V129 tmp118 [V129 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]> ;* V130 tmp119 [V130,T57] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Exception[]>
-;* V131 tmp120 [V131,T38] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V131 tmp120 [V131,T37] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V132 tmp121 [V132,T47] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <System.Exception>
-;* V133 tmp122 [V133,T41] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
+;* V133 tmp122 [V133,T40] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
;* V134 tmp123 [V134,T55] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> ;* V135 tmp124 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V136 tmp125 [V136 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -154,30 +154,30 @@ ;* V141 tmp130 [V141 ] ( 0, 0 ) ref -> zero-ref ;* V142 tmp131 [V142 ] ( 0, 0 ) ref -> zero-ref ;* V143 tmp132 [V143 ] ( 0, 0 ) ref -> zero-ref
-;* V144 tmp133 [V144,T62] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V144 tmp133 [V144,T63] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V145 tmp134 [V145,T59] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Exception[]> ;* V146 tmp135 [V146 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon> ;* V147 tmp136 [V147 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V148 tmp137 [V148 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V149 tmp138 [V149 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V150 tmp139 [V150 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V151 tmp140 [V151,T82] ( 0, 0 ) ref -> zero-ref single-def
+;* V151 tmp140 [V151,T81] ( 0, 0 ) ref -> zero-ref single-def
;* V152 tmp141 [V152 ] ( 0, 0 ) ref -> zero-ref single-def ;* V153 tmp142 [V153 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
-;* V154 tmp143 [V154,T65] ( 0, 0 ) ref -> zero-ref single-def
+;* V154 tmp143 [V154,T64] ( 0, 0 ) ref -> zero-ref single-def
;* V155 tmp144 [V155 ] ( 0, 0 ) ref -> zero-ref single-def ;* V156 tmp145 [V156,T58] ( 0, 0 ) ref -> zero-ref single-def ;* V157 tmp146 [V157 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException> ;* V158 tmp147 [V158 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V159 tmp148 [V159,T75] ( 0, 0 ) ref -> zero-ref
+;* V159 tmp148 [V159,T74] ( 0, 0 ) ref -> zero-ref
;* V160 tmp149 [V160 ] ( 0, 0 ) ref -> zero-ref single-def ;* V161 tmp150 [V161 ] ( 0, 0 ) ref -> zero-ref single-def ;* V162 tmp151 [V162 ] ( 0, 0 ) ref -> zero-ref ;* V163 tmp152 [V163 ] ( 0, 0 ) ref -> zero-ref
-;* V164 tmp153 [V164,T76] ( 0, 0 ) ref -> zero-ref
+;* V164 tmp153 [V164,T75] ( 0, 0 ) ref -> zero-ref
;* V165 tmp154 [V165 ] ( 0, 0 ) ref -> zero-ref ;* V166 tmp155 [V166 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V167 tmp156 [V167,T83] ( 0, 0 ) ref -> zero-ref single-def
+;* V167 tmp156 [V167,T82] ( 0, 0 ) ref -> zero-ref single-def
;* V168 tmp157 [V168,T36] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V169 tmp158 [V169,T101] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V170 tmp159 [V170 ] ( 0, 0 ) ref -> zero-ref single-def @@ -198,7 +198,7 @@ ;* V185 tmp174 [V185 ] ( 0, 0 ) ref -> zero-ref ;* V186 tmp175 [V186 ] ( 0, 0 ) ref -> zero-ref single-def ;* V187 tmp176 [V187 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V188 tmp177 [V188,T39] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V188 tmp177 [V188,T38] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V189 tmp178 [V189,T102] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V190 tmp179 [V190 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V191 tmp180 [V191 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> @@ -302,11 +302,11 @@ ;* V289 tmp278 [V289 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V290 tmp279 [V290 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V291 tmp280 [V291 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V292 tmp281 [V292,T78] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V293 tmp282 [V293,T67] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" -;* V294 tmp283 [V294,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V292 tmp281 [V292,T77] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V293 tmp282 [V293,T66] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" +;* V294 tmp283 [V294,T88] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V295 tmp284 [V295,T46] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V296 tmp285 [V296,T64] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V296 tmp285 [V296,T62] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V297 tmp286 [V297 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V298 tmp287 [V298 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V299 tmp288 [V299 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -325,13 +325,13 @@ ;* V312 tmp301 [V312 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>> ;* V313 tmp302 [V313 ] ( 0, 0 ) ref -> zero-ref single-def ;* V314 tmp303 [V314 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V315 tmp304 [V315,T84] ( 0, 0 ) ref -> zero-ref single-def
+;* V315 tmp304 [V315,T83] ( 0, 0 ) ref -> zero-ref single-def
;* V316 tmp305 [V316 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V317 tmp306 [V317 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V318 tmp307 [V318 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V319 tmp308 [V319 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V320 tmp309 [V320 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V321 tmp310 [V321,T85] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
+;* V321 tmp310 [V321,T84] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V322 tmp311 [V322 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V323 tmp312 [V323 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V324 tmp313 [V324 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken> @@ -341,7 +341,7 @@ ;* V328 tmp317 [V328 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V329 tmp318 [V329 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V330 tmp319 [V330 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V331 tmp320 [V331,T73] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V331 tmp320 [V331,T72] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V332 tmp321 [V332 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V333 tmp322 [V333 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V334 tmp323 [V334,T45] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -363,36 +363,36 @@ ;* V350 tmp339 [V350 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder> ;* V351 tmp340 [V351 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V352 tmp341 [V352 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V353 tmp342 [V353,T86] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V353 tmp342 [V353,T85] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V354 tmp343 [V354 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder> ;* V355 tmp344 [V355 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]> ;* V356 tmp345 [V356,T56] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Exception[]>
-;* V357 tmp346 [V357,T40] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V357 tmp346 [V357,T39] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V358 tmp347 [V358,T48] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <System.Exception>
-;* V359 tmp348 [V359,T42] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
+;* V359 tmp348 [V359,T41] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
;* V360 tmp349 [V360 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> ;* V361 tmp350 [V361 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V362 tmp351 [V362 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V363 tmp352 [V363 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V364 tmp353 [V364 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V365 tmp354 [V365 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V366 tmp355 [V366,T87] ( 0, 0 ) ref -> zero-ref single-def
+;* V366 tmp355 [V366,T86] ( 0, 0 ) ref -> zero-ref single-def
;* V367 tmp356 [V367 ] ( 0, 0 ) ref -> zero-ref single-def ;* V368 tmp357 [V368 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
-;* V369 tmp358 [V369,T66] ( 0, 0 ) ref -> zero-ref single-def
+;* V369 tmp358 [V369,T65] ( 0, 0 ) ref -> zero-ref single-def
;* V370 tmp359 [V370 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V371 tmp360 [V371,T43] ( 0, 0 ) ref -> zero-ref single-def
+;* V371 tmp360 [V371,T42] ( 0, 0 ) ref -> zero-ref single-def
;* V372 tmp361 [V372 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException> ;* V373 tmp362 [V373 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V374 tmp363 [V374,T69] ( 0, 0 ) ref -> zero-ref
+;* V374 tmp363 [V374,T68] ( 0, 0 ) ref -> zero-ref
;* V375 tmp364 [V375 ] ( 0, 0 ) ref -> zero-ref single-def ;* V376 tmp365 [V376 ] ( 0, 0 ) ref -> zero-ref single-def ;* V377 tmp366 [V377 ] ( 0, 0 ) ref -> zero-ref ;* V378 tmp367 [V378 ] ( 0, 0 ) ref -> zero-ref
-;* V379 tmp368 [V379,T77] ( 0, 0 ) ref -> zero-ref
+;* V379 tmp368 [V379,T76] ( 0, 0 ) ref -> zero-ref
;* V380 tmp369 [V380 ] ( 0, 0 ) ref -> zero-ref ;* V381 tmp370 [V381 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V382 tmp371 [V382,T88] ( 0, 0 ) ref -> zero-ref single-def
+;* V382 tmp371 [V382,T87] ( 0, 0 ) ref -> zero-ref single-def
;* V383 tmp372 [V383,T34] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V384 tmp373 [V384,T103] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V385 tmp374 [V385 ] ( 0, 0 ) ref -> zero-ref single-def @@ -475,7 +475,7 @@ ; V462 tmp451 [V462,T95] ( 3, 1.18) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task> ;* V463 tmp452 [V463 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V464 tmp453 [V464 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V465 tmp454 [V465,T90] ( 7, 2.46) ref -> r13 class-hnd "Inline stloc first use temp" <System.Object>
+; V465 tmp454 [V465,T90] ( 7, 1.87) ref -> r14 class-hnd "Inline stloc first use temp" <System.Object>
; V466 tmp455 [V466,T97] ( 3, 1.18) int -> rdi ; V467 tmp456 [V467,T91] ( 4, 1.58) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task> ;* V468 tmp457 [V468 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -587,9 +587,9 @@ ;* V574 tmp563 [V574 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V575 tmp564 [V575 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V576 tmp565 [V576 ] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V577 tmp566 [V577,T70] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V578 tmp567 [V578,T71] ( 0, 0 ) ref -> zero-ref "argument with side effect" -;* V579 tmp568 [V579,T72] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V577 tmp566 [V577,T69] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V578 tmp567 [V578,T70] ( 0, 0 ) ref -> zero-ref "argument with side effect" +;* V579 tmp568 [V579,T71] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V580 tmp569 [V580 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V581 tmp570 [V581 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V582 tmp571 [V582 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" @@ -639,7 +639,7 @@ G_M48189_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M48189_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000002000000 {V00}, gcrefRegs=8000 {r15}, byrefRegs=0002 {rcx}, gcvars, byref ; GC ptr vars +{V00} cmp dword ptr [rcx+0x24], 0x186A0
- jge G_M48189_IG58
+ jge G_M48189_IG57
;; size=13 bbWeight=0.01 PerfScore 0.04 G_M48189_IG03: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0002 {rcx}, byref mov rdi, gword ptr [rcx+0x08] @@ -648,7 +648,7 @@ G_M48189_IG03: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0002 {rc mov esi, dword ptr [r15+0x18] mov rax, 0xD1FFAB1E ; System.Buffers.SharedArrayPool`1[System.Object] cmp qword ptr [rdi], rax
- jne G_M48189_IG60
+ jne G_M48189_IG59
call [System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this] ; gcrRegs -[rdi] +[rax] ; byrRegs -[rcx] @@ -666,7 +666,7 @@ G_M48189_IG05: ; bbWeight=98.94, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x18] test rdi, rdi
- je G_M48189_IG47
+ je G_M48189_IG40
;; size=20 bbWeight=98.94 PerfScore 717.33 G_M48189_IG06: ; bbWeight=98.94, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref mov rsi, r14 @@ -694,14 +694,14 @@ G_M48189_IG07: ; bbWeight=99.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 mov gword ptr [rbp+0x108], rax mov qword ptr [rbp+0x110], rdx cmp byte ptr [r15+0x1D], 0
- jne G_M48189_IG41
+ jne G_M48189_IG37
;; size=51 bbWeight=99.99 PerfScore 1649.84 G_M48189_IG08: ; bbWeight=99.89, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ...

+44 (+6.92%) : 11245.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span1[uint],int) (Tier1)

@@ -11,7 +11,7 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]> ; V01 arg1 [V01,T08] ( 8, 7.69) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.23) int -> r13
+; V02 loc0 [V02,T07] ( 16, 15.15) int -> r13
; V03 loc1 [V03,T16] ( 3, 3.77) int -> r12 ; V04 loc2 [V04,T25] ( 9, 0 ) byref -> r15 single-def ; V05 loc3 [V05,T26] ( 9, 0 ) byref -> rbx single-def @@ -118,25 +118,29 @@ G_M26918_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=24 bbWeight=1 PerfScore 8.25 G_M26918_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref test r15d, r15d
- je G_M26918_IG20
+ je G_M26918_IG21
test ebx, ebx
- jl G_M26918_IG21
+ jl G_M26918_IG22
;; size=17 bbWeight=1 PerfScore 2.50 G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref mov r13d, r15d cmp r15d, 1
- jle G_M26918_IG18
+ jle G_M26918_IG19
;; size=13 bbWeight=1 PerfScore 1.50 G_M26918_IG04: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz cmp r13d, 16
- jle SHORT G_M26918_IG08
+ jle SHORT G_M26918_IG09
;; size=6 bbWeight=1.92 PerfScore 2.40 G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref test ebx, ebx
- je G_M26918_IG27
+ je G_M26918_IG29
dec ebx cmp r13d, r15d
- ja G_M26918_IG28
+ ja G_M26918_IG30 + test r13d, r13d + jl G_M26918_IG23 + ;; size=28 bbWeight=0.92 PerfScore 3.69 +G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov esi, r13d mov rdi, r14 ; byrRegs +[rdi] @@ -151,7 +155,7 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, add rsi, rdx mov edx, r15d cmp rsi, rdx
- ja G_M26918_IG28
+ ja G_M26918_IG30
lea rax, bword ptr [r14+4*rdi] ; byrRegs +[rax] mov rdi, rax @@ -159,9 +163,9 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, mov bword ptr [rbp-0x30], rdi ; GC ptr vars +{V54} test r13d, r13d
- jl G_M26918_IG22 - ;; size=82 bbWeight=0.92 PerfScore 11.54 -G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
+ jl G_M26918_IG24 + ;; size=63 bbWeight=0.92 PerfScore 9.00 +G_M26918_IG07: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
; byrRegs -[rax] mov esi, r13d mov edx, ebx @@ -173,37 +177,37 @@ G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs= cmp r13d, 1 jg SHORT G_M26918_IG04 ;; size=20 bbWeight=1.92 PerfScore 9.62
-G_M26918_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r14]
- jmp G_M26918_IG18
+ jmp G_M26918_IG19
;; size=5 bbWeight=0.08 PerfScore 0.15
-G_M26918_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14] cmp r13d, 2
- je SHORT G_M26918_IG17
+ je SHORT G_M26918_IG18
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
cmp r13d, 3
- je G_M26918_IG23
+ je G_M26918_IG25
cmp r13d, r15d
- ja G_M26918_IG28
+ ja G_M26918_IG30
test r13d, r13d
- jl G_M26918_IG26
+ jl G_M26918_IG28
;; size=28 bbWeight=0.92 PerfScore 3.46
-G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
mov edi, r13d xor esi, esi dec edi test edi, edi
- jle SHORT G_M26918_IG18
+ jle SHORT G_M26918_IG19
;; size=11 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG11: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG12: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
lea eax, [rsi+0x01] movsxd rcx, eax mov ecx, dword ptr [r14+4*rcx]
- jmp SHORT G_M26918_IG13
+ jmp SHORT G_M26918_IG14
;; size=12 bbWeight=7.62 PerfScore 36.17
-G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG13: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
lea r8d, [rsi+0x01] movsxd r8, r8d lea r8, bword ptr [r14+4*r8] @@ -211,37 +215,37 @@ G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, mov dword ptr [r8], edx dec esi ;; size=16 bbWeight=21.38 PerfScore 53.46
-G_M26918_IG13: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG14: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[r8] test esi, esi
- jl SHORT G_M26918_IG15
+ jl SHORT G_M26918_IG16
;; size=4 bbWeight=29 PerfScore 36.25
-G_M26918_IG14: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG15: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
movsxd rdx, esi mov edx, dword ptr [r14+4*rdx] cmp edx, ecx
- ja SHORT G_M26918_IG12
+ ja SHORT G_M26918_IG13
;; size=11 bbWeight=27.31 PerfScore 95.58
-G_M26918_IG15: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG16: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
inc esi movsxd rsi, esi mov dword ptr [r14+4*rsi], ecx mov esi, eax cmp esi, edi
- jl SHORT G_M26918_IG11
+ jl SHORT G_M26918_IG12
;; size=15 bbWeight=7.62 PerfScore 22.85
-G_M26918_IG16: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG17: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14] lea r13, bword ptr [r14+0x04] ; byrRegs +[r13] cmp dword ptr [r14], r14d mov edi, dword ptr [r14] cmp edi, dword ptr [r13]
- jbe SHORT G_M26918_IG18
+ jbe SHORT G_M26918_IG19
xor edi, edi cmp r14, r13 setne dil @@ -252,7 +256,7 @@ G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, mov dword ptr [r14], esi mov dword ptr [r13], edi ;; size=45 bbWeight=0.08 PerfScore 1.54
-G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M26918_IG19: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13-r14] add rsp, 8 pop rbx @@ -263,11 +267,11 @@ G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop rbp ret ;; size=15 bbWeight=0.08 PerfScore 0.33
-G_M26918_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M26918_IG20: ; 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_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs +[r14] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] @@ -279,7 +283,7 @@ G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr test ebx, ebx jge G_M26918_IG03 ;; size=34 bbWeight=0 PerfScore 0.00
-G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -289,7 +293,17 @@ G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr ; gcr arg pop 0 jmp G_M26918_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M26918_IG22: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
+G_M26918_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref + mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ; gcr arg pop 0 + jmp G_M26918_IG06 + ;; size=31 bbWeight=0 PerfScore 0.00 +G_M26918_IG24: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
; byrRegs +[rdi] ; GC ptr vars +{V54} mov rdi, 0xD1FFAB1E @@ -302,13 +316,13 @@ G_M26918_IG22: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=000 ; gcr arg pop 0 mov rdi, bword ptr [rbp-0x30] ; byrRegs +[rdi]
- jmp G_M26918_IG06
+ jmp G_M26918_IG07
;; size=35 bbWeight=0 PerfScore 0.00
-G_M26918_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M26918_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
; byrRegs -[rdi] ; GC ptr vars -{V54} cmp r15d, 2
- jbe SHORT G_M26918_IG19
+ jbe G_M26918_IG20
lea r15, bword ptr [r14+0x08] ; byrRegs +[r15] lea rbx, bword ptr [r14+0x04] @@ -316,7 +330,7 @@ G_M26918_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { cmp dword ptr [r14], r14d mov edi, dword ptr [r14] cmp edi, dword ptr [rbx]
- jbe SHORT G_M26918_IG24
+ jbe SHORT G_M26918_IG26
xor edi, edi cmp r14, rbx setne dil @@ -326,11 +340,11 @@ G_M26918_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov eax, dword ptr [rbx] mov dword ptr [r14], eax mov dword ptr [rbx], edi
- ;; size=49 bbWeight=0 PerfScore 0.00 -G_M26918_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=C008 {rbx r14 r15}, byref, isz
+ ;; size=53 bbWeight=0 PerfScore 0.00
...

+44 (+6.93%) : 33840.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span1[uint],int) (Tier1)

@@ -11,7 +11,7 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]> ; V01 arg1 [V01,T08] ( 8, 7.69) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.23) int -> r13
+; V02 loc0 [V02,T07] ( 16, 15.15) int -> r13
; V03 loc1 [V03,T16] ( 3, 3.77) int -> r12 ; V04 loc2 [V04,T25] ( 9, 0 ) byref -> r15 single-def ; V05 loc3 [V05,T26] ( 9, 0 ) byref -> rbx single-def @@ -118,25 +118,29 @@ G_M26918_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=24 bbWeight=1 PerfScore 8.25 G_M26918_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref test r15d, r15d
- je G_M26918_IG21
+ je G_M26918_IG22
test ebx, ebx
- jl G_M26918_IG22
+ jl G_M26918_IG23
;; size=17 bbWeight=1 PerfScore 2.50 G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref mov r13d, r15d cmp r15d, 1
- jle G_M26918_IG18
+ jle G_M26918_IG19
;; size=13 bbWeight=1 PerfScore 1.50 G_M26918_IG04: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz cmp r13d, 16
- jle SHORT G_M26918_IG08
+ jle SHORT G_M26918_IG09
;; size=6 bbWeight=1.92 PerfScore 2.40 G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref test ebx, ebx
- je G_M26918_IG28
+ je G_M26918_IG30
dec ebx cmp r13d, r15d
- ja G_M26918_IG29
+ ja G_M26918_IG31 + test r13d, r13d + jl G_M26918_IG24 + ;; size=28 bbWeight=0.92 PerfScore 3.69 +G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov esi, r13d mov rdi, r14 ; byrRegs +[rdi] @@ -151,7 +155,7 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, add rsi, rdx mov edx, r15d cmp rsi, rdx
- ja G_M26918_IG29
+ ja G_M26918_IG31
lea rax, bword ptr [r14+4*rdi] ; byrRegs +[rax] mov rdi, rax @@ -159,9 +163,9 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, mov bword ptr [rbp-0x30], rdi ; GC ptr vars +{V54} test r13d, r13d
- jl G_M26918_IG23 - ;; size=82 bbWeight=0.92 PerfScore 11.54 -G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
+ jl G_M26918_IG25 + ;; size=63 bbWeight=0.92 PerfScore 9.00 +G_M26918_IG07: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
; byrRegs -[rax] mov esi, r13d mov edx, ebx @@ -173,37 +177,37 @@ G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs= cmp r13d, 1 jg SHORT G_M26918_IG04 ;; size=20 bbWeight=1.92 PerfScore 9.62
-G_M26918_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.08 PerfScore 0.15
-G_M26918_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14] cmp r13d, 2
- je SHORT G_M26918_IG17
+ je SHORT G_M26918_IG18
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
cmp r13d, 3
- je G_M26918_IG24
+ je G_M26918_IG26
cmp r13d, r15d
- ja G_M26918_IG29
+ ja G_M26918_IG31
test r13d, r13d
- jl G_M26918_IG27
+ jl G_M26918_IG29
;; size=28 bbWeight=0.92 PerfScore 3.46
-G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
mov edi, r13d xor esi, esi dec edi test edi, edi
- jle SHORT G_M26918_IG18
+ jle SHORT G_M26918_IG19
;; size=11 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG11: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG12: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
lea eax, [rsi+0x01] movsxd rcx, eax mov ecx, dword ptr [r14+4*rcx]
- jmp SHORT G_M26918_IG13
+ jmp SHORT G_M26918_IG14
;; size=12 bbWeight=7.62 PerfScore 36.17
-G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG13: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
lea r8d, [rsi+0x01] movsxd r8, r8d lea r8, bword ptr [r14+4*r8] @@ -211,39 +215,39 @@ G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, mov dword ptr [r8], edx dec esi ;; size=16 bbWeight=21.38 PerfScore 53.46
-G_M26918_IG13: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG14: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[r8] test esi, esi
- jl SHORT G_M26918_IG15
+ jl SHORT G_M26918_IG16
;; size=4 bbWeight=29 PerfScore 36.25
-G_M26918_IG14: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG15: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
movsxd rdx, esi mov edx, dword ptr [r14+4*rdx] cmp edx, ecx
- ja SHORT G_M26918_IG12
+ ja SHORT G_M26918_IG13
;; size=11 bbWeight=27.31 PerfScore 95.58
-G_M26918_IG15: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG16: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
inc esi movsxd rsi, esi mov dword ptr [r14+4*rsi], ecx mov esi, eax cmp esi, edi
- jl SHORT G_M26918_IG11
+ jl SHORT G_M26918_IG12
;; size=15 bbWeight=7.62 PerfScore 22.85
-G_M26918_IG16: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG17: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14] lea r13, bword ptr [r14+0x04] ; byrRegs +[r13] cmp dword ptr [r14], r14d mov edi, dword ptr [r14] cmp edi, dword ptr [r13]
- ja SHORT G_M26918_IG19
+ ja SHORT G_M26918_IG20
;; size=16 bbWeight=0.08 PerfScore 0.73
-G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M26918_IG19: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13-r14] add rsp, 8 pop rbx @@ -254,7 +258,7 @@ G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop rbp ret ;; size=15 bbWeight=0.08 PerfScore 0.33
-G_M26918_IG19: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M26918_IG20: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
; byrRegs +[r13-r14] xor edi, edi cmp r14, r13 @@ -265,14 +269,14 @@ G_M26918_IG19: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=000 mov esi, dword ptr [r13] mov dword ptr [r14], esi mov dword ptr [r13], edi
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=31 bbWeight=0.03 PerfScore 0.42
-G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13-r14] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs +[r14] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] @@ -284,7 +288,7 @@ G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr test ebx, ebx jge G_M26918_IG03 ;; size=34 bbWeight=0 PerfScore 0.00
-G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -294,7 +298,17 @@ G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr ; gcr arg pop 0 jmp G_M26918_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M26918_IG23: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
+G_M26918_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref + mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ; gcr arg pop 0 + jmp G_M26918_IG06 + ;; size=31 bbWeight=0 PerfScore 0.00 +G_M26918_IG25: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
; byrRegs +[rdi] ; GC ptr vars +{V54} mov rdi, 0xD1FFAB1E @@ -307,13 +321,13 @@ G_M26918_IG23: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=000 ; gcr arg pop 0 mov rdi, bword ptr [rbp-0x30] ; byrRegs +[rdi]
- jmp G_M26918_IG06
+ jmp G_M26918_IG07
;; size=35 bbWeight=0 PerfScore 0.00
-G_M26918_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M26918_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
; byrRegs -[rdi] ; GC ptr vars -{V54} cmp r15d, 2
- jbe SHORT G_M26918_IG20
+ jbe G_M26918_IG21
lea r15, bword ptr [r14+0x08] ; byrRegs +[r15] lea rbx, bword ptr [r14+0x04] @@ -321,7 +335,7 @@ G_M26918_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { cmp dword ptr [r14], r14d mov edi, dword ptr [r14] cmp edi, dword ptr [rbx]
- jbe SHORT G_M26918_IG25
+ jbe SHORT G_M26918_IG27
xor edi, edi cmp r14, rbx setne dil ...

+44 (+6.93%) : 41972.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span1[uint],int) (Tier1)

@@ -11,7 +11,7 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]> ; V01 arg1 [V01,T08] ( 8, 7.69) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.23) int -> r13
+; V02 loc0 [V02,T07] ( 16, 15.15) int -> r13
; V03 loc1 [V03,T16] ( 3, 3.77) int -> r12 ; V04 loc2 [V04,T25] ( 9, 0 ) byref -> r15 single-def ; V05 loc3 [V05,T26] ( 9, 0 ) byref -> rbx single-def @@ -118,25 +118,29 @@ G_M26918_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=24 bbWeight=1 PerfScore 8.25 G_M26918_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref test r15d, r15d
- je G_M26918_IG21
+ je G_M26918_IG22
test ebx, ebx
- jl G_M26918_IG22
+ jl G_M26918_IG23
;; size=17 bbWeight=1 PerfScore 2.50 G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref mov r13d, r15d cmp r15d, 1
- jle G_M26918_IG18
+ jle G_M26918_IG19
;; size=13 bbWeight=1 PerfScore 1.50 G_M26918_IG04: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz cmp r13d, 16
- jle SHORT G_M26918_IG08
+ jle SHORT G_M26918_IG09
;; size=6 bbWeight=1.92 PerfScore 2.40 G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref test ebx, ebx
- je G_M26918_IG28
+ je G_M26918_IG30
dec ebx cmp r13d, r15d
- ja G_M26918_IG29
+ ja G_M26918_IG31 + test r13d, r13d + jl G_M26918_IG24 + ;; size=28 bbWeight=0.92 PerfScore 3.69 +G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov esi, r13d mov rdi, r14 ; byrRegs +[rdi] @@ -151,7 +155,7 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, add rsi, rdx mov edx, r15d cmp rsi, rdx
- ja G_M26918_IG29
+ ja G_M26918_IG31
lea rax, bword ptr [r14+4*rdi] ; byrRegs +[rax] mov rdi, rax @@ -159,9 +163,9 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, mov bword ptr [rbp-0x30], rdi ; GC ptr vars +{V54} test r13d, r13d
- jl G_M26918_IG23 - ;; size=82 bbWeight=0.92 PerfScore 11.54 -G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
+ jl G_M26918_IG25 + ;; size=63 bbWeight=0.92 PerfScore 9.00 +G_M26918_IG07: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
; byrRegs -[rax] mov esi, r13d mov edx, ebx @@ -173,37 +177,37 @@ G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs= cmp r13d, 1 jg SHORT G_M26918_IG04 ;; size=20 bbWeight=1.92 PerfScore 9.62
-G_M26918_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.08 PerfScore 0.15
-G_M26918_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14] cmp r13d, 2
- je SHORT G_M26918_IG17
+ je SHORT G_M26918_IG18
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
cmp r13d, 3
- je G_M26918_IG24
+ je G_M26918_IG26
cmp r13d, r15d
- ja G_M26918_IG29
+ ja G_M26918_IG31
test r13d, r13d
- jl G_M26918_IG27
+ jl G_M26918_IG29
;; size=28 bbWeight=0.92 PerfScore 3.46
-G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
mov edi, r13d xor esi, esi dec edi test edi, edi
- jle SHORT G_M26918_IG18
+ jle SHORT G_M26918_IG19
;; size=11 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG11: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG12: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
lea eax, [rsi+0x01] movsxd rcx, eax mov ecx, dword ptr [r14+4*rcx]
- jmp SHORT G_M26918_IG13
+ jmp SHORT G_M26918_IG14
;; size=12 bbWeight=7.62 PerfScore 36.17
-G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG13: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
lea r8d, [rsi+0x01] movsxd r8, r8d lea r8, bword ptr [r14+4*r8] @@ -211,39 +215,39 @@ G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, mov dword ptr [r8], edx dec esi ;; size=16 bbWeight=21.38 PerfScore 53.46
-G_M26918_IG13: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG14: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[r8] test esi, esi
- jl SHORT G_M26918_IG15
+ jl SHORT G_M26918_IG16
;; size=4 bbWeight=29 PerfScore 36.25
-G_M26918_IG14: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG15: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
movsxd rdx, esi mov edx, dword ptr [r14+4*rdx] cmp edx, ecx
- ja SHORT G_M26918_IG12
+ ja SHORT G_M26918_IG13
;; size=11 bbWeight=27.31 PerfScore 95.58
-G_M26918_IG15: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG16: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
inc esi movsxd rsi, esi mov dword ptr [r14+4*rsi], ecx mov esi, eax cmp esi, edi
- jl SHORT G_M26918_IG11
+ jl SHORT G_M26918_IG12
;; size=15 bbWeight=7.62 PerfScore 22.85
-G_M26918_IG16: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG17: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14] lea r13, bword ptr [r14+0x04] ; byrRegs +[r13] cmp dword ptr [r14], r14d mov edi, dword ptr [r14] cmp edi, dword ptr [r13]
- ja SHORT G_M26918_IG19
+ ja SHORT G_M26918_IG20
;; size=16 bbWeight=0.08 PerfScore 0.73
-G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M26918_IG19: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13-r14] add rsp, 8 pop rbx @@ -254,7 +258,7 @@ G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop rbp ret ;; size=15 bbWeight=0.08 PerfScore 0.33
-G_M26918_IG19: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M26918_IG20: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
; byrRegs +[r13-r14] xor edi, edi cmp r14, r13 @@ -265,14 +269,14 @@ G_M26918_IG19: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=000 mov esi, dword ptr [r13] mov dword ptr [r14], esi mov dword ptr [r13], edi
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=31 bbWeight=0.03 PerfScore 0.42
-G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13-r14] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs +[r14] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] @@ -284,7 +288,7 @@ G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr test ebx, ebx jge G_M26918_IG03 ;; size=34 bbWeight=0 PerfScore 0.00
-G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -294,7 +298,17 @@ G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr ; gcr arg pop 0 jmp G_M26918_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M26918_IG23: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
+G_M26918_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref + mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ; gcr arg pop 0 + jmp G_M26918_IG06 + ;; size=31 bbWeight=0 PerfScore 0.00 +G_M26918_IG25: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
; byrRegs +[rdi] ; GC ptr vars +{V54} mov rdi, 0xD1FFAB1E @@ -307,13 +321,13 @@ G_M26918_IG23: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=000 ; gcr arg pop 0 mov rdi, bword ptr [rbp-0x30] ; byrRegs +[rdi]
- jmp G_M26918_IG06
+ jmp G_M26918_IG07
;; size=35 bbWeight=0 PerfScore 0.00
-G_M26918_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M26918_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
; byrRegs -[rdi] ; GC ptr vars -{V54} cmp r15d, 2
- jbe SHORT G_M26918_IG20
+ jbe G_M26918_IG21
lea r15, bword ptr [r14+0x08] ; byrRegs +[r15] lea rbx, bword ptr [r14+0x04] @@ -321,7 +335,7 @@ G_M26918_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { cmp dword ptr [r14], r14d mov edi, dword ptr [r14] cmp edi, dword ptr [rbx]
- jbe SHORT G_M26918_IG25
+ jbe SHORT G_M26918_IG27
xor edi, edi cmp r14, rbx setne dil ...

benchmarks.run_tiered.linux.x64.checked.mch

-2 (-0.15%) : 6844.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan1[ushort],System.ReadOnlyMemory1[ubyte]):this (Tier0-FullOpts)

@@ -531,16 +531,16 @@ G_M6729_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=47 bbWeight=1 PerfScore 11.00 G_M6729_IG33: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp gword ptr [rbp-0x70], 0
- je G_M6729_IG41
+ je G_M6729_IG43
xor ebx, ebx cmp dword ptr [rbp-0x58], 0
- jle SHORT G_M6729_IG38
+ jle SHORT G_M6729_IG41
;; size=19 bbWeight=1 PerfScore 6.25 G_M6729_IG34: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rbp-0x70] ; gcrRegs +[rdi] cmp ebx, dword ptr [rdi+0x08]
- jae G_M6729_IG39
+ jae SHORT G_M6729_IG37
mov rdi, gword ptr [rbp-0x70] mov esi, ebx shl rsi, 6 @@ -554,24 +554,39 @@ G_M6729_IG34: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r15] xchg gword ptr [rdi], r15 test r15, r15
- je SHORT G_M6729_IG37 - ;; size=44 bbWeight=8 PerfScore 260.00
+ je SHORT G_M6729_IG40 + ;; size=40 bbWeight=8 PerfScore 260.00
G_M6729_IG35: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0080 {rdi}, byref, isz ; gcrRegs -[rsi] mov esi, dword ptr [rdi+0x08] mov r14d, esi shr r14d, 31
- jne SHORT G_M6729_IG36
+ jne SHORT G_M6729_IG39
test esi, esi
- je SHORT G_M6729_IG36
+ je SHORT G_M6729_IG39
cmp dword ptr [r15+0x08], esi
- jb SHORT G_M6729_IG40
+ jae SHORT G_M6729_IG38 + ;; size=22 bbWeight=4 PerfScore 36.00 +G_M6729_IG36: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r15] + ; byrRegs -[rdi] + ; GC ptr vars -{V06} + jmp SHORT G_M6729_IG42 + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M6729_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M6729_IG38: ; bbWeight=4, gcVars=0000000000000040 {V06}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r15] + ; GC ptr vars +{V06}
lea rdi, bword ptr [r15+0x10]
+ ; byrRegs +[rdi]
call [<unknown method>] ; byrRegs -[rdi] ; gcr arg pop 0
- ;; size=32 bbWeight=4 PerfScore 50.00 -G_M6729_IG36: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 14.00 +G_M6729_IG39: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] ; gcrRegs +[rdi] @@ -582,12 +597,12 @@ G_M6729_IG36: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byre ; gcrRegs -[rsi rdi r15] ; gcr arg pop 0 ;; size=25 bbWeight=4 PerfScore 23.00
-G_M6729_IG37: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6729_IG40: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc ebx cmp ebx, dword ptr [rbp-0x58] jl SHORT G_M6729_IG34 ;; size=7 bbWeight=8 PerfScore 26.00
-G_M6729_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6729_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E mov esi, 76 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS @@ -603,18 +618,14 @@ G_M6729_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- jmp SHORT G_M6729_IG41
+ jmp SHORT G_M6729_IG43
;; size=52 bbWeight=1 PerfScore 13.00
-G_M6729_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M6729_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M6729_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E mov esi, 71 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS @@ -659,7 +670,7 @@ G_M6729_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 nop ;; size=151 bbWeight=1 PerfScore 33.25
-G_M6729_IG42: ; bbWeight=1, funclet epilog, nogc, extend
+G_M6729_IG44: ; bbWeight=1, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop r13 @@ -669,7 +680,7 @@ G_M6729_IG42: ; bbWeight=1, funclet epilog, nogc, extend ret ;; size=13 bbWeight=1 PerfScore 3.75
-Total bytes of code 1366, prolog size 71, PerfScore 709.33, instruction count 335, allocated bytes for code 1366 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
+Total bytes of code 1364, prolog size 71, PerfScore 709.33, instruction count 336, allocated bytes for code 1364 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
; ============================================================ Unwind Info:

+0 (0.00%) : 32693.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)

@@ -199,7 +199,7 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov gword ptr [rbp-0x80], rax ; GC ptr vars +{V16} test r14, r14
- je G_M41722_IG45
+ je G_M41722_IG46
lea rdi, bword ptr [rax+0x08] ; byrRegs +[rdi] mov rsi, r14 @@ -210,13 +210,13 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov r14, gword ptr [rbp-0x80] ; gcrRegs +[r14] cmp dword ptr [r15+0x08], 0
- jle G_M41722_IG40
+ jle G_M41722_IG41
;; size=71 bbWeight=1 PerfScore 13.25 G_M41722_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V16} mov edi, dword ptr [rbp-0x30] cmp edi, dword ptr [r15+0x08]
- jae G_M41722_IG42
+ jae G_M41722_IG43
mov eax, edi movzx rax, word ptr [r15+2*rax+0x0C] cmp eax, 256 @@ -229,27 +229,27 @@ G_M41722_IG04: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; gcr arg pop 0 test eax, eax mov edi, dword ptr [rbp-0x30]
- je G_M41722_IG12
+ je G_M41722_IG13
jmp SHORT G_M41722_IG06 ;; size=24 bbWeight=2 PerfScore 17.00 G_M41722_IG05: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref mov eax, eax mov rcx, 0xD1FFAB1E ; static handle test byte ptr [rax+rcx], 128
- je G_M41722_IG12
+ je G_M41722_IG13
;; size=22 bbWeight=2 PerfScore 9.00 G_M41722_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref mov eax, 1 inc edi mov dword ptr [rbp-0x30], edi mov dword ptr [rbp-0x40], eax
- jmp G_M41722_IG39
+ jmp G_M41722_IG40
;; size=18 bbWeight=2 PerfScore 9.00 G_M41722_IG07: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz mov rcx, gword ptr [r14+0x08] ; gcrRegs +[rcx] test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov edx, dword ptr [r14+0x10] cmp dword ptr [rcx+0x08], edx jbe SHORT G_M41722_IG08 @@ -263,51 +263,53 @@ G_M41722_IG08: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 G_M41722_IG09: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz movzx rcx, cx cmp ecx, 256
- jb SHORT G_M41722_IG10
+ jb SHORT G_M41722_IG11
mov dword ptr [rbp-0x30], edi mov edi, ecx call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ; gcr arg pop 0 test eax, eax mov edi, dword ptr [rbp-0x30]
- je SHORT G_M41722_IG14 - jmp SHORT G_M41722_IG11 - ;; size=31 bbWeight=8 PerfScore 80.00 -G_M41722_IG10: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M41722_IG12 + ;; size=29 bbWeight=8 PerfScore 64.00 +G_M41722_IG10: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M41722_IG15 + ;; size=2 bbWeight=2 PerfScore 4.00 +G_M41722_IG11: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov ecx, ecx mov rdx, 0xD1FFAB1E ; static handle test byte ptr [rcx+rdx], 128
- je SHORT G_M41722_IG14
+ je SHORT G_M41722_IG15
;; size=18 bbWeight=8 PerfScore 36.00
-G_M41722_IG11: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG12: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r14+0x08] ; gcrRegs +[rcx] test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov edx, dword ptr [r14+0x10] mov esi, edx cmp dword ptr [rcx+0x08], esi
- jbe SHORT G_M41722_IG12
+ jbe SHORT G_M41722_IG13
inc edx mov dword ptr [r14+0x10], edx ;; size=30 bbWeight=8 PerfScore 86.00
-G_M41722_IG12: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG13: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] cmp dword ptr [rbp-0x40], 0 jne SHORT G_M41722_IG07 ;; size=6 bbWeight=16 PerfScore 48.00
-G_M41722_IG13: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M41722_IG15
+G_M41722_IG14: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M41722_IG16
;; size=2 bbWeight=2 PerfScore 4.00
-G_M41722_IG14: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
xor eax, eax mov dword ptr [rbp-0x40], eax ;; size=5 bbWeight=2 PerfScore 2.50
-G_M41722_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG16: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x30], edi mov ecx, edi cmp word ptr [r15+2*rcx+0x0C], 37
- jne G_M41722_IG39
+ jne G_M41722_IG40
mov rdi, 0xD1FFAB1E ; System.Text.StringBuilder call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -338,56 +340,56 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 lea ecx, [rdi+0x01] mov dword ptr [rbp-0x30], ecx cmp edi, dword ptr [r15+0x08]
- jae G_M41722_IG42
+ jae G_M41722_IG43
movzx rdx, word ptr [r15+2*rdi+0x0C] mov dword ptr [rbp-0x34], edx mov r8d, 1 mov rdi, gword ptr [r14+0x08] ; gcrRegs +[rdi] test rdi, rdi
- je G_M41722_IG47
+ je G_M41722_IG48
mov esi, dword ptr [r14+0x10] mov r9d, esi cmp dword ptr [rdi+0x08], r9d
- jbe SHORT G_M41722_IG16
+ jbe SHORT G_M41722_IG17
inc esi mov dword ptr [r14+0x10], esi mov esi, r9d movzx rdi, word ptr [rdi+2*rsi+0x0C] ; gcrRegs -[rdi]
- jmp SHORT G_M41722_IG17
+ jmp SHORT G_M41722_IG18
;; size=177 bbWeight=2 PerfScore 80.00
-G_M41722_IG16: ; bbWeight=2, gcVars=00000000000000000000000000000002 {V11}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M41722_IG17: ; bbWeight=2, gcVars=00000000000000000000000000000002 {V11}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17} mov edi, -1 ;; size=5 bbWeight=2 PerfScore 0.50
-G_M41722_IG17: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG18: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
movzx r9, di ;; size=4 bbWeight=2 PerfScore 0.50
-G_M41722_IG18: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG19: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
movsx rdi, r9w cmp edi, -1
- jne SHORT G_M41722_IG20
+ jne SHORT G_M41722_IG21
;; size=9 bbWeight=16 PerfScore 24.00
-G_M41722_IG19: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG20: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
xor r8d, r8d mov dword ptr [rbp-0x3C], r8d mov r8d, dword ptr [rbp-0x3C] ;; size=11 bbWeight=8 PerfScore 18.00
-G_M41722_IG20: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG21: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rax+0x18] mov rsi, gword ptr [rax+0x08] ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M41722_IG22
+ jbe SHORT G_M41722_IG23
;; size=12 bbWeight=16 PerfScore 128.00
-G_M41722_IG21: ; bbWeight=8, gcrefRegs=C049 {rax rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG22: ; bbWeight=8, gcrefRegs=C049 {rax rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, edi mov word ptr [rsi+2*rdi+0x10], r9w inc dword ptr [rax+0x18]
- jmp SHORT G_M41722_IG23
+ jmp SHORT G_M41722_IG24
;; size=13 bbWeight=8 PerfScore 50.00
-G_M41722_IG22: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG23: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov dword ptr [rbp-0x3C], r8d mov rdi, rax @@ -400,31 +402,31 @@ G_M41722_IG22: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs= ; gcrRegs +[rax] mov r8d, dword ptr [rbp-0x3C] ;; size=24 bbWeight=8 PerfScore 52.00
-G_M41722_IG23: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG24: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r14+0x08] ; gcrRegs +[rdi] test rdi, rdi
- je G_M41722_IG47
+ je G_M41722_IG48
mov esi, dword ptr [r14+0x10] cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M41722_IG25
+ jbe SHORT G_M41722_IG26
;; size=22 bbWeight=16 PerfScore 148.00
-G_M41722_IG24: ; bbWeight=8, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG25: ; bbWeight=8, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, esi movzx rsi, word ptr [rdi+2*rsi+0x0C]
- jmp SHORT G_M41722_IG26
+ jmp SHORT G_M41722_IG27
;; size=9 bbWeight=8 PerfScore 34.00
-G_M41722_IG25: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG26: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov esi, -1 ;; size=5 bbWeight=8 PerfScore 2.00
-G_M41722_IG26: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG27: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x54], esi movzx r9, si cmp r9d, 256
- jb SHORT G_M41722_IG28
+ jb SHORT G_M41722_IG29
;; size=16 bbWeight=16 PerfScore 40.00
-G_M41722_IG27: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG28: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x3C], r8d mov dword ptr [rbp-0x38], r9d mov edi, r9d @@ -435,30 +437,30 @@ G_M41722_IG27: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs= mov rax, gword ptr [rbp-0x78] ; gcrRegs +[rax] mov r9d, dword ptr [rbp-0x38]
- jne SHORT G_M41722_IG30
+ jne SHORT G_M41722_IG31
mov r8d, dword ptr [rbp-0x3C]
- jmp SHORT G_M41722_IG29
+ jmp SHORT G_M41722_IG30
;; size=35 bbWeight=8 PerfScore 92.00
-G_M41722_IG28: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG29: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
...

+0 (0.00%) : 9879.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)

@@ -79,12 +79,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ; gcr arg pop 0 test eax, eax
- je SHORT G_M44603_IG12
+ jne SHORT G_M44603_IG10
;; size=10 bbWeight=2 PerfScore 8.50
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M44603_IG10 - ;; size=2 bbWeight=4 PerfScore 8.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx] + jmp SHORT G_M44603_IG12 + ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx]
mov edi, edi mov rax, 0xD1FFAB1E ; static handle test byte ptr [rdi+rax], 128 @@ -111,7 +113,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=11 bbWeight=0.50 PerfScore 1.62
-Total bytes of code 117, prolog size 15, PerfScore 58.75, instruction count 43, allocated bytes for code 117 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 117, prolog size 15, PerfScore 51.75, instruction count 43, allocated bytes for code 117 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================ Unwind Info:

+9 (+0.41%) : 44401.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)

@@ -42,7 +42,7 @@ ;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp26 [V32,T33] ( 3, 6 ) int -> rdx "Inline return value spill temp" ; V33 tmp27 [V33,T34] ( 4, 8 ) int -> rax "Inline stloc first use temp"
-; V34 tmp28 [V34,T47] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
+; V34 tmp28 [V34,T47] ( 3, 3 ) byref -> r13 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp30 [V36,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -66,7 +66,7 @@ ; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> [rbp-0x90] class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount> ;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount> ;* V57 tmp51 [V57,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T48] ( 3, 3 ) byref -> rbx "Inlining Arg"
+; V58 tmp52 [V58,T48] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V60 tmp54 [V60,T57] ( 2, 2 ) int -> r14 "Single return block return value" ; V61 tmp55 [V61,T22] ( 6, 13 ) int -> r15 "V01.[000..004)" @@ -108,7 +108,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M55237_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov r15d, dword ptr [rbp-0x30] cmp byte ptr [rbx+0x4F], 0
- jne G_M55237_IG97
+ jne G_M55237_IG98
call <unknown method> ; gcr arg pop 0 mov r14d, eax @@ -117,7 +117,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=32 bbWeight=1 PerfScore 10.25 G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp r14d, dword ptr [rbx+0x44]
- je G_M55237_IG98
+ je G_M55237_IG99
lea r13, bword ptr [rbx+0x50] ; byrRegs +[r13] mov rdi, r13 @@ -139,11 +139,11 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13 call rax ; gcr arg pop 0 cmp dword ptr [rax+0x10], 4
- jl G_M55237_IG99
+ jl G_M55237_IG100
mov rdi, qword ptr [rax+0x18] mov rdi, qword ptr [rdi+0x20] test rdi, rdi
- je G_M55237_IG99
+ je G_M55237_IG100
mov r12, bword ptr [rdi] ; byrRegs +[r12] add r12, 16 @@ -239,7 +239,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=3000 ; gcrRegs +[rax] mov edi, dword ptr [rax+0x18] test edi, edi
- jg G_M55237_IG100
+ jg G_M55237_IG101
cmp r14d, dword ptr [rbx+0x40] jne G_M55237_IG35 inc edi @@ -285,11 +285,11 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13 call rax ; gcr arg pop 0 cmp dword ptr [rax+0x10], 4
- jl G_M55237_IG101
+ jl G_M55237_IG102
mov rdi, qword ptr [rax+0x18] mov rdi, qword ptr [rdi+0x20] test rdi, rdi
- je G_M55237_IG101
+ je G_M55237_IG102
mov r12, bword ptr [rdi] ; byrRegs +[r12] add r12, 16 @@ -496,7 +496,7 @@ G_M55237_IG35: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 { ;; size=11 bbWeight=0.50 PerfScore 0.75 G_M55237_IG36: ; bbWeight=4, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r12 r13}, byref, isz cmp dword ptr [rbx+0x48], 0xD1FFAB1E
- jb G_M55237_IG94
+ jb G_M55237_IG90
cmp r15d, -1 je SHORT G_M55237_IG38 ;; size=19 bbWeight=4 PerfScore 21.00 @@ -515,9 +515,9 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r1 ; gcrRegs -[rax] ; gcr arg pop 0 sub eax, dword ptr [rbp-0x2C]
- js G_M55237_IG90
+ js G_M55237_IG91
cmp eax, r15d
- jge G_M55237_IG90
+ jge G_M55237_IG91
mov edx, r15d sub edx, eax mov rax, gword ptr [rbp-0x60] @@ -526,7 +526,7 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r1 G_M55237_IG40: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r12 r13}, gcvars, byref ; GC ptr vars -{V02} test edx, edx
- je G_M55237_IG90
+ je G_M55237_IG91
;; size=8 bbWeight=2 PerfScore 2.50 G_M55237_IG41: ; bbWeight=4, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r12 r13}, byref, isz cmp dword ptr [rbp-0x34], 20 @@ -937,7 +937,7 @@ G_M55237_IG78: ; bbWeight=4, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=3000 ; gcr arg pop 0 mov r14d, eax test r14d, r14d
- je G_M55237_IG92
+ je G_M55237_IG93
mov rax, gword ptr [rbp-0x60] ; gcrRegs +[rax] mov rdi, qword ptr [rax+0x10] @@ -1044,15 +1044,54 @@ G_M55237_IG88: ; bbWeight=2, gcrefRegs=0108 {rbx r8}, byrefRegs=3000 {r12 ;; size=11 bbWeight=2 PerfScore 4.50 G_M55237_IG89: ; bbWeight=4, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r12 r13}, byref ; gcrRegs -[r8]
+ mov rdi, rax + ; gcrRegs +[rdi] + mov rax, rdi
jmp G_M55237_IG36
- ;; size=5 bbWeight=4 PerfScore 8.00 -G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz - ; gcrRegs -[rax rbx]
+ ;; size=11 bbWeight=4 PerfScore 10.00 +G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=2000 {r13}, byref, isz + ; gcrRegs -[rdi]
; byrRegs -[r12]
+ inc dword ptr [rbx+0x48] + inc dword ptr [rax+0x18] + jmp SHORT G_M55237_IG95 + ;; size=8 bbWeight=0.50 PerfScore 4.00 +G_M55237_IG91: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz + ; gcrRegs -[rax rbx] + cmp dword ptr [r13], 0 + jne SHORT G_M55237_IG92 + mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ; gcr arg pop 0 + ;; size=33 bbWeight=0.50 PerfScore 3.75 +G_M55237_IG92: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref + xor eax, eax + mov dword ptr [r13], eax + ;; size=6 bbWeight=0.50 PerfScore 0.62 +G_M55237_IG93: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r13] + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M55237_IG94: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 168 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=18 bbWeight=0.50 PerfScore 2.12 +G_M55237_IG95: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref, isz + ; byrRegs +[r13]
mov rbx, r13 ; byrRegs +[rbx] cmp dword ptr [rbx], 0
- jne SHORT G_M55237_IG91
+ jne SHORT G_M55237_IG96
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -1062,49 +1101,12 @@ G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, ; byrRegs -[r13] ; gcr arg pop 0 ;; size=34 bbWeight=0.50 PerfScore 3.88
-G_M55237_IG91: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - xor eax, eax - mov dword ptr [rbx], eax - ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M55237_IG92: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M55237_IG93: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 168 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=18 bbWeight=0.50 PerfScore 2.12 -G_M55237_IG94: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=2000 {r13}, gcvars, byref, isz - ; gcrRegs +[rax rbx] - ; byrRegs +[r13] - inc dword ptr [rbx+0x48] - inc dword ptr [rax+0x18] - mov rbx, r13 - ; gcrRegs -[rbx] - ; byrRegs +[rbx] - cmp dword ptr [rbx], 0 - jne SHORT G_M55237_IG95 - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rax rsi rdi] - ; byrRegs -[r13] - ; gcr arg pop 0 - ;; size=40 bbWeight=0.50 PerfScore 6.88 -G_M55237_IG95: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55237_IG96: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax mov dword ptr [rbx], eax movzx rax, r14b ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG96: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG97: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 168 pop rbx pop r12 @@ -1114,7 +1116,7 @@ G_M55237_IG96: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M55237_IG97: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG98: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] ; byrRegs -[rbx] mov rdi, rbx @@ -1124,7 +1126,7 @@ G_M55237_IG97: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcr arg pop 0 int3 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M55237_IG98: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG99: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Threading.LockRecursionException call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -1153,7 +1155,7 @@ G_M55237_IG98: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx rdi] ; gcr arg pop 0 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M55237_IG99: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
+G_M55237_IG100: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
; gcrRegs +[rbx] ; byrRegs +[r13] mov edi, 4 ...

+14 (+3.47%) : 45842.dasm - System.String:Concat(System.String[]):System.String (Tier1)

@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T13] ( 5, 28 ) long -> rdi ; V02 loc1 [V02,T14] ( 5, 24 ) int -> r14 ; V03 loc2 [V03,T12] ( 5, 28.50) ref -> r13 class-hnd exact <System.String>
-; V04 loc3 [V04,T04] ( 8, 50 ) int -> r12
+; V04 loc3 [V04,T05] ( 8, 50 ) int -> r12
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax ; V06 loc5 [V06,T08] ( 3, 40 ) ref -> rcx class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> [rbp-0x2C] @@ -33,9 +33,9 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T18] ( 4, 5 ) ref -> rax "Single return block return value" ; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V25 cse0 [V25,T05] ( 6, 49 ) int -> r15 "CSE - aggressive"
+; V25 cse0 [V25,T03] ( 8, 57 ) int -> r15 "CSE - aggressive"
; V26 cse1 [V26,T07] ( 5, 40 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V27 cse2 [V27,T03] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
+; V27 cse2 [V27,T04] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -58,10 +58,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp r15d, 1 jle G_M46295_IG16 ;; size=23 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor edi, edi xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test r15d, r15d + jle SHORT G_M46295_IG07 + ;; size=9 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, eax mov rcx, gword ptr [rbx+8*rcx+0x10] @@ -94,7 +96,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r12d, r12d xor eax, eax ; gcrRegs -[rax]
- ;; size=41 bbWeight=4 PerfScore 19.00
+ test r15d, r15d + jle G_M46295_IG15 + ;; size=50 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz mov dword ptr [rbp-0x2C], eax mov edi, eax @@ -249,7 +253,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 403, prolog size 22, PerfScore 585.25, instruction count 115, allocated bytes for code 403 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 417, prolog size 22, PerfScore 595.25, instruction count 119, allocated bytes for code 417 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================ Unwind Info:

+48 (+9.62%) : 4262.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (Tier1)

@@ -10,10 +10,10 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T03] ( 7, 19 ) int -> r15
-; V02 arg2 [V02,T04] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]> -; V03 loc0 [V03,T01] ( 14, 28.50) int -> r12
+; V02 arg2 [V02,T05] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]> +; V03 loc0 [V03,T00] ( 16, 33 ) int -> r12
; V04 loc1 [V04,T09] ( 3, 12 ) int -> [rbp-0x2C] spill-single-def
-; V05 loc2 [V05,T05] ( 4, 16 ) int -> rdi
+; V05 loc2 [V05,T06] ( 4, 16 ) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -44,13 +44,13 @@ ;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T00] ( 4, 32 ) int -> r12 "Inlining Arg"
+; V36 tmp30 [V36,T01] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V38 tmp32 [V38,T06] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V38 tmp32 [V38,T07] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V41 tmp35 [V41,T02] ( 29, 22 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp36 [V42,T07] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T08] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP @@ -79,7 +79,7 @@ ; V68 tmp62 [V68,T15] ( 2, 2 ) int -> rsi "argument with side effect" ; V69 tmp63 [V69,T16] ( 2, 2 ) int -> rsi "argument with side effect" ; V70 tmp64 [V70,T17] ( 2, 2 ) int -> rsi "argument with side effect"
-; V71 cse0 [V71,T08] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -138,16 +138,28 @@ G_M15629_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx G_M15629_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref mov r12d, r13d cmp r13d, 1
- jle G_M15629_IG20
+ jle G_M15629_IG23
;; size=13 bbWeight=1 PerfScore 1.50 G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz cmp r12d, 16
- jle G_M15629_IG13
+ jle G_M15629_IG15
test r15d, r15d
- je G_M15629_IG19
+ je G_M15629_IG21
dec r15d cmp r12d, r13d
- ja G_M15629_IG23
+ ja G_M15629_IG26 + test r12d, r12d + jge SHORT G_M15629_IG11 + ;; size=36 bbWeight=4 PerfScore 21.00 +G_M15629_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d mov rdi, rbx ; byrRegs +[rdi] @@ -164,15 +176,15 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, add rsi, rcx mov ecx, r13d cmp rsi, rcx
- ja G_M15629_IG23
+ ja G_M15629_IG26
lea rcx, bword ptr [rbx+4*rdi] ; byrRegs +[rcx] mov bword ptr [rbp-0x38], rcx ; GC ptr vars +{V38} test r12d, r12d
- jge SHORT G_M15629_IG11 - ;; size=88 bbWeight=4 PerfScore 58.00 -G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M15629_IG13 + ;; size=57 bbWeight=4 PerfScore 42.00 +G_M15629_IG12: ; bbWeight=2, gcVars=0000000000000080 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -181,7 +193,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=400 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r12d @@ -196,16 +208,16 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, cmp r12d, 1 jg G_M15629_IG09 ;; size=33 bbWeight=4 PerfScore 28.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] ; byrRegs -[rbx]
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] ; byrRegs +[rbx] cmp r12d, 2
- jne SHORT G_M15629_IG14
+ jne SHORT G_M15629_IG16
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov rdi, gword ptr [r14+0x08] @@ -213,17 +225,17 @@ G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi r14] test eax, eax
- jle G_M15629_IG20
+ jle G_M15629_IG23
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov dword ptr [rbx], edx mov dword ptr [rbx+0x04], esi
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=42 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] cmp r12d, 3
- jne SHORT G_M15629_IG17
+ jne SHORT G_M15629_IG19
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov rdi, gword ptr [r14+0x08] @@ -231,29 +243,29 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M15629_IG15
+ jle SHORT G_M15629_IG17
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov dword ptr [rbx], edx mov dword ptr [rbx+0x04], esi ;; size=33 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx] cmp r13d, 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
mov edx, dword ptr [rbx+0x08] mov rdi, gword ptr [r14+0x08] ; gcrRegs +[rdi] call [r14+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x08] mov dword ptr [rbx], edx mov dword ptr [rbx+0x08], esi ;; size=37 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx+0x04] mov edx, dword ptr [rbx+0x08] mov rdi, gword ptr [r14+0x08] @@ -261,19 +273,19 @@ G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi r14] test eax, eax
- jle SHORT G_M15629_IG20
+ jle SHORT G_M15629_IG23
mov edi, dword ptr [rbx+0x04] mov esi, dword ptr [rbx+0x08] mov dword ptr [rbx+0x04], esi mov dword ptr [rbx+0x08], edi
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=32 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
test r12d, r12d
- jge SHORT G_M15629_IG18
+ jge SHORT G_M15629_IG20
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -281,7 +293,7 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d mov rdi, rbx ; byrRegs +[rdi] @@ -290,13 +302,23 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[rdx r14] ; byrRegs -[rbx rdi]
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] ; byrRegs +[rbx] cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26 + test r12d, r12d + jge SHORT G_M15629_IG22 + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=29 bbWeight=0.50 PerfScore 3.00 +G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, rbx ; byrRegs +[rdi] mov esi, r12d @@ -305,11 +327,11 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[rdx r14] ; byrRegs -[rbx rdi]
- ;; size=20 bbWeight=0.50 PerfScore 2.50 -G_M15629_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 1.88 +G_M15629_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ...

coreclr_tests.run.linux.x64.checked.mch

-10 (-3.85%) : 454066.dasm - System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)

@@ -35,8 +35,8 @@ ;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x8)" P-INDEP ;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref "field V19.key (fldOffset=0x0)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V19.value (fldOffset=0x8)" P-INDEP
-; V26 tmp22 [V26,T02] ( 5, 7.03) ref -> r15 single-def "V01.[000..008)" -; V27 tmp23 [V27,T13] ( 3, 3.44) int -> r14 "V01.[008..012)"
+; V26 tmp22 [V26,T02] ( 4, 7.03) ref -> r15 single-def "V01.[000..008)" +; V27 tmp23 [V27,T13] ( 2, 3.44) int -> r14 "V01.[008..012)"
; V28 tmp24 [V28,T00] ( 4, 5.73) int -> registers "V01.[012..016)" ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "V01.[016..020)" ; V30 tmp26 [V30,T11] ( 4, 1.14) ref -> r12 "V01.[024..032)" @@ -69,7 +69,7 @@ G_M2401_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre mov r15, gword ptr [rbx+0x20] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M2401_IG10
+ je SHORT G_M2401_IG09
mov r14d, dword ptr [r15+0x44] xor r13d, r13d jmp SHORT G_M2401_IG04 @@ -77,27 +77,25 @@ G_M2401_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre G_M2401_IG03: ; bbWeight=1.44, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r12] cmp edi, 2
- jg SHORT G_M2401_IG12
+ jg SHORT G_M2401_IG11
;; size=5 bbWeight=1.44 PerfScore 1.81 G_M2401_IG04: ; bbWeight=2.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r12] cmp r14d, dword ptr [r15+0x44]
- jne SHORT G_M2401_IG08 - ;; size=6 bbWeight=2.44 PerfScore 9.78 -G_M2401_IG05: ; bbWeight=2.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jne SHORT G_M2401_IG07
mov edi, dword ptr [r15+0x38]
- ;; size=4 bbWeight=2.44 PerfScore 4.89 -G_M2401_IG06: ; bbWeight=2.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=2.44 PerfScore 14.67 +G_M2401_IG05: ; bbWeight=2.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, edi
- jae SHORT G_M2401_IG10
+ jae SHORT G_M2401_IG09
;; size=5 bbWeight=2.44 PerfScore 3.06
-G_M2401_IG07: ; bbWeight=1.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M2401_IG06: ; bbWeight=1.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [r15+0x10] ; gcrRegs +[rsi] lea eax, [r13+0x01] mov r12d, eax cmp r13d, dword ptr [rsi+0x08]
- jae SHORT G_M2401_IG09
+ jae SHORT G_M2401_IG08
mov eax, r13d lea rax, [rax+2*rax] lea rsi, bword ptr [rsi+8*rax+0x10] @@ -105,27 +103,27 @@ G_M2401_IG07: ; bbWeight=1.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { ; byrRegs +[rsi] cmp dword ptr [rsi+0x0C], -1 mov r13d, r12d
- jl SHORT G_M2401_IG06
+ jl SHORT G_M2401_IG05
mov r12, gword ptr [rsi] ; gcrRegs +[r12] mov edi, dword ptr [rsi+0x10] jmp SHORT G_M2401_IG03 ;; size=46 bbWeight=1.14 PerfScore 21.39
-G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r12 r15] ; byrRegs -[rsi] call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M2401_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M2401_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M2401_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M2401_IG10: ; bbWeight=0, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -135,7 +133,7 @@ G_M2401_IG11: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0 PerfScore 0.00
-G_M2401_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M2401_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r12 r15] mov rdi, gword ptr [rbx+0x40] ; gcrRegs +[rdi] @@ -154,10 +152,10 @@ G_M2401_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=9008 {r mov rdx, gword ptr [rbx+0x30] ; gcrRegs +[rdx] test rdx, rdx
- jne SHORT G_M2401_IG13
+ jne SHORT G_M2401_IG12
mov rdx, gword ptr [rbx+0x38] ;; size=42 bbWeight=0 PerfScore 0.00
-G_M2401_IG13: ; bbWeight=0, gcrefRegs=900C {rdx rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M2401_IG12: ; bbWeight=0, gcrefRegs=900C {rdx rbx r12 r15}, byrefRegs=0000 {}, byref
; byrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -192,12 +190,10 @@ G_M2401_IG13: ; bbWeight=0, gcrefRegs=900C {rdx rbx r12 r15}, byrefRegs=0 call [System.Linq.Expressions.Compiler.CompilerScope:CacheBoxToLocal(System.Linq.Expressions.Compiler.LambdaCompiler,System.Linq.Expressions.ParameterExpression):this] ; gcrRegs -[rdx rsi rdi r12] ; gcr arg pop 0
- cmp r14d, dword ptr [r15+0x44] - je G_M2401_IG05 - jmp G_M2401_IG08 - ;; size=87 bbWeight=0 PerfScore 0.00
+ jmp G_M2401_IG04 + ;; size=77 bbWeight=0 PerfScore 0.00
-Total bytes of code 260, prolog size 19, PerfScore 56.17, instruction count 80, allocated bytes for code 260 (MethodHash=9d11f69e) for method System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
+Total bytes of code 250, prolog size 19, PerfScore 56.17, instruction count 78, allocated bytes for code 250 (MethodHash=9d11f69e) for method System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
; ============================================================ Unwind Info:

-11 (-3.35%) : 288020.dasm - CGRecurse.RecursiveAAA:A() (FullOpts)

@@ -30,12 +30,12 @@ ;* V19 tmp19 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp20 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp21 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp22 [V22,T13] ( 2, 7.59) byref -> rax "Inlining Arg" -; V23 tmp23 [V23,T14] ( 2, 7.59) byref -> rcx "Inlining Arg"
+; V22 tmp22 [V22,T13] ( 2, 7.59) byref -> rdi "Inlining Arg" +; V23 tmp23 [V23,T14] ( 2, 7.59) byref -> rsi "Inlining Arg"
;* V24 tmp24 [V24 ] ( 0, 0 ) long -> zero-ref "spilling arg"
-; V25 cse0 [V25,T06] ( 3, 12 ) int -> rdi "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 3, 12 ) int -> rax "CSE - aggressive"
; V26 cse1 [V26,T03] ( 3, 20 ) int -> rax "CSE - aggressive"
-; V27 cse2 [V27,T01] ( 7, 29 ) long -> r14 "CSE - aggressive"
+; V27 cse2 [V27,T01] ( 7, 29 ) long -> rbx "CSE - aggressive"
; V28 cse3 [V28,T02] ( 3, 24 ) long -> rbx "CSE - aggressive" ; V29 cse4 [V29,T11] ( 5, 9.45) int -> r14 "CSE - moderate" ; V30 cse5 [V30,T04] ( 9, 17.07) ref -> rsi multi-def "CSE - aggressive" @@ -57,44 +57,34 @@ G_M53652_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15, gword ptr [rbx] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M53652_IG05
+ je SHORT G_M53652_IG08
;; size=18 bbWeight=8 PerfScore 28.00 G_M53652_IG03: ; bbWeight=1.88, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz mov r14d, dword ptr [r15+0x08] test r14d, r14d
- je SHORT G_M53652_IG05
+ je SHORT G_M53652_IG08
;; size=9 bbWeight=1.88 PerfScore 6.10 G_M53652_IG04: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz mov r13d, r14d lea edi, [r13+0x01] test edi, edi
- jl G_M53652_IG19 - jmp SHORT G_M53652_IG06 - ;; size=17 bbWeight=1.90 PerfScore 7.59 -G_M53652_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r15] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - jmp G_M53652_IG13 - ;; size=15 bbWeight=2 PerfScore 4.50 -G_M53652_IG06: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] +[r15]
+ jl G_M53652_IG18
call <unknown method> ; gcrRegs +[rax] mov r12, rax ; gcrRegs +[r12] test r12, r12
- jne SHORT G_M53652_IG07
+ jne SHORT G_M53652_IG05
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rax rsi rdi]
- ;; size=32 bbWeight=1.90 PerfScore 11.38 -G_M53652_IG07: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=47 bbWeight=1.90 PerfScore 15.17 +G_M53652_IG05: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r12+0x08], r14d
- jge SHORT G_M53652_IG08
+ jge SHORT G_M53652_IG06
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -102,7 +92,7 @@ G_M53652_IG07: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=26 bbWeight=1.90 PerfScore 14.22
-G_M53652_IG08: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
+G_M53652_IG06: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, bword ptr [r12+0x0C] ; byrRegs +[rdi] lea rsi, bword ptr [r15+0x0C] @@ -110,23 +100,32 @@ G_M53652_IG08: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 mov edx, r14d add rdx, rdx cmp rdx, 2
- jne SHORT G_M53652_IG10
+ jne SHORT G_M53652_IG09
;; size=21 bbWeight=1.90 PerfScore 5.22
-G_M53652_IG09: ; bbWeight=0.95, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M53652_IG07: ; bbWeight=0.95, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[r15] movzx rdx, word ptr [rsi] mov word ptr [rdi], dx
- jmp SHORT G_M53652_IG11
+ jmp SHORT G_M53652_IG10
;; size=8 bbWeight=0.95 PerfScore 4.74
-G_M53652_IG10: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, byref
+G_M53652_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r12] + ; byrRegs -[rsi rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + jmp SHORT G_M53652_IG12 + ;; size=12 bbWeight=2 PerfScore 4.50 +G_M53652_IG09: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs -[rsi] +[r12] + ; byrRegs +[rsi rdi]
call [<unknown method>] ; byrRegs -[rsi rdi] ;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M53652_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
+G_M53652_IG10: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [r12+0x08] sub edi, r13d test edi, edi
- jg SHORT G_M53652_IG12
+ jg SHORT G_M53652_IG11
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -134,44 +133,45 @@ G_M53652_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=31 bbWeight=1.90 PerfScore 13.28
-G_M53652_IG12: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref - movsxd rax, r13d - lea rax, bword ptr [r12+2*rax+0x0C] - ; byrRegs +[rax] - mov rcx, 0xD1FFAB1E - ; byrRegs +[rcx] - movzx rdx, word ptr [rcx] - mov word ptr [rax], dx
+G_M53652_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref + movsxd rdi, r13d + lea rdi, bword ptr [r12+2*rdi+0x0C] + ; byrRegs +[rdi] + mov rsi, 0xD1FFAB1E + ; byrRegs +[rsi] + movzx rax, word ptr [rsi] + mov word ptr [rdi], ax
mov rsi, r12 ; gcrRegs +[rsi]
+ ; byrRegs -[rsi]
;; size=27 bbWeight=1.90 PerfScore 9.01
-G_M53652_IG13: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M53652_IG12: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r12]
- ; byrRegs -[rax rcx]
+ ; byrRegs -[rdi]
mov rdi, rbx call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rsi]
- mov r14, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov eax, dword ptr [r14]
+ mov rbx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + mov eax, dword ptr [rbx]
cmp eax, 1
- je SHORT G_M53652_IG15 - ;; size=26 bbWeight=8 PerfScore 38.00 -G_M53652_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M53652_IG14 + ;; size=25 bbWeight=8 PerfScore 38.00 +G_M53652_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc eax
- mov dword ptr [r14], eax
+ mov dword ptr [rbx], eax
call [CGRecurse.RecursiveAAA:A()]
- mov edi, dword ptr [r14] - cmp edi, 1 - je SHORT G_M53652_IG17 - inc edi - mov dword ptr [r14], edi
+ mov eax, dword ptr [rbx] + cmp eax, 1 + je SHORT G_M53652_IG16 + inc eax + mov dword ptr [rbx], eax
jmp G_M53652_IG02
- ;; size=29 bbWeight=4 PerfScore 43.00 -G_M53652_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor edi, edi - mov dword ptr [r14], edi - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M53652_IG16: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=26 bbWeight=4 PerfScore 43.00 +G_M53652_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + xor eax, eax + mov dword ptr [rbx], eax + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M53652_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -181,11 +181,11 @@ G_M53652_IG16: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M53652_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - xor edi, edi - mov dword ptr [r14], edi - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M53652_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M53652_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + mov dword ptr [rbx], eax + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M53652_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -195,12 +195,12 @@ G_M53652_IG18: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M53652_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53652_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 328, prolog size 16, PerfScore 203.72, instruction count 94, allocated bytes for code 328 (MethodHash=292d2e6b) for method CGRecurse.RecursiveAAA:A() (FullOpts)
+Total bytes of code 317, prolog size 16, PerfScore 199.93, instruction count 93, allocated bytes for code 317 (MethodHash=292d2e6b) for method CGRecurse.RecursiveAAA:A() (FullOpts)
; ============================================================ Unwind Info:

-10 (-2.68%) : 224167.dasm - MSjumpscs.VT:ToStringHelper():System.String:this (FullOpts)

@@ -33,12 +33,12 @@ ;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp21 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp22 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp23 [V25,T11] ( 2, 7.59) byref -> rax "Inlining Arg" -; V26 tmp24 [V26,T12] ( 2, 7.59) byref -> rdi "Inlining Arg"
+; V25 tmp23 [V25,T11] ( 2, 7.59) byref -> rdi "Inlining Arg" +; V26 tmp24 [V26,T12] ( 2, 7.59) byref -> rsi "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) long -> zero-ref "spilling arg" ; V28 cse0 [V28,T09] ( 5, 9.45) int -> r14 "CSE - aggressive" ; V29 cse1 [V29,T03] ( 9, 17.07) ref -> rsi multi-def "CSE - aggressive"
-; V30 rat0 [V30,T00] ( 3, 48 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; V30 rat0 [V30,T00] ( 3, 48 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 8 @@ -59,35 +59,25 @@ G_M38274_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr mov r15, gword ptr [rbx] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M38274_IG05
+ je SHORT G_M38274_IG08
;; size=8 bbWeight=8 PerfScore 26.00 G_M38274_IG03: ; bbWeight=1.88, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz mov r14d, dword ptr [r15+0x08] test r14d, r14d
- je SHORT G_M38274_IG05
+ je SHORT G_M38274_IG08
;; size=9 bbWeight=1.88 PerfScore 6.10 G_M38274_IG04: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz mov r13d, r14d lea edi, [r13+0x10] test edi, edi
- jl G_M38274_IG20 - jmp SHORT G_M38274_IG06 - ;; size=17 bbWeight=1.90 PerfScore 7.59 -G_M38274_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[r15] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - jmp G_M38274_IG13 - ;; size=15 bbWeight=2 PerfScore 4.50 -G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rsi] +[r15]
+ jl G_M38274_IG19
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 mov r12, rax ; gcrRegs +[r12] test r12, r12
- jne SHORT G_M38274_IG07
+ jne SHORT G_M38274_IG05
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -95,10 +85,10 @@ G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx call [<unknown method>] ; gcrRegs -[rax rsi rdi] ; gcr arg pop 0
- ;; size=32 bbWeight=1.90 PerfScore 11.38 -G_M38274_IG07: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=47 bbWeight=1.90 PerfScore 15.17 +G_M38274_IG05: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [r12+0x08], r14d
- jge SHORT G_M38274_IG08
+ jge SHORT G_M38274_IG06
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -107,7 +97,7 @@ G_M38274_IG07: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 ; gcrRegs -[rsi rdi] ; gcr arg pop 0 ;; size=26 bbWeight=1.90 PerfScore 14.22
-G_M38274_IG08: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 {rbx}, byref, isz
lea rdi, bword ptr [r12+0x0C] ; byrRegs +[rdi] lea rsi, bword ptr [r15+0x0C] @@ -115,24 +105,33 @@ G_M38274_IG08: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 mov edx, r14d add rdx, rdx cmp rdx, 2
- jne SHORT G_M38274_IG10
+ jne SHORT G_M38274_IG09
;; size=21 bbWeight=1.90 PerfScore 5.22
-G_M38274_IG09: ; bbWeight=0.95, gcrefRegs=1000 {r12}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M38274_IG07: ; bbWeight=0.95, gcrefRegs=1000 {r12}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[r15] movzx rdx, word ptr [rsi] mov word ptr [rdi], dx
- jmp SHORT G_M38274_IG11
+ jmp SHORT G_M38274_IG10
;; size=8 bbWeight=0.95 PerfScore 4.74
-G_M38274_IG10: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=00C8 {rbx rsi rdi}, byref
+G_M38274_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs -[r12] + ; byrRegs -[rsi rdi] + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + jmp SHORT G_M38274_IG12 + ;; size=12 bbWeight=2 PerfScore 4.50 +G_M38274_IG09: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=00C8 {rbx rsi rdi}, byref + ; gcrRegs -[rsi] +[r12] + ; byrRegs +[rsi rdi]
call [<unknown method>] ; byrRegs -[rsi rdi] ; gcr arg pop 0 ;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG10: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx}, byref, isz
mov edi, dword ptr [r12+0x08] sub edi, r13d cmp edi, 16
- jge SHORT G_M38274_IG12
+ jge SHORT G_M38274_IG11
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -141,46 +140,46 @@ G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx ; gcrRegs -[rsi rdi] ; gcr arg pop 0 ;; size=32 bbWeight=1.90 PerfScore 13.28
-G_M38274_IG12: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx}, byref - movsxd rax, r13d - lea rax, bword ptr [r12+2*rax+0x0C] - ; byrRegs +[rax] - mov rdi, 0xD1FFAB1E
+G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx}, byref + movsxd rdi, r13d + lea rdi, bword ptr [r12+2*rdi+0x0C]
; byrRegs +[rdi]
- vmovdqu ymm0, ymmword ptr [rdi] - vmovdqu ymmword ptr [rax], ymm0
+ mov rsi, 0xD1FFAB1E + ; byrRegs +[rsi] + vmovdqu ymm0, ymmword ptr [rsi] + vmovdqu ymmword ptr [rdi], ymm0
mov rsi, r12 ; gcrRegs +[rsi]
+ ; byrRegs -[rsi]
;; size=29 bbWeight=1.90 PerfScore 16.60
-G_M38274_IG13: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG12: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r12]
- ; byrRegs -[rax rdi]
+ ; byrRegs -[rdi]
mov rdi, rbx ; byrRegs +[rdi] call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rsi] ; byrRegs -[rdi]
- mov r12d, dword ptr [rbx+0x08] - cmp r12d, 2 - ja SHORT G_M38274_IG19 - mov eax, r12d
+ mov eax, dword ptr [rbx+0x08] + cmp eax, 2 + ja SHORT G_M38274_IG18
lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rax] lea rcx, G_M38274_IG02 add rdi, rcx jmp rdi
- ;; size=43 bbWeight=8 PerfScore 84.00 -G_M38274_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=8 PerfScore 82.00 +G_M38274_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax mov dword ptr [rbx+0x08], eax jmp G_M38274_IG02 ;; size=10 bbWeight=4 PerfScore 13.00
-G_M38274_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38274_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx] mov rax, 0xD1FFAB1E ; gcrRegs +[rax] ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M38274_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M38274_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -190,7 +189,7 @@ G_M38274_IG16: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M38274_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M38274_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax] ; byrRegs +[rbx] xor edi, edi @@ -198,7 +197,7 @@ G_M38274_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rdi, rbx ; byrRegs +[rdi] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M38274_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M38274_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -209,7 +208,7 @@ G_M38274_IG18: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [MS_jumps_cs.VT:ToString():System.String:this] ; gcr arg pop 0 ;; size=20 bbWeight=0.50 PerfScore 2.62
-G_M38274_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38274_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rbx rdi] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -228,17 +227,17 @@ G_M38274_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[rbx rdi] ; gcr arg pop 0 ;; size=35 bbWeight=0 PerfScore 0.00
-G_M38274_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38274_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M38274_IG15 - G_M38274_IG02 - dd G_M38274_IG14 - G_M38274_IG02 - dd G_M38274_IG17 - G_M38274_IG02
+RWD00 dd G_M38274_IG14 - G_M38274_IG02 + dd G_M38274_IG13 - G_M38274_IG02 + dd G_M38274_IG16 - G_M38274_IG02
-Total bytes of code 373, prolog size 22, PerfScore 226.69, instruction count 101, allocated bytes for code 373 (MethodHash=79da6a7d) for method MS_jumps_cs.VT:ToStringHelper():System.String:this (FullOpts)
+Total bytes of code 363, prolog size 22, PerfScore 220.89, instruction count 99, allocated bytes for code 363 (MethodHash=79da6a7d) for method MS_jumps_cs.VT:ToStringHelper():System.String:this (FullOpts)
; ============================================================ Unwind Info:

+48 (+7.06%) : 452736.dasm - System.Collections.Generic.ArraySortHelper1[System.ValueTuple2[ushort,ushort]]:IntroSort(System.Span1[System.ValueTuple2[ushort,ushort]],int,System.Comparison1[System.ValueTuple2[ushort,ushort]]) (Instrumented Tier1)

@@ -10,8 +10,8 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.ValueTuple`2[ushort,ushort]]> ; V01 arg1 [V01,T04] ( 7, 8.50) int -> r14
-; V02 arg2 [V02,T02] ( 15, 9 ) ref -> r15 class-hnd single-def <System.Comparison`1[System.ValueTuple`2[ushort,ushort]]> -; V03 loc0 [V03,T03] ( 14, 11 ) int -> r12
+; V02 arg2 [V02,T03] ( 15, 9 ) ref -> r15 class-hnd single-def <System.Comparison`1[System.ValueTuple`2[ushort,ushort]]> +; V03 loc0 [V03,T01] ( 16, 12 ) int -> r12
; V04 loc1 [V04,T20] ( 3, 1.50) int -> [rbp-0x2C] spill-single-def ; V05 loc2 [V05,T21] ( 3, 1.50) int -> rdi ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -49,7 +49,7 @@ ; V38 tmp32 [V38,T15] ( 2, 2 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg" ;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp35 [V41,T01] ( 16, 8.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp35 [V41,T02] ( 16, 8.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V42 tmp36 [V42,T05] ( 9, 6.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP ;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP @@ -99,7 +99,7 @@ ; V88 cse1 [V88,T07] ( 11, 5.50) byref -> r12 multi-def "CSE - aggressive" ; V89 cse2 [V89,T09] ( 7, 3.50) byref -> r13 "CSE - moderate" ; V90 cse3 [V90,T22] ( 3, 1.50) long -> rdi "CSE - conservative"
-; V91 cse4 [V91,T00] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V91 cse4 [V91,T00] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -158,20 +158,32 @@ G_M22846_IG07: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx G_M22846_IG08: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref mov r12d, r13d cmp r13d, 1
- jle G_M22846_IG13
+ jle G_M22846_IG15
;; size=13 bbWeight=1 PerfScore 1.50 G_M22846_IG09: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref cmp r12d, 16
- jle G_M22846_IG14
+ jle G_M22846_IG16
test r14d, r14d
- je G_M22846_IG20
+ je G_M22846_IG22
;; size=19 bbWeight=4 PerfScore 10.00 G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 dec r14d cmp r12d, r13d
- ja G_M22846_IG24
+ ja G_M22846_IG27 + test r12d, r12d + jge SHORT G_M22846_IG12 + ;; size=32 bbWeight=0.50 PerfScore 2.00 +G_M22846_IG11: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d mov rdi, rbx ; byrRegs +[rdi] @@ -187,15 +199,15 @@ G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx add rsi, rdi mov ecx, r13d cmp rsi, rcx
- ja G_M22846_IG24
+ ja G_M22846_IG27
lea rcx, bword ptr [rbx+4*rdi] ; byrRegs +[rcx] mov bword ptr [rbp-0x38], rcx ; GC ptr vars +{V38} test r12d, r12d
- jge SHORT G_M22846_IG12 - ;; size=82 bbWeight=0.50 PerfScore 6.50 -G_M22846_IG11: ; bbWeight=2, gcVars=0000000000008000 {V38}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M22846_IG14 + ;; size=55 bbWeight=0.50 PerfScore 5.12 +G_M22846_IG13: ; bbWeight=2, gcVars=0000000000008000 {V38}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -204,7 +216,7 @@ G_M22846_IG11: ; bbWeight=2, gcVars=0000000000008000 {V38}, gcrefRegs=800 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=2 PerfScore 7.00
-G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r12d @@ -219,18 +231,18 @@ G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx cmp r12d, 1 jg G_M22846_IG09 ;; size=33 bbWeight=0.50 PerfScore 3.50
-G_M22846_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15] ; byrRegs -[rbx] mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32
- jmp G_M22846_IG21
+ jmp G_M22846_IG24
;; size=20 bbWeight=0.50 PerfScore 1.62
-G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r15] ; byrRegs +[rbx] cmp r12d, 2
- jne SHORT G_M22846_IG15
+ jne SHORT G_M22846_IG17
mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov r14, rbx @@ -244,20 +256,20 @@ G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx call [r15+0x18]<unknown method> ; gcrRegs -[rdi r15] test eax, eax
- jle G_M22846_IG21
+ jle G_M22846_IG24
movzx rdi, word ptr [rbx] movzx rax, word ptr [rbx+0x02] mov ecx, dword ptr [r12] mov dword ptr [r14], ecx mov word ptr [r12], di mov word ptr [r12+0x02], ax
- jmp G_M22846_IG21
+ jmp G_M22846_IG24
;; size=81 bbWeight=0.50 PerfScore 12.25
-G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r15] ; byrRegs -[r12 r14] cmp r12d, 3
- jne G_M22846_IG18
+ jne G_M22846_IG20
mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov r14, rbx @@ -271,7 +283,7 @@ G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx call [r15+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M22846_IG16
+ jle SHORT G_M22846_IG18
movzx rsi, word ptr [rbx] movzx rdx, word ptr [rbx+0x02] mov edi, dword ptr [r12] @@ -281,11 +293,11 @@ G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx mov word ptr [rdi], si mov word ptr [rdi+0x02], dx ;; size=75 bbWeight=0.50 PerfScore 11.38
-G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=5008 {rbx r12 r14}, byref, isz
+G_M22846_IG18: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=5008 {rbx r12 r14}, byref, isz
; byrRegs -[rdi] mov esi, dword ptr [r14] cmp r13d, 2
- jbe G_M22846_IG23
+ jbe G_M22846_IG26
lea r13, bword ptr [rbx+0x08] ; byrRegs +[r13] mov edx, dword ptr [r13] @@ -294,7 +306,7 @@ G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=5008 {rbx call [r15+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M22846_IG17
+ jle SHORT G_M22846_IG19
movzx rsi, word ptr [rbx] movzx rdx, word ptr [rbx+0x02] mov edi, dword ptr [r13] @@ -304,7 +316,7 @@ G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=5008 {rbx mov word ptr [rdi], si mov word ptr [rdi+0x02], dx ;; size=57 bbWeight=0.50 PerfScore 10.62
-G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=3000 {r12 r13}, byref, isz
+G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=3000 {r12 r13}, byref, isz
; byrRegs -[rbx rdi r14] mov esi, dword ptr [r12] mov edx, dword ptr [r13] @@ -313,7 +325,7 @@ G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=3000 {r12 call [r15+0x18]<unknown method> ; gcrRegs -[rdi r15] test eax, eax
- jle G_M22846_IG21
+ jle G_M22846_IG24
mov rdi, r12 ; byrRegs +[rdi] movzx rax, word ptr [rdi] @@ -323,17 +335,17 @@ G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=3000 {r12 mov dword ptr [r12], ecx mov word ptr [r13], ax mov word ptr [r13+0x02], di
- jmp SHORT G_M22846_IG21
+ jmp SHORT G_M22846_IG24
;; size=54 bbWeight=0.50 PerfScore 10.75
-G_M22846_IG18: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG20: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r15] ; byrRegs -[r12-r13] +[rbx] mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 cmp r12d, r13d
- ja SHORT G_M22846_IG24
+ ja SHORT G_M22846_IG27
test r12d, r12d
- jge SHORT G_M22846_IG19
+ jge SHORT G_M22846_IG21
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -341,7 +353,7 @@ G_M22846_IG18: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=44 bbWeight=0.50 PerfScore 3.62
-G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG21: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d mov rdi, rbx ; byrRegs +[rdi] @@ -350,15 +362,25 @@ G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx call [System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[ushort,ushort]]:InsertionSort(System.Span`1[System.ValueTuple`2[ushort,ushort]],System.Comparison`1[System.ValueTuple`2[ushort,ushort]])] ; gcrRegs -[rdx r15] ; byrRegs -[rbx rdi]
- jmp SHORT G_M22846_IG21
+ jmp SHORT G_M22846_IG24
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M22846_IG20: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG22: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r15] ; byrRegs +[rbx] mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 cmp r12d, r13d
- ja SHORT G_M22846_IG24
+ ja SHORT G_M22846_IG27 + test r12d, r12d + jge SHORT G_M22846_IG23 + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=44 bbWeight=0.50 PerfScore 3.62 +G_M22846_IG23: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
...

+48 (+7.61%) : 324339.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span1[uint],int) (Instrumented Tier1)

@@ -10,7 +10,7 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]> ; V01 arg1 [V01,T03] ( 7, 8.50) int -> r15
-; V02 loc0 [V02,T01] ( 14, 11 ) int -> r13
+; V02 loc0 [V02,T01] ( 16, 12 ) int -> r13
; V03 loc1 [V03,T10] ( 3, 1.50) int -> r12 ; V04 loc2 [V04,T07] ( 9, 3.13) byref -> r14 single-def ; V05 loc3 [V05,T08] ( 9, 3.13) byref -> r13 single-def @@ -82,7 +82,7 @@ ; V71 tmp63 [V71,T15] ( 2, 1 ) byref -> rdi "field V51._reference (fldOffset=0x0)" P-INDEP ; V72 tmp64 [V72,T19] ( 2, 1 ) int -> rsi "field V51._length (fldOffset=0x8)" P-INDEP ; V73 cse0 [V73,T12] ( 3, 1.50) long -> rdi "CSE - moderate"
-; V74 cse1 [V74,T00] ( 24, 13.76) ref -> rsi multi-def "CSE - aggressive"
+; V74 cse1 [V74,T00] ( 30, 21.26) ref -> rsi multi-def "CSE - aggressive"
; V75 cse2 [V75,T20] ( 2, 1 ) int -> rdi "CSE - moderate" ; V76 cse3 [V76,T21] ( 2, 1 ) int -> rdi "CSE - moderate" ; V77 cse4 [V77,T22] ( 2, 1 ) int -> rdi "CSE - moderate" @@ -131,20 +131,32 @@ G_M26918_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, G_M26918_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov r13d, r14d cmp r14d, 1
- jle G_M26918_IG11
+ jle G_M26918_IG13
;; size=13 bbWeight=1 PerfScore 1.50 G_M26918_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref cmp r13d, 16
- jle G_M26918_IG12
+ jle G_M26918_IG14
test r15d, r15d
- je G_M26918_IG30
+ je G_M26918_IG32
;; size=19 bbWeight=4 PerfScore 10.00 G_M26918_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 dec r15d cmp r13d, r14d
- ja G_M26918_IG34
+ ja G_M26918_IG37 + test r13d, r13d + jge SHORT G_M26918_IG10 + ;; size=32 bbWeight=0.50 PerfScore 2.00 +G_M26918_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M26918_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r13d mov rdi, rbx ; byrRegs +[rdi] @@ -157,15 +169,15 @@ G_M26918_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, add rsi, rdi mov eax, r14d cmp rsi, rax
- ja G_M26918_IG34
+ ja G_M26918_IG37
lea rax, bword ptr [rbx+4*rdi] ; byrRegs +[rax] mov bword ptr [rbp-0x30], rax ; GC ptr vars +{V52} test r13d, r13d
- jge SHORT G_M26918_IG10 - ;; size=81 bbWeight=0.50 PerfScore 6.00 -G_M26918_IG09: ; bbWeight=2, gcVars=0000000000000200 {V52}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M26918_IG12 + ;; size=54 bbWeight=0.50 PerfScore 4.62 +G_M26918_IG11: ; bbWeight=2, gcVars=0000000000000200 {V52}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rax] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -174,7 +186,7 @@ G_M26918_IG09: ; bbWeight=2, gcVars=0000000000000200 {V52}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=2 PerfScore 7.00
-G_M26918_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M26918_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x30] ; byrRegs +[rdi] mov esi, r13d @@ -186,29 +198,29 @@ G_M26918_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, cmp r13d, 1 jg G_M26918_IG07 ;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M26918_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx] mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32
- jmp G_M26918_IG31
+ jmp G_M26918_IG34
;; size=20 bbWeight=0.50 PerfScore 1.62
-G_M26918_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M26918_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx] cmp r13d, 2
- jne SHORT G_M26918_IG16
+ jne SHORT G_M26918_IG18
mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 lea r13, bword ptr [rbx+0x04] ; byrRegs +[r13] mov edi, dword ptr [rbx] cmp edi, dword ptr [r13]
- jbe G_M26918_IG31
+ jbe G_M26918_IG34
;; size=37 bbWeight=0.50 PerfScore 4.50
-G_M26918_IG13: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M26918_IG15: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref, isz
cmp rbx, r13
- jne SHORT G_M26918_IG15
+ jne SHORT G_M26918_IG17
;; size=5 bbWeight=0.27 PerfScore 0.34
-G_M26918_IG14: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref
+G_M26918_IG16: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -216,34 +228,34 @@ G_M26918_IG14: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r1 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=0.27 PerfScore 0.95
-G_M26918_IG15: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref
+G_M26918_IG17: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref
mov edi, dword ptr [rbx] mov eax, dword ptr [r13] mov dword ptr [rbx], eax mov dword ptr [r13], edi
- jmp G_M26918_IG31
+ jmp G_M26918_IG34
;; size=17 bbWeight=0.27 PerfScore 2.18
-G_M26918_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M26918_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[r13] cmp r13d, 3
- jne G_M26918_IG28
+ jne G_M26918_IG30
mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 cmp r14d, 2
- jbe G_M26918_IG33
+ jbe G_M26918_IG36
lea r14, bword ptr [rbx+0x08] ; byrRegs +[r14] lea r13, bword ptr [rbx+0x04] ; byrRegs +[r13] mov edi, dword ptr [rbx] cmp edi, dword ptr [r13]
- jbe SHORT G_M26918_IG20
+ jbe SHORT G_M26918_IG22
;; size=51 bbWeight=0.50 PerfScore 5.38
-G_M26918_IG17: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
+G_M26918_IG19: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
cmp rbx, r13
- jne SHORT G_M26918_IG19
+ jne SHORT G_M26918_IG21
;; size=5 bbWeight=0.27 PerfScore 0.34
-G_M26918_IG18: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
+G_M26918_IG20: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -251,22 +263,22 @@ G_M26918_IG18: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r1 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=0.27 PerfScore 0.95
-G_M26918_IG19: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
+G_M26918_IG21: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
mov edi, dword ptr [rbx] mov esi, dword ptr [r13] mov dword ptr [rbx], esi mov dword ptr [r13], edi ;; size=12 bbWeight=0.27 PerfScore 1.63
-G_M26918_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
+G_M26918_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
mov edi, dword ptr [rbx] cmp edi, dword ptr [r14]
- jbe SHORT G_M26918_IG24
+ jbe SHORT G_M26918_IG26
;; size=7 bbWeight=0.50 PerfScore 3.00
-G_M26918_IG21: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
+G_M26918_IG23: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
cmp rbx, r14
- jne SHORT G_M26918_IG23
+ jne SHORT G_M26918_IG25
;; size=5 bbWeight=0.27 PerfScore 0.34
-G_M26918_IG22: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
+G_M26918_IG24: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -274,23 +286,23 @@ G_M26918_IG22: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r1 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=0.27 PerfScore 0.95
-G_M26918_IG23: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
+G_M26918_IG25: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
mov edi, dword ptr [rbx] mov esi, dword ptr [r14] mov dword ptr [rbx], esi mov dword ptr [r14], edi ;; size=10 bbWeight=0.27 PerfScore 1.63
-G_M26918_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M26918_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
; byrRegs -[rbx] mov edi, dword ptr [r13] cmp edi, dword ptr [r14]
- jbe G_M26918_IG31
+ jbe G_M26918_IG34
;; size=13 bbWeight=0.50 PerfScore 3.00
-G_M26918_IG25: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M26918_IG27: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
cmp r13, r14
- jne SHORT G_M26918_IG27
+ jne SHORT G_M26918_IG29
;; size=5 bbWeight=0.27 PerfScore 0.34
-G_M26918_IG26: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M26918_IG28: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -298,21 +310,21 @@ G_M26918_IG26: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=0.27 PerfScore 0.95
-G_M26918_IG27: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M26918_IG29: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
mov edi, dword ptr [r13] mov eax, dword ptr [r14] mov dword ptr [r13], eax mov dword ptr [r14], edi
- jmp SHORT G_M26918_IG31
+ jmp SHORT G_M26918_IG34
;; size=16 bbWeight=0.27 PerfScore 2.18
-G_M26918_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M26918_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[r13-r14] +[rbx] mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 cmp r13d, r14d
- ja SHORT G_M26918_IG34
+ ja SHORT G_M26918_IG37
test r13d, r13d
- jge SHORT G_M26918_IG29
+ jge SHORT G_M26918_IG31
mov rsi, 0xD1FFAB1E ...

+48 (+8.25%) : 170369.dasm - System.Collections.Generic.ArraySortHelper1[System.Numerics.Vector2]:IntroSort(System.Span1[System.Numerics.Vector2],int,System.Comparison`1[System.Numerics.Vector2]) (FullOpts)

@@ -10,10 +10,10 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Numerics.Vector2]> ; V01 arg1 [V01,T02] ( 7, 19 ) int -> rbx
-; V02 arg2 [V02,T04] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[System.Numerics.Vector2]> -; V03 loc0 [V03,T01] ( 14, 28.50) int -> r12
+; V02 arg2 [V02,T05] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[System.Numerics.Vector2]> +; V03 loc0 [V03,T00] ( 16, 33 ) int -> r12
; V04 loc1 [V04,T09] ( 3, 12 ) int -> [rbp-0x2C] spill-single-def
-; V05 loc2 [V05,T05] ( 4, 16 ) int -> rdi
+; V05 loc2 [V05,T06] ( 4, 16 ) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Numerics.Vector2]> ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Numerics.Vector2]> @@ -44,13 +44,13 @@ ;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T00] ( 4, 32 ) int -> r12 "Inlining Arg"
+; V36 tmp30 [V36,T01] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Numerics.Vector2]>
-; V38 tmp32 [V38,T06] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V38 tmp32 [V38,T07] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp35 [V41,T03] ( 10, 12.50) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V42 tmp36 [V42,T07] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V41 tmp35 [V41,T04] ( 10, 12.50) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V42 tmp36 [V42,T08] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP @@ -82,7 +82,7 @@ ; V71 cse0 [V71,T13] ( 11, 5.50) byref -> rbx multi-def "CSE - moderate" ; V72 cse1 [V72,T14] ( 11, 5.50) byref -> registers multi-def "CSE - moderate" ; V73 cse2 [V73,T16] ( 7, 3.50) byref -> r13 "CSE - moderate"
-; V74 cse3 [V74,T08] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V74 cse3 [V74,T03] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -142,16 +142,28 @@ G_M41768_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 G_M41768_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref mov r12d, r13d cmp r13d, 1
- jle G_M41768_IG20
+ jle G_M41768_IG23
;; size=13 bbWeight=1 PerfScore 1.50 G_M41768_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz cmp r12d, 16
- jle G_M41768_IG13
+ jle G_M41768_IG15
test ebx, ebx
- je G_M41768_IG19
+ je G_M41768_IG21
dec ebx cmp r12d, r13d
- ja G_M41768_IG23
+ ja G_M41768_IG26 + test r12d, r12d + jge SHORT G_M41768_IG11 + ;; size=34 bbWeight=4 PerfScore 21.00 +G_M41768_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M41768_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
mov esi, r12d mov rdi, r15 ; byrRegs +[rdi] @@ -168,15 +180,15 @@ G_M41768_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, add rsi, rcx mov ecx, r13d cmp rsi, rcx
- ja G_M41768_IG23
+ ja G_M41768_IG26
lea rcx, bword ptr [r15+8*rdi] ; byrRegs +[rcx] mov bword ptr [rbp-0x38], rcx ; GC ptr vars +{V38} test r12d, r12d
- jge SHORT G_M41768_IG11 - ;; size=86 bbWeight=4 PerfScore 58.00 -G_M41768_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref
+ jge SHORT G_M41768_IG13 + ;; size=57 bbWeight=4 PerfScore 42.00 +G_M41768_IG12: ; bbWeight=2, gcVars=0000000000000080 {V38}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rcx] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -185,7 +197,7 @@ G_M41768_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=400 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=2 PerfScore 7.00
-G_M41768_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
+G_M41768_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r12d @@ -200,16 +212,16 @@ G_M41768_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, cmp r12d, 1 jg G_M41768_IG09 ;; size=32 bbWeight=4 PerfScore 28.00
-G_M41768_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41768_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] ; byrRegs -[r15]
- jmp G_M41768_IG20
+ jmp G_M41768_IG23
;; size=5 bbWeight=1 PerfScore 2.00
-G_M41768_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14] ; byrRegs +[r15] cmp r12d, 2
- jne SHORT G_M41768_IG14
+ jne SHORT G_M41768_IG16
mov rbx, r15 ; byrRegs +[rbx] vmovsd xmm0, qword ptr [rbx] @@ -220,18 +232,18 @@ G_M41768_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 call [r14+0x18]<unknown method> ; gcrRegs -[rdi r14] test eax, eax
- jle G_M41768_IG20
+ jle G_M41768_IG23
vmovsd xmm0, qword ptr [rbx] vmovsd xmm1, qword ptr [r15] vmovsd qword ptr [rbx], xmm1 vmovsd qword ptr [r15], xmm0
- jmp G_M41768_IG20
+ jmp G_M41768_IG23
;; size=61 bbWeight=0.50 PerfScore 15.00
-G_M41768_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14] ; byrRegs -[rbx] cmp r12d, 3
- jne G_M41768_IG17
+ jne G_M41768_IG19
mov rbx, r15 ; byrRegs +[rbx] vmovsd xmm0, qword ptr [rbx] @@ -246,16 +258,16 @@ G_M41768_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 call [r14+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M41768_IG15
+ jle SHORT G_M41768_IG17
vmovsd xmm0, qword ptr [rbx] vmovsd xmm1, qword ptr [r12] vmovsd qword ptr [rbx], xmm1 vmovsd qword ptr [r12], xmm0 ;; size=62 bbWeight=0.50 PerfScore 14.25
-G_M41768_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=9008 {rbx r12 r15}, byref, isz
+G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=9008 {rbx r12 r15}, byref, isz
vmovsd xmm0, qword ptr [rbx] cmp r13d, 2
- jbe G_M41768_IG22
+ jbe G_M41768_IG25
lea r13, bword ptr [r15+0x10] ; byrRegs +[r13] vmovsd xmm1, qword ptr [r13] @@ -265,13 +277,13 @@ G_M41768_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=9008 {rbx ; gcrRegs -[rdi] ; byrRegs -[r15] test eax, eax
- jle SHORT G_M41768_IG16
+ jle SHORT G_M41768_IG18
vmovsd xmm0, qword ptr [rbx] vmovsd xmm1, qword ptr [r13] vmovsd qword ptr [rbx], xmm1 vmovsd qword ptr [r13], xmm0 ;; size=56 bbWeight=0.50 PerfScore 14.00
-G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=3000 {r12 r13}, byref, isz
+G_M41768_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=3000 {r12 r13}, byref, isz
; byrRegs -[rbx] vmovsd xmm0, qword ptr [r12] vmovsd xmm1, qword ptr [r13] @@ -280,20 +292,20 @@ G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=3000 {r12 call [r14+0x18]<unknown method> ; gcrRegs -[rdi r14] test eax, eax
- jle SHORT G_M41768_IG20
+ jle SHORT G_M41768_IG23
vmovsd xmm0, qword ptr [r12] vmovsd xmm1, qword ptr [r13] vmovsd qword ptr [r12], xmm1 vmovsd qword ptr [r13], xmm0
- jmp SHORT G_M41768_IG20
+ jmp SHORT G_M41768_IG23
;; size=50 bbWeight=0.50 PerfScore 14.12
-G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14] ; byrRegs -[r12-r13] +[r15] cmp r12d, r13d
- ja SHORT G_M41768_IG23
+ ja SHORT G_M41768_IG26
test r12d, r12d
- jge SHORT G_M41768_IG18
+ jge SHORT G_M41768_IG20
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -301,7 +313,7 @@ G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M41768_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
mov rdi, r15 ; byrRegs +[rdi] mov esi, r12d @@ -310,13 +322,23 @@ G_M41768_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 call [System.Collections.Generic.ArraySortHelper`1[System.Numerics.Vector2]:InsertionSort(System.Span`1[System.Numerics.Vector2],System.Comparison`1[System.Numerics.Vector2])] ; gcrRegs -[rdx r14] ; byrRegs -[rdi r15]
- jmp SHORT G_M41768_IG20
+ jmp SHORT G_M41768_IG23
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14] ; byrRegs +[r15] cmp r12d, r13d
- ja SHORT G_M41768_IG23
+ ja SHORT G_M41768_IG26 + test r12d, r12d + jge SHORT G_M41768_IG22 + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=29 bbWeight=0.50 PerfScore 3.00 +G_M41768_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
mov rdi, r15 ; byrRegs +[rdi] mov esi, r12d @@ -325,11 +347,11 @@ G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15 call [System.Collections.Generic.ArraySortHelper`1[System.Numerics.Vector2]:HeapSort(System.Span`1[System.Numerics.Vector2],System.Comparison`1[System.Numerics.Vector2])] ; gcrRegs -[rdx r14] ; byrRegs -[rdi r15]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
...

libraries.crossgen2.linux.x64.checked.mch

-1 (-0.02%) : 1714.dasm - Program:Main(System.String[]):int (FullOpts)

@@ -1189,7 +1189,7 @@ G_M58511_IG22: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 xor r12d, r12d ;; size=37 bbWeight=1 PerfScore 11.50 G_M58511_IG23: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
- jmp G_M58511_IG31
+ jmp G_M58511_IG40
;; size=5 bbWeight=1 PerfScore 2.00 G_M58511_IG24: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz cmp dword ptr [rbx+0x08], 0 @@ -1274,35 +1274,16 @@ G_M58511_IG29: ; bbWeight=4, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefR mov edi, dword ptr [rax+0x08] mov dword ptr [rbp-0x30], edi ;; size=6 bbWeight=4 PerfScore 12.00
-G_M58511_IG30: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58511_IG30: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] ; GC ptr vars -{V53} mov edi, dword ptr [rbp-0x30] cmp edi, dword ptr [rbp-0x2C]
- jne SHORT G_M58511_IG32 - mov rdi, r13 - ; gcrRegs +[rdi] - lea r11, [(reloc)] ; function address - call [r11]<unknown method> - ; gcrRegs -[rdi] - ; gcr arg pop 0 - cmp rax, 0x2710 - jg G_M58511_IG40 - mov edi, 5 - call [<unknown method>] - ; gcr arg pop 0 - mov edi, dword ptr [rbp-0x34] - inc edi - mov dword ptr [rbp-0x34], edi - ;; size=52 bbWeight=4 PerfScore 58.00 -G_M58511_IG31: ; bbWeight=8, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref - cmp dword ptr [rbp-0x34], 40 - jge G_M58511_IG50 - jmp G_M58511_IG24 - ;; size=15 bbWeight=8 PerfScore 40.00 -G_M58511_IG32: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ je G_M58511_IG39 + ;; size=12 bbWeight=4 PerfScore 16.00 +G_M58511_IG31: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
cmp dword ptr [rbp-0x34], 2
- jge G_M58511_IG35
+ jge G_M58511_IG41
xorps xmm0, xmm0 movups xmmword ptr [rbp-0x150], xmm0 movups xmmword ptr [rbp-0x140], xmm0 @@ -1313,7 +1294,7 @@ G_M58511_IG32: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= call [<unknown method>] ; gcr arg pop 0 ;; size=57 bbWeight=1 PerfScore 10.33
-G_M58511_IG33: ; bbWeight=1, nogc, extend
+G_M58511_IG32: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x150] movups xmmword ptr [rbp-0x60], xmm0 movups xmm0, xmmword ptr [rbp-0x140] @@ -1321,7 +1302,7 @@ G_M58511_IG33: ; bbWeight=1, nogc, extend mov rsi, qword ptr [rbp-0x130] mov qword ptr [rbp-0x40], rsi ;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG34: ; bbWeight=1, extend
+G_M58511_IG33: ; bbWeight=1, extend
mov rsi, qword ptr [(reloc)] ; const ptr mov rsi, gword ptr [rsi] ; gcrRegs +[rsi] @@ -1362,9 +1343,94 @@ G_M58511_IG34: ; bbWeight=1, extend ; gcr arg pop 0 mov edi, dword ptr [rbp-0x2C] mov dword ptr [rbp-0x30], edi
- jmp G_M58511_IG39 - ;; size=116 bbWeight=1 PerfScore 42.25 -G_M58511_IG35: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=111 bbWeight=1 PerfScore 40.25 +G_M58511_IG34: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref + mov r12d, 1 + ;; size=6 bbWeight=1 PerfScore 0.25 +G_M58511_IG35: ; bbWeight=8, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz + cmp dword ptr [rbp-0x34], 45 + jge SHORT G_M58511_IG36 + test r12d, r12d + je G_M58511_IG48 + ;; size=15 bbWeight=8 PerfScore 34.00 +G_M58511_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx r13-r15] + mov eax, dword ptr [rbp-0x30] + cmp eax, dword ptr [rbp-0x2C] + jne G_M58511_IG62 + call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] + ; byrRegs +[rax] + ; gcr arg pop 0 + cmp byte ptr [rax+0x32], 0 + je G_M58511_IG62 + lea rdi, [rbp-0x88] + mov esi, 47 + mov edx, 1 + call [<unknown method>] + ; byrRegs -[rax] + ; gcr arg pop 0 + ;; size=51 bbWeight=1 PerfScore 15.00 +G_M58511_IG37: ; bbWeight=1, nogc, extend + movups xmm0, xmmword ptr [rbp-0x88] + movups xmmword ptr [rbp-0x60], xmm0 + movups xmm0, xmmword ptr [rbp-0x78] + movups xmmword ptr [rbp-0x50], xmm0 + mov rsi, qword ptr [rbp-0x68] + mov qword ptr [rbp-0x40], rsi + ;; size=27 bbWeight=1 PerfScore 10.00 +G_M58511_IG38: ; bbWeight=1, extend + mov rsi, qword ptr [(reloc)] ; const ptr + mov rsi, gword ptr [rsi] + ; gcrRegs +[rsi] + lea rdi, [rbp-0x60] + call [<unknown method>] + ; gcrRegs -[rsi] + ; gcr arg pop 0 + lea rdi, [rbp-0x60] + mov esi, 45 + call [<unknown method>] + ; gcr arg pop 0 + mov rsi, qword ptr [(reloc)] ; const ptr + mov rsi, gword ptr [rsi] + ; gcrRegs +[rsi] + lea rdi, [rbp-0x60] + call [<unknown method>] + ; gcrRegs -[rsi] + ; gcr arg pop 0 + lea rdi, [rbp-0x60] + call [<unknown method>] + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rdi, rax + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rax rdi] + ; gcr arg pop 0 + jmp G_M58511_IG62 + ;; size=79 bbWeight=1 PerfScore 27.50 +G_M58511_IG39: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx r13-r15] + mov rdi, r13 + ; gcrRegs +[rdi] + lea r11, [(reloc)] ; function address + call [r11]<unknown method> + ; gcrRegs -[rdi] + ; gcr arg pop 0 + cmp rax, 0x2710 + jg G_M58511_IG45 + mov edi, 5 + call [<unknown method>] + ; gcr arg pop 0 + mov edi, dword ptr [rbp-0x34] + inc edi + mov dword ptr [rbp-0x34], edi + ;; size=44 bbWeight=4 PerfScore 42.00 +G_M58511_IG40: ; bbWeight=8, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref + cmp dword ptr [rbp-0x34], 40 + jge G_M58511_IG35 + jmp G_M58511_IG24 + ;; size=15 bbWeight=8 PerfScore 40.00 +G_M58511_IG41: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
xorps xmm0, xmm0 movups xmmword ptr [rbp-0x128], xmm0 movups xmmword ptr [rbp-0x118], xmm0 @@ -1375,7 +1441,7 @@ G_M58511_IG35: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= call [<unknown method>] ; gcr arg pop 0 ;; size=47 bbWeight=1 PerfScore 7.33
-G_M58511_IG36: ; bbWeight=1, nogc, extend
+G_M58511_IG42: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x128] movups xmmword ptr [rbp-0x60], xmm0 movups xmm0, xmmword ptr [rbp-0x118] @@ -1383,7 +1449,7 @@ G_M58511_IG36: ; bbWeight=1, nogc, extend mov rsi, qword ptr [rbp-0x108] mov qword ptr [rbp-0x40], rsi ;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG37: ; bbWeight=1, extend
+G_M58511_IG43: ; bbWeight=1, extend
mov rsi, qword ptr [(reloc)] ; const ptr mov rsi, gword ptr [rsi] ; gcrRegs +[rsi] @@ -1425,7 +1491,7 @@ G_M58511_IG37: ; bbWeight=1, extend ; gcrRegs -[rsi] ; gcr arg pop 0 ;; size=119 bbWeight=1 PerfScore 43.50
-G_M58511_IG38: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M58511_IG44: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x60] call [<unknown method>] ; gcrRegs +[rax] @@ -1435,12 +1501,9 @@ G_M58511_IG38: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= call [<unknown method>] ; gcrRegs -[rax rdi] ; gcr arg pop 0
- ;; size=19 bbWeight=1 PerfScore 6.75 -G_M58511_IG39: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref - mov r12d, 1 - jmp G_M58511_IG50 - ;; size=11 bbWeight=1 PerfScore 2.25 -G_M58511_IG40: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M58511_IG34 + ;; size=24 bbWeight=1 PerfScore 8.75 +G_M58511_IG45: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
xorps xmm0, xmm0 movups xmmword ptr [rbp-0x100], xmm0 movups xmmword ptr [rbp-0xF0], xmm0 @@ -1451,7 +1514,7 @@ G_M58511_IG40: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= call [<unknown method>] ; gcr arg pop 0 ;; size=47 bbWeight=1 PerfScore 7.33
-G_M58511_IG41: ; bbWeight=1, nogc, extend
+G_M58511_IG46: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x100] movups xmmword ptr [rbp-0x60], xmm0 movups xmm0, xmmword ptr [rbp-0xF0] @@ -1459,7 +1522,7 @@ G_M58511_IG41: ; bbWeight=1, nogc, extend mov rsi, qword ptr [rbp-0xE0] mov qword ptr [rbp-0x40], rsi ;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG42: ; bbWeight=1, extend
+G_M58511_IG47: ; bbWeight=1, extend
mov rsi, qword ptr [(reloc)] ; const ptr mov rsi, gword ptr [rsi] ; gcrRegs +[rsi] @@ -1493,11 +1556,11 @@ G_M58511_IG42: ; bbWeight=1, extend mov esi, dword ptr [rbp-0x34] call [<unknown method>] ; gcr arg pop 0
- jmp G_M58511_IG38
+ jmp G_M58511_IG44
;; size=97 bbWeight=1 PerfScore 99.00
-G_M58511_IG43: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M58511_IG48: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M58511_IG46
+ jne SHORT G_M58511_IG51
xor edi, edi call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs +[rax] @@ -1516,9 +1579,9 @@ G_M58511_IG43: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= ; GC ptr vars +{V51} mov rdi, qword ptr [(reloc)] ; <unknown class> cmp qword ptr [rax], rdi
- je SHORT G_M58511_IG45
+ je SHORT G_M58511_IG50
;; size=51 bbWeight=4 PerfScore 74.00
-G_M58511_IG44: ; bbWeight=2, gcVars=00000000000000000000000000000200 {V51}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
...

libraries.pmi.linux.x64.checked.mch

-29 (-32.58%) : 221681.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] mov ecx, esi
- test esi, esi - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, eax + jae SHORT G_M3357_IG13
mov edx, ecx movzx rdx, word ptr [rdi+2*rdx+0x0C] cmp edx, 32 je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx cmp eax, ecx jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi] - cmp ecx, eax - jae SHORT G_M3357_IG17 - mov edx, ecx - movzx rdx, word ptr [rdi+2*rdx+0x0C] - cmp edx, 32 - je SHORT G_M3357_IG12 - ;; size=16 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - cmp edx, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc ecx - cmp eax, ecx - jg SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] sub eax, esi ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx sub eax, esi ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-13 (-3.30%) : 91208.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)

@@ -11,12 +11,12 @@ ; V00 this [V00,T05] ( 7, 8 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol> ; V01 arg1 [V01,T10] ( 3, 3 ) ubyte -> rsi single-def ; V02 loc0 [V02,T03] ( 3, 13 ) byref -> r14 single-def
-; V03 loc1 [V03,T00] ( 6, 28 ) ref -> r13 class-hnd <<unknown class>>
+; V03 loc1 [V03,T01] ( 6, 28 ) ref -> r13 class-hnd <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ; V05 loc3 [V05,T02] ( 7, 13.88) ref -> r12 class-hnd exact <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T14] ( 3, 2 ) byref -> r14
-; V08 tmp2 [V08,T01] ( 4, 24 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T00] ( 4, 32 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ; V11 tmp5 [V11,T11] ( 4, 4.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> @@ -39,7 +39,7 @@ ;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref ;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo> ; V30 tmp24 [V30,T04] ( 4, 12 ) long -> rax "Inline stloc first use temp"
-; V31 tmp25 [V31,T06] ( 5, 8 ) ref -> rsi class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
+; V31 tmp25 [V31,T06] ( 4, 10 ) ref -> rsi class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
; V32 tmp26 [V32,T13] ( 2, 2.76) ubyte -> rdi "Inline return value spill temp" ; V33 tmp27 [V33 ] ( 3, 4.15) byref -> [rbp-0x30] must-init pinned "Inline stloc first use temp" ;* V34 tmp28 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -89,15 +89,15 @@ G_M47296_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, G_M47296_IG06: ; bbWeight=2, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref mov rdi, qword ptr [r13+0x08] and rdi, -2
- je G_M47296_IG16
+ je G_M47296_IG17
test dil, 2
- jne G_M47296_IG17
+ jne G_M47296_IG18
call <unknown method> ; gcrRegs +[rax] ;; size=29 bbWeight=2 PerfScore 11.00 G_M47296_IG07: ; bbWeight=2, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref test rax, rax
- jne G_M47296_IG15
+ jne G_M47296_IG16
;; size=9 bbWeight=2 PerfScore 2.50 G_M47296_IG08: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref ; gcrRegs -[rax] @@ -118,7 +118,7 @@ G_M47296_IG08: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r1 call <unknown method> ; gcrRegs -[rax rdi] test rax, rax
- je G_M47296_IG19
+ je G_M47296_IG20
;; size=53 bbWeight=4 PerfScore 35.00 G_M47296_IG09: ; bbWeight=4, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, byref, isz mov rcx, gword ptr [rbp-0x38] @@ -142,17 +142,25 @@ G_M47296_IG10: ; bbWeight=1.38, gcrefRegs=300A {rcx rbx r12 r13}, byrefRe ; byrRegs +[rsi] mov bword ptr [rbp-0x30], rsi test edi, edi
- jne G_M47296_IG20
+ jne G_M47296_IG21
;; size=50 bbWeight=1.38 PerfScore 12.10
-G_M47296_IG11: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG11: ; bbWeight=2, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
; byrRegs -[rsi] xor rsi, rsi ; gcrRegs +[rsi]
+ ;; size=2 bbWeight=2 PerfScore 0.50 +G_M47296_IG12: ; bbWeight=4, gcrefRegs=304A {rcx rbx rsi r12 r13}, byrefRegs=4000 {r14}, byref, isz
test rsi, rsi
- jne G_M47296_IG21 - ;; size=11 bbWeight=4 PerfScore 6.00 -G_M47296_IG12: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rsi]
+ je SHORT G_M47296_IG13 + lea rdi, bword ptr [rcx+0x08] + ; byrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rcx rsi] + ; byrRegs -[rdi] + mov rcx, gword ptr [rbp-0x38] + ; gcrRegs +[rcx] + ;; size=19 bbWeight=4 PerfScore 23.00 +G_M47296_IG13: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
mov rdi, r14 ; byrRegs +[rdi] mov rsi, rcx @@ -166,13 +174,13 @@ G_M47296_IG12: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs= cmp rax, r13 jne G_M47296_IG05 ;; size=23 bbWeight=4 PerfScore 12.00
-G_M47296_IG13: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+G_M47296_IG14: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r13] ; byrRegs -[r14] mov rax, r12 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47296_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24 pop rbx pop r12 @@ -182,7 +190,7 @@ G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M47296_IG16: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r12] add rsp, 24 pop rbx @@ -193,14 +201,14 @@ G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, gcvars, byref
+G_M47296_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] +[rbx r13] ; byrRegs +[r14] xor rax, rax ; gcrRegs +[rax] jmp G_M47296_IG07 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M47296_IG17: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref, isz
+G_M47296_IG18: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs -[rax] and rdi, -4 call <unknown method> @@ -210,18 +218,18 @@ G_M47296_IG17: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r1 mov rdi, qword ptr [r12+0x10] call <unknown method> test rax, rax
- jne SHORT G_M47296_IG18
+ jne SHORT G_M47296_IG19
mov rdi, r12 ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi r12] ;; size=36 bbWeight=0 PerfScore 0.00
-G_M47296_IG18: ; bbWeight=0, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG19: ; bbWeight=0, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
jmp G_M47296_IG07 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M47296_IG19: ; bbWeight=0, gcVars=0000000000000002 {V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
+G_M47296_IG20: ; bbWeight=0, gcVars=0000000000000001 {V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] +[r12]
- ; GC ptr vars +{V01 V08}
+ ; GC ptr vars +{V00 V08}
mov rdi, r12 ; gcrRegs +[rdi] xor esi, esi @@ -229,7 +237,7 @@ G_M47296_IG19: ; bbWeight=0, gcVars=0000000000000002 {V08}, gcrefRegs=300 ; gcrRegs -[rdi] jmp G_M47296_IG09 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M47296_IG20: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG21: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
; gcrRegs +[rcx] mov rdi, r12 ; gcrRegs +[rdi] @@ -237,24 +245,12 @@ G_M47296_IG20: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs= ; gcrRegs -[rcx rdi] +[rax] mov rsi, rax ; gcrRegs +[rsi]
- test rsi, rsi - mov rcx, gword ptr [rbp-0x38] - ; gcrRegs +[rcx] - je G_M47296_IG12 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M47296_IG21: ; bbWeight=0, gcrefRegs=304A {rcx rbx rsi r12 r13}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rax] - lea rdi, bword ptr [rcx+0x08] - ; byrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rcx rsi] - ; byrRegs -[rdi]
mov rcx, gword ptr [rbp-0x38] ; gcrRegs +[rcx] jmp G_M47296_IG12
- ;; size=19 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
-Total bytes of code 394, prolog size 25, PerfScore 136.22, instruction count 110, allocated bytes for code 394 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
+Total bytes of code 381, prolog size 25, PerfScore 153.72, instruction count 108, allocated bytes for code 381 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
; ============================================================ Unwind Info:

-8 (-2.40%) : 267803.dasm - System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)

@@ -12,7 +12,7 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]> ; V02 loc0 [V02,T20] ( 2, 2 ) int -> r13 ; V03 loc1 [V03,T04] ( 4, 32 ) int -> rax
-; V04 loc2 [V04,T10] ( 5, 18 ) int -> rcx
+; V04 loc2 [V04,T10] ( 5, 18 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T22] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -23,7 +23,7 @@ ;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp8 [V13,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp9 [V14,T09] ( 3, 20 ) ref -> rdi class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
-; V15 tmp10 [V15,T11] ( 2, 16 ) ref -> rax class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
+; V15 tmp10 [V15,T11] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
; V16 tmp11 [V16,T06] ( 4, 28 ) ref -> rsi class-hnd "Inlining Arg" <ubyte[]> ; V17 tmp12 [V17,T01] ( 6, 48 ) ref -> registers class-hnd exact "Inlining Arg" <System.IO.Compression.InputBuffer> ;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]> @@ -105,10 +105,10 @@ G_M58280_IG07: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, cmp dword ptr [rdi+0x58], 24 je G_M58280_IG13 ;; size=14 bbWeight=4 PerfScore 24.00
-G_M58280_IG08: ; bbWeight=2, gcrefRegs=8080 {rdi r15}, byrefRegs=4000 {r14}, byref
+G_M58280_IG08: ; bbWeight=2, gcrefRegs=8080 {rdi r15}, byrefRegs=4000 {r14}, byref, isz
cmp dword ptr [rdi+0x58], 23
- je G_M58280_IG13 - ;; size=10 bbWeight=2 PerfScore 8.00
+ je SHORT G_M58280_IG13 + ;; size=6 bbWeight=2 PerfScore 8.00
G_M58280_IG09: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref, isz ; gcrRegs -[rdi] mov rdi, gword ptr [r15+0x10] @@ -121,28 +121,26 @@ G_M58280_IG09: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, mov rax, qword ptr [rax+0x68] call [rax+0x18]<unknown method> ; gcrRegs -[rsi rdi]
- mov ecx, eax - test ecx, ecx
+ test eax, eax
jle SHORT G_M58280_IG13 mov rsi, gword ptr [r15+0x20] ; gcrRegs +[rsi]
- cmp dword ptr [rsi+0x08], ecx
+ cmp dword ptr [rsi+0x08], eax
jl SHORT G_M58280_IG16
- mov rax, gword ptr [r15+0x18] - ; gcrRegs +[rax] - mov rbx, gword ptr [rax+0x10]
+ mov rdi, gword ptr [r15+0x18] + ; gcrRegs +[rdi] + mov rbx, gword ptr [rdi+0x10]
; gcrRegs +[rbx] cmp byte ptr [rbx], bl test rsi, rsi je G_M58280_IG17
- ;; size=57 bbWeight=4 PerfScore 116.00
+ ;; size=55 bbWeight=4 PerfScore 115.00
G_M58280_IG10: ; bbWeight=2, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rax] - cmp dword ptr [rsi+0x08], ecx
+ ; gcrRegs -[rdi] + cmp dword ptr [rsi+0x08], eax
jb G_M58280_IG17 ;; size=9 bbWeight=2 PerfScore 8.00 G_M58280_IG11: ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=4000 {r14}, byref, isz
- mov eax, ecx
cmp dword ptr [rbx+0x1C], 0 jne SHORT G_M58280_IG12 mov dword ptr [rbp-0x2C], eax @@ -157,12 +155,12 @@ G_M58280_IG11: ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=4000 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rcx rsi] ; byrRegs -[rdi]
- xor edi, edi - mov dword ptr [r12+0x18], edi - mov edi, dword ptr [rbp-0x2C] - mov dword ptr [r12+0x1C], edi
+ xor eax, eax + mov dword ptr [r12+0x18], eax + mov eax, dword ptr [rbp-0x2C] + mov dword ptr [r12+0x1C], eax
jmp G_M58280_IG03
- ;; size=50 bbWeight=4 PerfScore 51.00
+ ;; size=48 bbWeight=4 PerfScore 50.00
G_M58280_IG12: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref ; gcrRegs -[r12] mov ebx, r12d @@ -215,7 +213,7 @@ G_M58280_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 333, prolog size 16, PerfScore 339.75, instruction count 96, allocated bytes for code 333 (MethodHash=bf671c57) for method System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
+Total bytes of code 325, prolog size 16, PerfScore 337.75, instruction count 94, allocated bytes for code 325 (MethodHash=bf671c57) for method System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
; ============================================================ Unwind Info:

+17 (+1.75%) : 184548.dasm - Microsoft.VisualBasic.CompilerServices.Utils:PropertyToString(System.Reflection.PropertyInfo):System.String (FullOpts)

@@ -64,7 +64,7 @@ ; V53 tmp42 [V53,T30] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" ; V54 tmp43 [V54,T31] ( 2, 2 ) byref -> rax single-def "Inlining Arg" ;* V55 tmp44 [V55 ] ( 0, 0 ) long -> zero-ref "spilling arg"
-; V56 tmp45 [V56,T22] ( 3, 5.90) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
+; V56 tmp45 [V56,T22] ( 3, 5.90) ref -> registers class-hnd "Inline return value spill temp" <System.String>
; V57 tmp46 [V57,T12] ( 4, 7.59) int -> [rbp-0x2C] spill-single-def "Inline stloc first use temp" ; V58 tmp47 [V58,T19] ( 3, 5.69) int -> rdi "Inline stloc first use temp" ; V59 tmp48 [V59,T04] ( 7, 13.28) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String> @@ -77,15 +77,15 @@ ;* V66 tmp55 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V67 tmp56 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V68 tmp57 [V68,T07] ( 3, 9.48) byref -> rdi "Inlining Arg"
-; V69 tmp58 [V69,T08] ( 3, 9.48) byref -> rsi "Inlining Arg"
+; V69 tmp58 [V69,T08] ( 3, 9.48) byref -> r13 "Inlining Arg"
; V70 tmp59 [V70,T15] ( 2, 7.59) long -> rdx "Inlining Arg" ; V71 tmp60 [V71,T05] ( 3, 11.38) long -> rdx "spilling arg" ;* V72 tmp61 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V73 tmp62 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V74 tmp63 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V75 tmp64 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V76 tmp65 [V76,T13] ( 2, 7.59) byref -> rax "Inlining Arg" -; V77 tmp66 [V77,T14] ( 2, 7.59) byref -> rcx "Inlining Arg"
+; V76 tmp65 [V76,T13] ( 2, 7.59) byref -> rdi "Inlining Arg" +; V77 tmp66 [V77,T14] ( 2, 7.59) byref -> rax "Inlining Arg"
;* V78 tmp67 [V78 ] ( 0, 0 ) long -> zero-ref "spilling arg" ; V79 tmp68 [V79,T28] ( 3, 3 ) ref -> rdi single-def "argument with side effect" ; V80 tmp69 [V80,T20] ( 2, 4 ) ref -> rdx single-def "argument with side effect" @@ -180,9 +180,9 @@ G_M56809_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs +[r14] mov esi, dword ptr [r14+0x08] sub esi, 2
- jo G_M56809_IG35
+ jo G_M56809_IG34
add esi, 1
- jo G_M56809_IG35
+ jo G_M56809_IG34
movsxd rsi, esi mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_OBJ @@ -197,9 +197,9 @@ G_M56809_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rax rsi rdi] mov edi, dword ptr [r14+0x08] sub edi, 1
- jo G_M56809_IG35
+ jo G_M56809_IG34
cmp edi, dword ptr [r14+0x08]
- jae G_M56809_IG34
+ jae G_M56809_IG33
mov rdi, gword ptr [r14+8*rdi+0x10] ; gcrRegs +[rdi] mov rax, qword ptr [rdi] @@ -382,7 +382,7 @@ G_M56809_IG16: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= ; gcrRegs -[rax] mov dword ptr [rbp-0x34], eax test eax, eax
- jle G_M56809_IG32
+ jle G_M56809_IG31
;; size=71 bbWeight=1 PerfScore 16.25 G_M56809_IG17: ; bbWeight=4, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref mov edi, r12d @@ -391,16 +391,19 @@ G_M56809_IG17: ; bbWeight=4, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 mov gword ptr [rbp-0x58], rcx ; GC ptr vars +{V10} test ebx, ebx
- jne G_M56809_IG30
+ jne G_M56809_IG29
;; size=20 bbWeight=4 PerfScore 18.00
-G_M56809_IG18: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56809_IG18: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rcx] + mov rcx, gword ptr [rbp-0x58] + ; gcrRegs +[rcx]
test r13, r13
- je SHORT G_M56809_IG21 - ;; size=5 bbWeight=2 PerfScore 2.50
+ je SHORT G_M56809_IG24 + ;; size=9 bbWeight=2 PerfScore 4.50
G_M56809_IG19: ; bbWeight=1.88, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov edx, dword ptr [r13+0x08] test edx, edx
- je SHORT G_M56809_IG21
+ je SHORT G_M56809_IG24
;; size=8 bbWeight=1.88 PerfScore 6.10 G_M56809_IG20: ; bbWeight=1.90, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref, isz mov dword ptr [rbp-0x30], edx @@ -408,71 +411,76 @@ G_M56809_IG20: ; bbWeight=1.90, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRe mov dword ptr [rbp-0x2C], esi lea edi, [rsi+0x02] test edi, edi
- jl G_M56809_IG36 - jmp SHORT G_M56809_IG22 - ;; size=21 bbWeight=1.90 PerfScore 11.38 -G_M56809_IG21: ; bbWeight=2, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13] - mov r13, 0xD1FFAB1E - ; gcrRegs +[r13] - jmp G_M56809_IG29 - ;; size=15 bbWeight=2 PerfScore 4.50 -G_M56809_IG22: ; bbWeight=1.90, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ jl G_M56809_IG35
call <unknown method> ; gcrRegs -[rcx] +[rax]
- mov gword ptr [rbp-0x60], rax
+ mov rsi, rax + ; gcrRegs +[rsi] + mov gword ptr [rbp-0x60], rsi
; GC ptr vars +{V59}
- test rax, rax - jne SHORT G_M56809_IG23
+ test rsi, rsi + jne SHORT G_M56809_IG21
mov rdi, r15 ; gcrRegs +[rdi] mov rsi, r15
- ; gcrRegs +[rsi]
call [<unknown method>] ; gcrRegs -[rax rsi rdi]
- ;; size=26 bbWeight=1.90 PerfScore 12.80 -G_M56809_IG23: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz - mov rax, gword ptr [rbp-0x60] - ; gcrRegs +[rax] - mov ecx, dword ptr [rbp-0x30] - cmp dword ptr [rax+0x08], ecx - jge SHORT G_M56809_IG24
+ ;; size=48 bbWeight=1.90 PerfScore 20.86 +G_M56809_IG21: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz + mov rsi, gword ptr [rbp-0x60] + ; gcrRegs +[rsi] + mov eax, dword ptr [rbp-0x30] + cmp dword ptr [rsi+0x08], eax + jge SHORT G_M56809_IG22
mov rdi, r15 ; gcrRegs +[rdi] mov rsi, r15
- ; gcrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rax rsi rdi]
+ ; gcrRegs -[rsi rdi]
;; size=24 bbWeight=1.90 PerfScore 18.02
-G_M56809_IG24: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz - mov rax, gword ptr [rbp-0x60] - ; gcrRegs +[rax] - lea rdi, bword ptr [rax+0x0C]
+G_M56809_IG22: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz + mov rsi, gword ptr [rbp-0x60] + ; gcrRegs +[rsi] + lea rdi, bword ptr [rsi+0x0C]
; byrRegs +[rdi]
- lea rsi, bword ptr [r13+0x0C] - ; byrRegs +[rsi]
+ add r13, 12 + ; gcrRegs -[r13] + ; byrRegs +[r13]
mov edx, dword ptr [rbp-0x30] add rdx, rdx cmp rdx, 2
- jne SHORT G_M56809_IG26 - ;; size=24 bbWeight=1.90 PerfScore 8.53 -G_M56809_IG25: ; bbWeight=0.95, gcrefRegs=C000 {r14 r15}, byrefRegs=00C0 {rsi rdi}, byref, isz - ; gcrRegs -[rax r13] - movzx rdx, word ptr [rsi]
+ jne SHORT G_M56809_IG25 + ;; size=24 bbWeight=1.90 PerfScore 8.06 +G_M56809_IG23: ; bbWeight=0.95, gcrefRegs=C000 {r14 r15}, byrefRegs=2080 {rdi r13}, byref, isz + ; gcrRegs -[rsi] + movzx rdx, word ptr [r13]
mov word ptr [rdi], dx
- jmp SHORT G_M56809_IG27 - ;; size=8 bbWeight=0.95 PerfScore 4.74 -G_M56809_IG26: ; bbWeight=1.90, gcrefRegs=C000 {r14 r15}, byrefRegs=00C0 {rsi rdi}, byref
+ jmp SHORT G_M56809_IG26 + ;; size=10 bbWeight=0.95 PerfScore 4.74 +G_M56809_IG24: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rcx] + ; byrRegs -[rdi r13] + ; GC ptr vars -{V04 V59} + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + jmp SHORT G_M56809_IG28 + ;; size=12 bbWeight=2 PerfScore 4.50 +G_M56809_IG25: ; bbWeight=1.90, gcVars=0000000020000810 {V04 V10 V59}, gcrefRegs=C000 {r14 r15}, byrefRegs=2080 {rdi r13}, gcvars, byref + ; gcrRegs -[rcx rsi] + ; byrRegs +[rdi r13] + ; GC ptr vars +{V04 V59} + mov rsi, r13 + ; byrRegs +[rsi]
call [<unknown method>]
- ; byrRegs -[rsi rdi] - ;; size=6 bbWeight=1.90 PerfScore 5.69 -G_M56809_IG27: ; bbWeight=1.90, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rsi rdi r13] + ;; size=9 bbWeight=1.90 PerfScore 6.16 +G_M56809_IG26: ; bbWeight=1.90, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov r13, gword ptr [rbp-0x60] ; gcrRegs +[r13] mov edi, dword ptr [r13+0x08] sub edi, dword ptr [rbp-0x2C] cmp edi, 2
- jge SHORT G_M56809_IG28
+ jge SHORT G_M56809_IG27
mov rdi, r15 ; gcrRegs +[rdi] mov rsi, r15 @@ -480,27 +488,34 @@ G_M56809_IG27: ; bbWeight=1.90, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=28 bbWeight=1.90 PerfScore 18.49
-G_M56809_IG28: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref - movsxd rax, dword ptr [rbp-0x2C] - lea rax, bword ptr [r13+2*rax+0x0C]
+G_M56809_IG27: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref + movsxd rdi, dword ptr [rbp-0x2C] + lea rdi, bword ptr [r13+2*rdi+0x0C] + ; byrRegs +[rdi] + mov rax, 0xD1FFAB1E
; byrRegs +[rax]
- mov rcx, 0xD1FFAB1E - ; byrRegs +[rcx] - mov edx, dword ptr [rcx] - mov dword ptr [rax], edx
+ mov ecx, dword ptr [rax] + mov dword ptr [rdi], ecx + mov rsi, r13 + ; gcrRegs +[rsi]
mov rcx, gword ptr [rbp-0x58] ; gcrRegs +[rcx]
- ; byrRegs -[rcx] - ;; size=27 bbWeight=1.90 PerfScore 17.54 -G_M56809_IG29: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; byrRegs -[rax]
+ ;; size=30 bbWeight=1.90 PerfScore 18.02 +G_M56809_IG28: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=C042 {rcx rsi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r13] + ; byrRegs -[rax rdi]
; GC ptr vars -{V04 V59}
- jmp SHORT G_M56809_IG31 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M56809_IG30: ; bbWeight=2, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref
+ mov r13, rsi + ; gcrRegs +[r13] + jmp SHORT G_M56809_IG30 + ;; size=5 bbWeight=2 PerfScore 4.50 +G_M56809_IG29: ; bbWeight=2, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx rsi] + mov rcx, gword ptr [rbp-0x58] + ; gcrRegs +[rcx]
xor ebx, ebx
- ;; size=2 bbWeight=2 PerfScore 0.50 -G_M56809_IG31: ; bbWeight=4, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
...

+22 (+3.93%) : 205533.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rcx "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rax "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> rbx "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> rsi single-def "field V03._array (fldOffset=0x0)" P-INDEP ; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r8 "field V03._index (fldOffset=0x8)" P-INDEP ; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r9 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP ;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rcx "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rax "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [rbp-0x30] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP ; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r15 "field V06.array (fldOffset=0x0)" P-INDEP ; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rsi single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> rsi single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rcx "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rax "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> rdx "CSE - aggressive" ; @@ -96,83 +96,62 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0 call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x28], rax
+ mov rcx, rax + ; gcrRegs +[rcx] + mov gword ptr [rbp-0x28], rcx
; GC ptr vars +{V02}
- ;; size=82 bbWeight=0.50 PerfScore 8.25 -G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=85 bbWeight=0.50 PerfScore 8.38 +G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x20] ; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x68] ; gcrRegs +[rsi] mov edx, dword ptr [rsi+0x08]
- xor ecx, ecx
+ xor eax, eax
xor r8d, r8d test edx, edx
- jle SHORT G_M3645_IG11 - ;; size=20 bbWeight=0.50 PerfScore 3.38 -G_M3645_IG07: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - mov ecx, ecx - lea rcx, [rcx+2*rcx] - lea rcx, bword ptr [rsi+8*rcx+0x10] - ; byrRegs +[rcx] - mov r9, gword ptr [rcx]
+ jle G_M3645_IG17 + ;; size=24 bbWeight=0.50 PerfScore 3.38 +G_M3645_IG07: ; bbWeight=4, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz + mov eax, eax + lea rax, [rax+2*rax] + lea rax, bword ptr [rsi+8*rax+0x10] + ; byrRegs +[rax] + mov r9, gword ptr [rax]
; gcrRegs +[r9]
- mov rcx, gword ptr [rcx+0x10] - ; gcrRegs +[rcx] - ; byrRegs -[rcx]
+ mov rax, gword ptr [rax+0x10] + ; gcrRegs +[rax] + ; byrRegs -[rax]
cmp r9, gword ptr [rdi+0x50] je SHORT G_M3645_IG09 ;; size=24 bbWeight=4 PerfScore 39.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref, isz
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref
cmp r9, gword ptr [rdi+0x48]
- jne SHORT G_M3645_IG10 - ;; size=6 bbWeight=2 PerfScore 8.00 -G_M3645_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M3645_IG12 + ;; size=10 bbWeight=2 PerfScore 8.00 +G_M3645_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r9]
- mov rbx, rcx
+ mov rbx, rax
; gcrRegs +[rbx] cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M3645_IG12 - ;; size=9 bbWeight=2 PerfScore 8.50 -G_M3645_IG10: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - lea ecx, [r8+0x01] - mov r8d, ecx - cmp edx, r8d - jg SHORT G_M3645_IG07 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rsi rdi] - mov rdi, gword ptr [rbp-0x20] - ; gcrRegs +[rdi] - mov rax, gword ptr [rbp-0x28] - ; gcrRegs +[rax] - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdx, rax - ; gcrRegs +[rdx] - ; GC ptr vars -{V00} - call [<unknown method>] - ; gcrRegs -[rax rdx rbx rsi rdi] - ; gcr arg pop 0 - jmp G_M3645_IG17 - ;; size=25 bbWeight=0.50 PerfScore 3.75 -G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rax rbx rdi] - ; GC ptr vars +{V00}
+ je G_M3645_IG12 + ;; size=13 bbWeight=2 PerfScore 8.50 +G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rsi]
movzx rsi, byte ptr [rdi+0x42] movzx rdx, byte ptr [rdi+0x44] or esi, edx
- je SHORT G_M3645_IG13
+ je SHORT G_M3645_IG11
mov rdi, gword ptr [rdi+0x08] mov r15, gword ptr [rbp-0x20] ; gcrRegs +[r15] mov rsi, gword ptr [r15+0x18] ; gcrRegs +[rsi]
- mov rdx, rax
+ mov rdx, rcx
; gcrRegs +[rdx] call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])]
- ; gcrRegs -[rax rdx rsi rdi]
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0 mov rdi, gword ptr [r15+0x10] ; gcrRegs +[rdi] @@ -183,24 +162,24 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 10.75 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + mov r15, gword ptr [rbp-0x20] + ; gcrRegs +[r15] + movzx rdx, byte ptr [r15+0x43] + movzx rsi, byte ptr [r15+0x44] + or edx, esi
mov rdi, r15 ; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28] - ; gcrRegs +[rax] - ;; size=59 bbWeight=0.50 PerfScore 11.38 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r15] - movzx rdx, byte ptr [rdi+0x43] - movzx rsi, byte ptr [rdi+0x44] - or edx, esi - je SHORT G_M3645_IG11
+ je G_M3645_IG17
mov rdx, gword ptr [rdi+0x70] ; gcrRegs +[rdx] mov rsi, gword ptr [rdi+0x28] ; gcrRegs +[rsi] mov rdi, rbx call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]]
- ; gcrRegs -[rdx rsi rdi]
+ ; gcrRegs -[rdx rsi rdi r15] +[rax]
; gcr arg pop 0 mov gword ptr [rbp-0x30], rax ; GC ptr vars +{V21} @@ -214,24 +193,41 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=00 mov r15, rax ; gcrRegs +[r15] cmp dword ptr [r15+0x08], 0
- je G_M3645_IG11 - ;; size=62 bbWeight=0.50 PerfScore 11.38 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov r14, gword ptr [rbp-0x20] - ; gcrRegs +[r14] - cmp byte ptr [r14+0x43], 0 - je SHORT G_M3645_IG15 - mov rdx, gword ptr [r14+0x08] - ; gcrRegs +[rdx] - mov rdi, r14
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
+ je SHORT G_M3645_IG17 + mov rcx, gword ptr [rbp-0x28] + ; gcrRegs +[rcx] + jmp SHORT G_M3645_IG14 + ;; size=80 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax r15] +[rsi] + ; GC ptr vars -{V21} + lea eax, [r8+0x01] + mov r8d, eax + cmp edx, r8d + jg G_M3645_IG07 + ;; size=16 bbWeight=4 PerfScore 8.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + jmp SHORT G_M3645_IG17 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M3645_IG14: ; bbWeight=0.50, gcVars=0000000000000A02 {V00 V02 V21}, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r15] + ; GC ptr vars +{V21} + cmp byte ptr [rdi+0x43], 0 + je SHORT G_M3645_IG15 + mov rdx, gword ptr [rdi+0x08] + ; gcrRegs +[rdx]
mov rsi, r15 ; gcrRegs +[rsi] xor ecx, ecx
+ ; gcrRegs -[rcx]
call [<unknown method>] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
+ mov r14, gword ptr [rbp-0x20] + ; gcrRegs +[r14]
mov rdx, gword ptr [r14+0x10] ; gcrRegs +[rdx] mov rdi, r14 @@ -242,23 +238,26 @@ G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { call [<unknown method>] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
- ;; size=50 bbWeight=0.50 PerfScore 8.25 -G_M3645_IG15: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r14 ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rbp-0x28] + ; gcrRegs +[rcx] + ;; size=53 bbWeight=0.50 PerfScore 8.75 +G_M3645_IG15: ; bbWeight=0.50, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
mov rsi, gword ptr [rbp-0x30] ; gcrRegs +[rsi] mov rdx, r15 ; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-0x28] - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx rsi rdi r15] ; gcr arg pop 0 nop
- ;; size=21 bbWeight=0.50 PerfScore 2.88
...

+22 (+3.93%) : 242097.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rcx "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rax "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> rbx "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> rsi single-def "field V03._array (fldOffset=0x0)" P-INDEP ; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r8 "field V03._index (fldOffset=0x8)" P-INDEP ; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r9 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP ;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rcx "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rax "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [rbp-0x30] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP ; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r15 "field V06.array (fldOffset=0x0)" P-INDEP ; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rsi single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> rsi single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rcx "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rax "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> rdx "CSE - aggressive" ; @@ -96,83 +96,62 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0 call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x28], rax
+ mov rcx, rax + ; gcrRegs +[rcx] + mov gword ptr [rbp-0x28], rcx
; GC ptr vars +{V02}
- ;; size=82 bbWeight=0.50 PerfScore 8.25 -G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=85 bbWeight=0.50 PerfScore 8.38 +G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x20] ; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x68] ; gcrRegs +[rsi] mov edx, dword ptr [rsi+0x08]
- xor ecx, ecx
+ xor eax, eax
xor r8d, r8d test edx, edx
- jle SHORT G_M3645_IG11 - ;; size=20 bbWeight=0.50 PerfScore 3.38 -G_M3645_IG07: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - mov ecx, ecx - lea rcx, [rcx+2*rcx] - lea rcx, bword ptr [rsi+8*rcx+0x10] - ; byrRegs +[rcx] - mov r9, gword ptr [rcx]
+ jle G_M3645_IG17 + ;; size=24 bbWeight=0.50 PerfScore 3.38 +G_M3645_IG07: ; bbWeight=4, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz + mov eax, eax + lea rax, [rax+2*rax] + lea rax, bword ptr [rsi+8*rax+0x10] + ; byrRegs +[rax] + mov r9, gword ptr [rax]
; gcrRegs +[r9]
- mov rcx, gword ptr [rcx+0x10] - ; gcrRegs +[rcx] - ; byrRegs -[rcx]
+ mov rax, gword ptr [rax+0x10] + ; gcrRegs +[rax] + ; byrRegs -[rax]
cmp r9, gword ptr [rdi+0x50] je SHORT G_M3645_IG09 ;; size=24 bbWeight=4 PerfScore 39.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref, isz
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref
cmp r9, gword ptr [rdi+0x48]
- jne SHORT G_M3645_IG10 - ;; size=6 bbWeight=2 PerfScore 8.00 -G_M3645_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M3645_IG12 + ;; size=10 bbWeight=2 PerfScore 8.00 +G_M3645_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r9]
- mov rbx, rcx
+ mov rbx, rax
; gcrRegs +[rbx] cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M3645_IG12 - ;; size=9 bbWeight=2 PerfScore 8.50 -G_M3645_IG10: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - lea ecx, [r8+0x01] - mov r8d, ecx - cmp edx, r8d - jg SHORT G_M3645_IG07 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rsi rdi] - mov rdi, gword ptr [rbp-0x20] - ; gcrRegs +[rdi] - mov rax, gword ptr [rbp-0x28] - ; gcrRegs +[rax] - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdx, rax - ; gcrRegs +[rdx] - ; GC ptr vars -{V00} - call [<unknown method>] - ; gcrRegs -[rax rdx rbx rsi rdi] - ; gcr arg pop 0 - jmp G_M3645_IG17 - ;; size=25 bbWeight=0.50 PerfScore 3.75 -G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rax rbx rdi] - ; GC ptr vars +{V00}
+ je G_M3645_IG12 + ;; size=13 bbWeight=2 PerfScore 8.50 +G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rsi]
movzx rsi, byte ptr [rdi+0x42] movzx rdx, byte ptr [rdi+0x44] or esi, edx
- je SHORT G_M3645_IG13
+ je SHORT G_M3645_IG11
mov rdi, gword ptr [rdi+0x08] mov r15, gword ptr [rbp-0x20] ; gcrRegs +[r15] mov rsi, gword ptr [r15+0x18] ; gcrRegs +[rsi]
- mov rdx, rax
+ mov rdx, rcx
; gcrRegs +[rdx] call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])]
- ; gcrRegs -[rax rdx rsi rdi]
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0 mov rdi, gword ptr [r15+0x10] ; gcrRegs +[rdi] @@ -183,24 +162,24 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 10.75 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + mov r15, gword ptr [rbp-0x20] + ; gcrRegs +[r15] + movzx rdx, byte ptr [r15+0x43] + movzx rsi, byte ptr [r15+0x44] + or edx, esi
mov rdi, r15 ; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28] - ; gcrRegs +[rax] - ;; size=59 bbWeight=0.50 PerfScore 11.38 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r15] - movzx rdx, byte ptr [rdi+0x43] - movzx rsi, byte ptr [rdi+0x44] - or edx, esi - je SHORT G_M3645_IG11
+ je G_M3645_IG17
mov rdx, gword ptr [rdi+0x70] ; gcrRegs +[rdx] mov rsi, gword ptr [rdi+0x28] ; gcrRegs +[rsi] mov rdi, rbx call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]]
- ; gcrRegs -[rdx rsi rdi]
+ ; gcrRegs -[rdx rsi rdi r15] +[rax]
; gcr arg pop 0 mov gword ptr [rbp-0x30], rax ; GC ptr vars +{V21} @@ -214,24 +193,41 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=00 mov r15, rax ; gcrRegs +[r15] cmp dword ptr [r15+0x08], 0
- je G_M3645_IG11 - ;; size=62 bbWeight=0.50 PerfScore 11.38 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov r14, gword ptr [rbp-0x20] - ; gcrRegs +[r14] - cmp byte ptr [r14+0x43], 0 - je SHORT G_M3645_IG15 - mov rdx, gword ptr [r14+0x08] - ; gcrRegs +[rdx] - mov rdi, r14
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
+ je SHORT G_M3645_IG17 + mov rcx, gword ptr [rbp-0x28] + ; gcrRegs +[rcx] + jmp SHORT G_M3645_IG14 + ;; size=80 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax r15] +[rsi] + ; GC ptr vars -{V21} + lea eax, [r8+0x01] + mov r8d, eax + cmp edx, r8d + jg G_M3645_IG07 + ;; size=16 bbWeight=4 PerfScore 8.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + jmp SHORT G_M3645_IG17 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M3645_IG14: ; bbWeight=0.50, gcVars=0000000000000A02 {V00 V02 V21}, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r15] + ; GC ptr vars +{V21} + cmp byte ptr [rdi+0x43], 0 + je SHORT G_M3645_IG15 + mov rdx, gword ptr [rdi+0x08] + ; gcrRegs +[rdx]
mov rsi, r15 ; gcrRegs +[rsi] xor ecx, ecx
+ ; gcrRegs -[rcx]
call [<unknown method>] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
+ mov r14, gword ptr [rbp-0x20] + ; gcrRegs +[r14]
mov rdx, gword ptr [r14+0x10] ; gcrRegs +[rdx] mov rdi, r14 @@ -242,23 +238,26 @@ G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { call [<unknown method>] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
- ;; size=50 bbWeight=0.50 PerfScore 8.25 -G_M3645_IG15: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r14 ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rbp-0x28] + ; gcrRegs +[rcx] + ;; size=53 bbWeight=0.50 PerfScore 8.75 +G_M3645_IG15: ; bbWeight=0.50, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
mov rsi, gword ptr [rbp-0x30] ; gcrRegs +[rsi] mov rdx, r15 ; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-0x28] - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx rsi rdi r15] ; gcr arg pop 0 nop
- ;; size=21 bbWeight=0.50 PerfScore 2.88
...

libraries_tests.run.linux.x64.Release.mch

-33 (-35.87%) : 424483.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -5,14 +5,15 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 14
; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 9, 3.51) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 4.50) int -> rsi single-def -; V02 loc0 [V02,T02] ( 11, 1.51) int -> rax -; V03 loc1 [V03,T03] ( 6, 1.51) ushort -> rcx
+; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 6, 4 ) int -> rsi single-def +; V02 loc0 [V02,T03] ( 7, 2 ) int -> rcx +; V03 loc1 [V03,T04] ( 3, 1.50) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V05 cse0 [V05,T02] ( 5, 2.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,9 +23,10 @@ G_M3357_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M3357_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x08], esi
+ mov eax, dword ptr [rdi+0x08] + cmp eax, esi
jg SHORT G_M3357_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00
+ ;; size=7 bbWeight=1 PerfScore 3.25
G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] xor eax, eax @@ -33,71 +35,44 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
- mov eax, esi - test esi, esi - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov ecx, eax - movzx rcx, word ptr [rdi+2*rcx+0x0C] - cmp ecx, 32 - je SHORT G_M3357_IG13 - ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M3357_IG07: ; bbWeight=0.49, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - cmp ecx, 9 - je SHORT G_M3357_IG13 - ;; size=5 bbWeight=0.49 PerfScore 0.62 -G_M3357_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - sub eax, esi
+ mov ecx, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, eax + jae SHORT G_M3357_IG08 + mov edx, ecx + movzx rdx, word ptr [rdi+2*rdx+0x0C] + cmp edx, 32 + je SHORT G_M3357_IG09 + cmp edx, 9 + je SHORT G_M3357_IG09 + mov eax, ecx + sub eax, esi + ;; size=25 bbWeight=0.50 PerfScore 3.25 +G_M3357_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rdi] - cmp eax, dword ptr [rdi+0x08] - jae SHORT G_M3357_IG12 - mov ecx, eax - movzx rcx, word ptr [rdi+2*rcx+0x0C] - cmp ecx, 32 - je SHORT G_M3357_IG14 - cmp ecx, 9 - je SHORT G_M3357_IG14 - ;; size=22 bbWeight=0.01 PerfScore 0.04 -G_M3357_IG11: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG08 - ;; size=2 bbWeight=0.01 PerfScore 0.01 -G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- inc eax - cmp dword ptr [rdi+0x08], eax
+ inc ecx + cmp eax, ecx
jg SHORT G_M3357_IG06
- jmp SHORT G_M3357_IG15 - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M3357_IG14: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc eax - cmp dword ptr [rdi+0x08], eax - jg SHORT G_M3357_IG10 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M3357_IG15: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - mov eax, dword ptr [rdi+0x08]
sub eax, esi
- ;; size=5 bbWeight=0 PerfScore 0.00 -G_M3357_IG16: ; bbWeight=0, epilog, nogc, extend
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M3357_IG10: ; bbWeight=0, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0 PerfScore 0.00
-Total bytes of code 92, prolog size 4, PerfScore 10.17, instruction count 40, allocated bytes for code 92 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 59, prolog size 4, PerfScore 9.50, instruction count 28, allocated bytes for code 59 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info:

-33 (-35.87%) : 591423.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -5,14 +5,15 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 22
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 22
; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 9, 3.51) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 4.50) int -> rsi single-def -; V02 loc0 [V02,T02] ( 11, 1.51) int -> rax -; V03 loc1 [V03,T03] ( 6, 1.51) ushort -> rcx
+; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 6, 4 ) int -> rsi single-def +; V02 loc0 [V02,T03] ( 7, 2 ) int -> rcx +; V03 loc1 [V03,T04] ( 3, 1.50) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V05 cse0 [V05,T02] ( 5, 2.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,9 +23,10 @@ G_M3357_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M3357_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x08], esi
+ mov eax, dword ptr [rdi+0x08] + cmp eax, esi
jg SHORT G_M3357_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00
+ ;; size=7 bbWeight=1 PerfScore 3.25
G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] xor eax, eax @@ -33,71 +35,44 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
- mov eax, esi - test esi, esi - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov ecx, eax - movzx rcx, word ptr [rdi+2*rcx+0x0C] - cmp ecx, 32 - je SHORT G_M3357_IG13 - ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - cmp ecx, 9 - je SHORT G_M3357_IG13 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M3357_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - sub eax, esi
+ mov ecx, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, eax + jae SHORT G_M3357_IG08 + mov edx, ecx + movzx rdx, word ptr [rdi+2*rdx+0x0C] + cmp edx, 32 + je SHORT G_M3357_IG09 + cmp edx, 9 + je SHORT G_M3357_IG09 + mov eax, ecx + sub eax, esi + ;; size=25 bbWeight=0.50 PerfScore 3.25 +G_M3357_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rdi] - cmp eax, dword ptr [rdi+0x08] - jae SHORT G_M3357_IG12 - mov ecx, eax - movzx rcx, word ptr [rdi+2*rcx+0x0C] - cmp ecx, 32 - je SHORT G_M3357_IG14 - cmp ecx, 9 - je SHORT G_M3357_IG14 - ;; size=22 bbWeight=0.01 PerfScore 0.04 -G_M3357_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG08 - ;; size=2 bbWeight=0.00 PerfScore 0.01 -G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- inc eax - cmp dword ptr [rdi+0x08], eax
+ inc ecx + cmp eax, ecx
jg SHORT G_M3357_IG06
- jmp SHORT G_M3357_IG15 - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M3357_IG14: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc eax - cmp dword ptr [rdi+0x08], eax - jg SHORT G_M3357_IG10 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M3357_IG15: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - mov eax, dword ptr [rdi+0x08]
sub eax, esi
- ;; size=5 bbWeight=0 PerfScore 0.00 -G_M3357_IG16: ; bbWeight=0, epilog, nogc, extend
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M3357_IG10: ; bbWeight=0, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0 PerfScore 0.00
-Total bytes of code 92, prolog size 4, PerfScore 10.17, instruction count 40, allocated bytes for code 92 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 59, prolog size 4, PerfScore 9.50, instruction count 28, allocated bytes for code 59 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info:

-29 (-32.58%) : 390407.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,12 +8,12 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 20144 ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 4.31) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 5.85) int -> rsi single-def -; V02 loc0 [V02,T01] ( 11, 7.17) int -> rcx -; V03 loc1 [V03,T03] ( 6, 3.57) ushort -> rdx
+; V00 arg0 [V00,T02] ( 4, 4.31) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 6, 4.90) int -> rsi single-def +; V02 loc0 [V02,T00] ( 7, 8.46) int -> rcx +; V03 loc1 [V03,T04] ( 3, 3.57) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 3.33) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 4.63) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -25,80 +25,58 @@ G_M3357_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byre ; gcrRegs +[rdi] mov eax, dword ptr [rdi+0x08] cmp eax, esi
- jle SHORT G_M3357_IG08
+ jle SHORT G_M3357_IG11
;; size=7 bbWeight=1 PerfScore 3.25
-G_M3357_IG03: ; bbWeight=0.95, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG03: ; bbWeight=0.95, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov ecx, esi
- test esi, esi - jl SHORT G_M3357_IG12 - ;; size=6 bbWeight=0.95 PerfScore 1.43 -G_M3357_IG04: ; bbWeight=1.30, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.95 PerfScore 0.24 +G_M3357_IG04: ; bbWeight=1.31, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, eax + jae SHORT G_M3357_IG13
mov edx, ecx movzx rdx, word ptr [rdi+2*rdx+0x0C] cmp edx, 32 je SHORT G_M3357_IG06
- ;; size=12 bbWeight=1.30 PerfScore 4.54 -G_M3357_IG05: ; bbWeight=0.94, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1.31 PerfScore 6.22 +G_M3357_IG05: ; bbWeight=0.95, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.94 PerfScore 1.17 -G_M3357_IG06: ; bbWeight=1.30, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG09 + ;; size=5 bbWeight=0.95 PerfScore 1.18 +G_M3357_IG06: ; bbWeight=1.32, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx cmp eax, ecx jg SHORT G_M3357_IG04
- ;; size=6 bbWeight=1.30 PerfScore 1.95 -G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - jmp SHORT G_M3357_IG15 - ;; size=2 bbWeight=0.01 PerfScore 0.01 -G_M3357_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor eax, eax - ;; size=2 bbWeight=0.05 PerfScore 0.01 -G_M3357_IG09: ; bbWeight=0.05, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.05 PerfScore 0.07 -G_M3357_IG10: ; bbWeight=0.95, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov eax, ecx - sub eax, esi - ;; size=4 bbWeight=0.95 PerfScore 0.47 -G_M3357_IG11: ; bbWeight=0.95, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.95 PerfScore 1.42 -G_M3357_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rdi] - cmp ecx, eax - jae SHORT G_M3357_IG17 - mov edx, ecx - movzx rdx, word ptr [rdi+2*rdx+0x0C] - cmp edx, 32 - je SHORT G_M3357_IG14 - ;; size=16 bbWeight=0.01 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - cmp edx, 9 - jne SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.01 PerfScore 0.01 -G_M3357_IG14: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc ecx - cmp eax, ecx - jg SHORT G_M3357_IG12 - ;; size=6 bbWeight=0.01 PerfScore 0.02 -G_M3357_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=1.32 PerfScore 1.97 +G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] sub eax, esi ;; size=2 bbWeight=0.01 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0.01, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.01, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG09: ; bbWeight=0.95, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, ecx + sub eax, esi + ;; size=4 bbWeight=0.95 PerfScore 0.47 +G_M3357_IG10: ; bbWeight=0.95, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.95 PerfScore 1.42 +G_M3357_IG11: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.05 PerfScore 0.01 +G_M3357_IG12: ; bbWeight=0.05, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.05 PerfScore 0.07 +G_M3357_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 89, prolog size 4, PerfScore 15.68, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 60, prolog size 4, PerfScore 16.10, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info:

+44 (+9.21%) : 401541.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -23,23 +23,25 @@ ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> rax "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> r14 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> rbx single-def "arg temp" ; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> rdi "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> rbx single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref test rbx, rbx je G_M10785_IG13 @@ -48,19 +50,25 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov eax, 1 ;; size=23 bbWeight=1 PerfScore 2.75 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref cmp qword ptr [rbx+0x30], -1 jne G_M10785_IG13 mov rdi, qword ptr [r15+0x18] cmp rdi, qword ptr [rbx+0x18] jne G_M10785_IG13
+ mov rdi, qword ptr [r15+0x20] + xor r14d, r14d + cmp rdi, qword ptr [rbx+0x20] + sete r14b
jmp G_M10785_IG15
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rdi, r15 ; gcrRegs +[rdi] @@ -68,11 +76,13 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rsi] ;; size=6 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rsi rdi] mov rsi, gword ptr [r15+0x28] @@ -91,11 +101,13 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { mov rax, qword ptr [rax+0x48] ;; size=37 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [rax+0x10]<unknown method>
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rsi rdi] mov rsi, gword ptr [r15+0x28] @@ -119,11 +131,13 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rsi] ;; size=6 bbWeight=0 PerfScore 0.00 G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rsi rdi] mov rdi, gword ptr [r15+0x28] @@ -142,25 +156,26 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00 G_M10785_IG14: ; 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_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15] - mov rax, qword ptr [r15+0x20] - cmp rax, qword ptr [rbx+0x20] - sete al - movzx rax, al - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00 +G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movzx rax, r14b + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
mov rdi, qword ptr [r15] cmp rdi, qword ptr [rbx] je SHORT G_M10785_IG20 @@ -238,7 +253,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, jmp G_M10785_IG02 ;; size=54 bbWeight=0 PerfScore 0.00
-Total bytes of code 478, prolog size 9, PerfScore 9.25, instruction count 125, allocated bytes for code 478 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 522, prolog size 12, PerfScore 12.00, instruction count 140, allocated bytes for code 522 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -246,11 +261,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)

+44 (+9.21%) : 287491.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -23,23 +23,25 @@ ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> rax "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> r14 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> rbx single-def "arg temp" ; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> rdi "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> rbx single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref test rbx, rbx je G_M10785_IG13 @@ -48,19 +50,25 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov eax, 1 ;; size=23 bbWeight=1 PerfScore 2.75 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref cmp qword ptr [rbx+0x30], -1 jne G_M10785_IG13 mov rdi, qword ptr [r15+0x18] cmp rdi, qword ptr [rbx+0x18] jne G_M10785_IG13
+ mov rdi, qword ptr [r15+0x20] + xor r14d, r14d + cmp rdi, qword ptr [rbx+0x20] + sete r14b
jmp G_M10785_IG15
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rdi, r15 ; gcrRegs +[rdi] @@ -68,11 +76,13 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rsi] ;; size=6 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rsi rdi] mov rsi, gword ptr [r15+0x28] @@ -91,11 +101,13 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { mov rax, qword ptr [rax+0x48] ;; size=37 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [rax+0x10]<unknown method>
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rsi rdi] mov rsi, gword ptr [r15+0x28] @@ -119,11 +131,13 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rsi] ;; size=6 bbWeight=0 PerfScore 0.00 G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rsi rdi] mov rdi, gword ptr [r15+0x28] @@ -142,25 +156,26 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00 G_M10785_IG14: ; 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_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15] - mov rax, qword ptr [r15+0x20] - cmp rax, qword ptr [rbx+0x20] - sete al - movzx rax, al - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00 +G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movzx rax, r14b + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
mov rdi, qword ptr [r15] cmp rdi, qword ptr [rbx] je SHORT G_M10785_IG20 @@ -238,7 +253,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, jmp G_M10785_IG02 ;; size=54 bbWeight=0 PerfScore 0.00
-Total bytes of code 478, prolog size 9, PerfScore 9.25, instruction count 125, allocated bytes for code 478 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 522, prolog size 12, PerfScore 12.00, instruction count 140, allocated bytes for code 522 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -246,11 +261,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)

+44 (+9.44%) : 486934.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -21,25 +21,27 @@ ; V09 tmp5 [V09,T07] ( 3, 0 ) ubyte -> rsi "Inline stloc first use temp" ;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V12 tmp8 [V12,T10] ( 2, 0 ) int -> rax "Single return block return value"
+; V12 tmp8 [V12,T10] ( 2, 0 ) int -> r14 "Single return block return value"
; V13 tmp9 [V13,T11] ( 2, 0 ) int -> rdi "argument with side effect" ; V14 tmp10 [V14,T08] ( 2, 0 ) ref -> rbx single-def "arg temp" ; V15 tmp11 [V15,T03] ( 3, 0 ) ref -> rdi "argument with side effect" ; V16 tmp12 [V16,T12] ( 2, 0 ) int -> rdi "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> rbx single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref test rbx, rbx je G_M10785_IG12 @@ -48,19 +50,25 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov eax, 1 ;; size=23 bbWeight=1 PerfScore 2.75 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref cmp qword ptr [rbx+0x30], -1 jne G_M10785_IG12 mov rdi, qword ptr [r15+0x18] cmp rdi, qword ptr [rbx+0x18] jne G_M10785_IG12
+ mov rdi, qword ptr [r15+0x20] + xor r14d, r14d + cmp rdi, qword ptr [rbx+0x20] + sete r14b
jmp G_M10785_IG14
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rdi, r15 ; gcrRegs +[rdi] @@ -68,11 +76,13 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rsi] ;; size=6 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rsi rdi] mov rsi, gword ptr [r15+0x28] @@ -91,11 +101,13 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { mov rax, qword ptr [rax+0x48] ;; size=37 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [rax+0x10]<unknown method>
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rsi rdi] mov rsi, gword ptr [r15+0x28] @@ -116,11 +128,13 @@ G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { ; gcrRegs +[rsi] ;; size=50 bbWeight=0 PerfScore 0.00 G_M10785_IG10: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rsi rdi] mov rdi, gword ptr [r15+0x28] @@ -139,25 +153,26 @@ G_M10785_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00 G_M10785_IG13: ; 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_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15] - mov rax, qword ptr [r15+0x20] - cmp rax, qword ptr [rbx+0x20] - sete al - movzx rax, al - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00 +G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movzx rax, r14b + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG15: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
mov rdi, qword ptr [r15] cmp rdi, qword ptr [rbx] je SHORT G_M10785_IG19 @@ -232,7 +247,7 @@ G_M10785_IG20: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, jmp G_M10785_IG02 ;; size=54 bbWeight=0 PerfScore 0.00
-Total bytes of code 466, prolog size 9, PerfScore 9.25, instruction count 125, allocated bytes for code 466 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 510, prolog size 12, PerfScore 12.00, instruction count 140, allocated bytes for code 510 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -240,11 +255,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

-29 (-32.58%) : 146905.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] mov ecx, esi
- test esi, esi - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, eax + jae SHORT G_M3357_IG13
mov edx, ecx movzx rdx, word ptr [rdi+2*rdx+0x0C] cmp edx, 32 je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx cmp eax, ecx jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi] - cmp ecx, eax - jae SHORT G_M3357_IG17 - mov edx, ecx - movzx rdx, word ptr [rdi+2*rdx+0x0C] - cmp edx, 32 - je SHORT G_M3357_IG12 - ;; size=16 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - cmp edx, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc ecx - cmp eax, ecx - jg SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] sub eax, esi ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx sub eax, esi ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-29 (-32.58%) : 20362.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] mov ecx, esi
- test esi, esi - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, eax + jae SHORT G_M3357_IG13
mov edx, ecx movzx rdx, word ptr [rdi+2*rdx+0x0C] cmp edx, 32 je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx cmp eax, ecx jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi] - cmp ecx, eax - jae SHORT G_M3357_IG17 - mov edx, ecx - movzx rdx, word ptr [rdi+2*rdx+0x0C] - cmp edx, 32 - je SHORT G_M3357_IG12 - ;; size=16 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - cmp edx, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc ecx - cmp eax, ecx - jg SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] sub eax, esi ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx sub eax, esi ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-13 (-3.30%) : 31420.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)

@@ -11,12 +11,12 @@ ; V00 this [V00,T05] ( 7, 8 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol> ; V01 arg1 [V01,T10] ( 3, 3 ) ubyte -> rsi single-def ; V02 loc0 [V02,T03] ( 3, 13 ) byref -> r14 single-def
-; V03 loc1 [V03,T00] ( 6, 28 ) ref -> r13 class-hnd <<unknown class>>
+; V03 loc1 [V03,T01] ( 6, 28 ) ref -> r13 class-hnd <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ; V05 loc3 [V05,T02] ( 7, 13.88) ref -> r12 class-hnd exact <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T14] ( 3, 2 ) byref -> r14
-; V08 tmp2 [V08,T01] ( 4, 24 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T00] ( 4, 32 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ; V11 tmp5 [V11,T11] ( 4, 4.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> @@ -39,7 +39,7 @@ ;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref ;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo> ; V30 tmp24 [V30,T04] ( 4, 12 ) long -> rax "Inline stloc first use temp"
-; V31 tmp25 [V31,T06] ( 5, 8 ) ref -> rsi class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
+; V31 tmp25 [V31,T06] ( 4, 10 ) ref -> rsi class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
; V32 tmp26 [V32,T13] ( 2, 2.76) ubyte -> rdi "Inline return value spill temp" ; V33 tmp27 [V33 ] ( 3, 4.15) byref -> [rbp-0x30] must-init pinned "Inline stloc first use temp" ;* V34 tmp28 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -89,15 +89,15 @@ G_M47296_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, G_M47296_IG06: ; bbWeight=2, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref mov rdi, qword ptr [r13+0x08] and rdi, -2
- je G_M47296_IG16
+ je G_M47296_IG17
test dil, 2
- jne G_M47296_IG17
+ jne G_M47296_IG18
call <unknown method> ; gcrRegs +[rax] ;; size=29 bbWeight=2 PerfScore 11.00 G_M47296_IG07: ; bbWeight=2, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref test rax, rax
- jne G_M47296_IG15
+ jne G_M47296_IG16
;; size=9 bbWeight=2 PerfScore 2.50 G_M47296_IG08: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref ; gcrRegs -[rax] @@ -118,7 +118,7 @@ G_M47296_IG08: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r1 call <unknown method> ; gcrRegs -[rax rdi] test rax, rax
- je G_M47296_IG19
+ je G_M47296_IG20
;; size=53 bbWeight=4 PerfScore 35.00 G_M47296_IG09: ; bbWeight=4, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, byref, isz mov rcx, gword ptr [rbp-0x38] @@ -142,17 +142,25 @@ G_M47296_IG10: ; bbWeight=1.38, gcrefRegs=300A {rcx rbx r12 r13}, byrefRe ; byrRegs +[rsi] mov bword ptr [rbp-0x30], rsi test edi, edi
- jne G_M47296_IG20
+ jne G_M47296_IG21
;; size=50 bbWeight=1.38 PerfScore 12.10
-G_M47296_IG11: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG11: ; bbWeight=2, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
; byrRegs -[rsi] xor rsi, rsi ; gcrRegs +[rsi]
+ ;; size=2 bbWeight=2 PerfScore 0.50 +G_M47296_IG12: ; bbWeight=4, gcrefRegs=304A {rcx rbx rsi r12 r13}, byrefRegs=4000 {r14}, byref, isz
test rsi, rsi
- jne G_M47296_IG21 - ;; size=11 bbWeight=4 PerfScore 6.00 -G_M47296_IG12: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rsi]
+ je SHORT G_M47296_IG13 + lea rdi, bword ptr [rcx+0x08] + ; byrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rcx rsi] + ; byrRegs -[rdi] + mov rcx, gword ptr [rbp-0x38] + ; gcrRegs +[rcx] + ;; size=19 bbWeight=4 PerfScore 23.00 +G_M47296_IG13: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
mov rdi, r14 ; byrRegs +[rdi] mov rsi, rcx @@ -166,13 +174,13 @@ G_M47296_IG12: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs= cmp rax, r13 jne G_M47296_IG05 ;; size=23 bbWeight=4 PerfScore 12.00
-G_M47296_IG13: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+G_M47296_IG14: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r13] ; byrRegs -[r14] mov rax, r12 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47296_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24 pop rbx pop r12 @@ -182,7 +190,7 @@ G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M47296_IG16: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r12] add rsp, 24 pop rbx @@ -193,14 +201,14 @@ G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, gcvars, byref
+G_M47296_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] +[rbx r13] ; byrRegs +[r14] xor rax, rax ; gcrRegs +[rax] jmp G_M47296_IG07 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M47296_IG17: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref, isz
+G_M47296_IG18: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs -[rax] and rdi, -4 call <unknown method> @@ -210,18 +218,18 @@ G_M47296_IG17: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r1 mov rdi, qword ptr [r12+0x10] call <unknown method> test rax, rax
- jne SHORT G_M47296_IG18
+ jne SHORT G_M47296_IG19
mov rdi, r12 ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi r12] ;; size=36 bbWeight=0 PerfScore 0.00
-G_M47296_IG18: ; bbWeight=0, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG19: ; bbWeight=0, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
jmp G_M47296_IG07 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M47296_IG19: ; bbWeight=0, gcVars=0000000000000002 {V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
+G_M47296_IG20: ; bbWeight=0, gcVars=0000000000000001 {V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] +[r12]
- ; GC ptr vars +{V01 V08}
+ ; GC ptr vars +{V00 V08}
mov rdi, r12 ; gcrRegs +[rdi] xor esi, esi @@ -229,7 +237,7 @@ G_M47296_IG19: ; bbWeight=0, gcVars=0000000000000002 {V08}, gcrefRegs=300 ; gcrRegs -[rdi] jmp G_M47296_IG09 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M47296_IG20: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG21: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
; gcrRegs +[rcx] mov rdi, r12 ; gcrRegs +[rdi] @@ -237,24 +245,12 @@ G_M47296_IG20: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs= ; gcrRegs -[rcx rdi] +[rax] mov rsi, rax ; gcrRegs +[rsi]
- test rsi, rsi - mov rcx, gword ptr [rbp-0x38] - ; gcrRegs +[rcx] - je G_M47296_IG12 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M47296_IG21: ; bbWeight=0, gcrefRegs=304A {rcx rbx rsi r12 r13}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rax] - lea rdi, bword ptr [rcx+0x08] - ; byrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rcx rsi] - ; byrRegs -[rdi]
mov rcx, gword ptr [rbp-0x38] ; gcrRegs +[rcx] jmp G_M47296_IG12
- ;; size=19 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
-Total bytes of code 394, prolog size 25, PerfScore 136.22, instruction count 110, allocated bytes for code 394 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
+Total bytes of code 381, prolog size 25, PerfScore 153.72, instruction count 108, allocated bytes for code 381 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
; ============================================================ Unwind Info:

+11 (+2.93%) : 273801.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex760_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -152,7 +152,7 @@ G_M53590_IG08: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13 cmp edi, r12d ja G_M53590_IG25 ;; size=15 bbWeight=4.00 PerfScore 11.00
-G_M53590_IG09: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
+G_M53590_IG09: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
mov esi, edi lea rdx, bword ptr [r13+2*rsi] ; byrRegs +[rdx] @@ -162,8 +162,8 @@ G_M53590_IG09: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13 sub r8d, edi mov dword ptr [rbp-0x30], r8d test r8d, r8d
- jge SHORT G_M53590_IG16 - ;; size=26 bbWeight=4.00 PerfScore 24.00
+ jge G_M53590_IG16 + ;; size=30 bbWeight=4.00 PerfScore 24.00
G_M53590_IG10: ; bbWeight=2.00, gcVars=0000000000000010 {V17}, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, gcvars, byref ; byrRegs -[rdx] mov rsi, 0xD1FFAB1E @@ -200,24 +200,27 @@ G_M53590_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, G_M53590_IG13: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz lea ecx, [rdi+0x01] cmp ecx, r12d
- jae SHORT G_M53590_IG24
+ jae G_M53590_IG24
mov dword ptr [rbp-0x2C], edi lea ecx, [rdi+0x01] movzx rcx, word ptr [r13+2*rcx] cmp ecx, 256 jb SHORT G_M53590_IG17
- ;; size=28 bbWeight=2.00 PerfScore 13.00
+ ;; size=32 bbWeight=2.00 PerfScore 13.00
G_M53590_IG14: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz mov edi, ecx call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] test eax, eax
- je SHORT G_M53590_IG22 - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M53590_IG15: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
mov edi, dword ptr [rbp-0x2C]
- jmp SHORT G_M53590_IG19 - ;; size=5 bbWeight=4 PerfScore 12.00
+ jne SHORT G_M53590_IG19 + ;; size=15 bbWeight=2 PerfScore 11.00 +G_M53590_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r13] + mov dword ptr [rbp-0x2C], edi + jmp SHORT G_M53590_IG22 + ;; size=5 bbWeight=0.50 PerfScore 1.50
G_M53590_IG16: ; bbWeight=2.00, gcVars=0000000000000010 {V17}, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, gcvars, byref, isz
+ ; byrRegs +[r13]
; GC ptr vars +{V04 V17} mov rdx, bword ptr [rbp-0x40] ; byrRegs +[rdx] @@ -277,7 +280,7 @@ G_M53590_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 376, prolog size 19, PerfScore 186.62, instruction count 114, allocated bytes for code 376 (MethodHash=e5872ea9) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex760_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+Total bytes of code 387, prolog size 19, PerfScore 178.12, instruction count 115, allocated bytes for code 387 (MethodHash=e5872ea9) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex760_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+22 (+4.07%) : 11764.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rcx "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rax "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> rbx "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> rsi single-def "field V03._array (fldOffset=0x0)" P-INDEP ; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r8 "field V03._index (fldOffset=0x8)" P-INDEP ; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r9 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP ;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rcx "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rax "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [rbp-0x30] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP ; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r15 "field V06.array (fldOffset=0x0)" P-INDEP ; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rsi single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> rsi single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rcx "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rax "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> rdx "CSE - aggressive" ; @@ -92,83 +92,62 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x28], rax
+ mov rcx, rax + ; gcrRegs +[rcx] + mov gword ptr [rbp-0x28], rcx
; GC ptr vars +{V02}
- ;; size=62 bbWeight=0.50 PerfScore 7.50 -G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=65 bbWeight=0.50 PerfScore 7.62 +G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x20] ; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x68] ; gcrRegs +[rsi] mov edx, dword ptr [rsi+0x08]
- xor ecx, ecx
+ xor eax, eax
xor r8d, r8d test edx, edx
- jle SHORT G_M10501_IG11 - ;; size=20 bbWeight=0.50 PerfScore 3.38 -G_M10501_IG07: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - mov ecx, ecx - lea rcx, [rcx+2*rcx] - lea rcx, bword ptr [rsi+8*rcx+0x10] - ; byrRegs +[rcx] - mov r9, gword ptr [rcx]
+ jle G_M10501_IG17 + ;; size=24 bbWeight=0.50 PerfScore 3.38 +G_M10501_IG07: ; bbWeight=4, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz + mov eax, eax + lea rax, [rax+2*rax] + lea rax, bword ptr [rsi+8*rax+0x10] + ; byrRegs +[rax] + mov r9, gword ptr [rax]
; gcrRegs +[r9]
- mov rcx, gword ptr [rcx+0x10] - ; gcrRegs +[rcx] - ; byrRegs -[rcx]
+ mov rax, gword ptr [rax+0x10] + ; gcrRegs +[rax] + ; byrRegs -[rax]
cmp r9, gword ptr [rdi+0x50] je SHORT G_M10501_IG09 ;; size=24 bbWeight=4 PerfScore 39.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref, isz
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref
cmp r9, gword ptr [rdi+0x48]
- jne SHORT G_M10501_IG10 - ;; size=6 bbWeight=2 PerfScore 8.00 -G_M10501_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M10501_IG12 + ;; size=10 bbWeight=2 PerfScore 8.00 +G_M10501_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r9]
- mov rbx, rcx
+ mov rbx, rax
; gcrRegs +[rbx] cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M10501_IG12 - ;; size=9 bbWeight=2 PerfScore 8.50 -G_M10501_IG10: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - lea ecx, [r8+0x01] - mov r8d, ecx - cmp edx, r8d - jg SHORT G_M10501_IG07 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rsi rdi] - mov rdi, gword ptr [rbp-0x20] - ; gcrRegs +[rdi] - mov rax, gword ptr [rbp-0x28] - ; gcrRegs +[rax] - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdx, rax - ; gcrRegs +[rdx] - ; GC ptr vars -{V00} - call [<unknown method>] - ; gcrRegs -[rax rdx rbx rsi rdi] - ; gcr arg pop 0 - jmp G_M10501_IG17 - ;; size=25 bbWeight=0.50 PerfScore 3.75 -G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rax rbx rdi] - ; GC ptr vars +{V00}
+ je G_M10501_IG12 + ;; size=13 bbWeight=2 PerfScore 8.50 +G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rsi]
movzx rsi, byte ptr [rdi+0x42] movzx rdx, byte ptr [rdi+0x44] or esi, edx
- je SHORT G_M10501_IG13
+ je SHORT G_M10501_IG11
mov rdi, gword ptr [rdi+0x08] mov r15, gword ptr [rbp-0x20] ; gcrRegs +[r15] mov rsi, gword ptr [r15+0x18] ; gcrRegs +[rsi]
- mov rdx, rax
+ mov rdx, rcx
; gcrRegs +[rdx] call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])]
- ; gcrRegs -[rax rdx rsi rdi]
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0 mov rdi, gword ptr [r15+0x10] ; gcrRegs +[rdi] @@ -179,24 +158,24 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 10.75 +G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + mov r15, gword ptr [rbp-0x20] + ; gcrRegs +[r15] + movzx rdx, byte ptr [r15+0x43] + movzx rsi, byte ptr [r15+0x44] + or edx, esi
mov rdi, r15 ; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28] - ; gcrRegs +[rax] - ;; size=59 bbWeight=0.50 PerfScore 11.38 -G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r15] - movzx rdx, byte ptr [rdi+0x43] - movzx rsi, byte ptr [rdi+0x44] - or edx, esi - je SHORT G_M10501_IG11
+ je G_M10501_IG17
mov rdx, gword ptr [rdi+0x70] ; gcrRegs +[rdx] mov rsi, gword ptr [rdi+0x28] ; gcrRegs +[rsi] mov rdi, rbx call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]]
- ; gcrRegs -[rdx rsi rdi]
+ ; gcrRegs -[rdx rsi rdi r15] +[rax]
; gcr arg pop 0 mov gword ptr [rbp-0x30], rax ; GC ptr vars +{V21} @@ -210,24 +189,41 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0 mov r15, rax ; gcrRegs +[r15] cmp dword ptr [r15+0x08], 0
- je G_M10501_IG11 - ;; size=62 bbWeight=0.50 PerfScore 11.38 -G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov r14, gword ptr [rbp-0x20] - ; gcrRegs +[r14] - cmp byte ptr [r14+0x43], 0 - je SHORT G_M10501_IG15 - mov rdx, gword ptr [r14+0x08] - ; gcrRegs +[rdx] - mov rdi, r14
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
+ je SHORT G_M10501_IG17 + mov rcx, gword ptr [rbp-0x28] + ; gcrRegs +[rcx] + jmp SHORT G_M10501_IG14 + ;; size=80 bbWeight=0.50 PerfScore 14.00 +G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax r15] +[rsi] + ; GC ptr vars -{V21} + lea eax, [r8+0x01] + mov r8d, eax + cmp edx, r8d + jg G_M10501_IG07 + ;; size=16 bbWeight=4 PerfScore 8.00 +G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + jmp SHORT G_M10501_IG17 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M10501_IG14: ; bbWeight=0.50, gcVars=0000000000000A02 {V00 V02 V21}, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r15] + ; GC ptr vars +{V21} + cmp byte ptr [rdi+0x43], 0 + je SHORT G_M10501_IG15 + mov rdx, gword ptr [rdi+0x08] + ; gcrRegs +[rdx]
mov rsi, r15 ; gcrRegs +[rsi] xor ecx, ecx
+ ; gcrRegs -[rcx]
call [<unknown method>] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
+ mov r14, gword ptr [rbp-0x20] + ; gcrRegs +[r14]
mov rdx, gword ptr [r14+0x10] ; gcrRegs +[rdx] mov rdi, r14 @@ -238,23 +234,26 @@ G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0
- ;; size=50 bbWeight=0.50 PerfScore 8.25 -G_M10501_IG15: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r14 ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rbp-0x28] + ; gcrRegs +[rcx] + ;; size=53 bbWeight=0.50 PerfScore 8.75 +G_M10501_IG15: ; bbWeight=0.50, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
mov rsi, gword ptr [rbp-0x30] ; gcrRegs +[rsi] mov rdx, r15 ; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-0x28] - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx rsi rdi r15] ; gcr arg pop 0 nop
- ;; size=21 bbWeight=0.50 PerfScore 2.88
...

+48 (+6.02%) : 8078.dasm - System.Collections.Generic.GenericArraySortHelper2[uint,System.__Canon]:IntroSort(System.Span1[uint],System.Span`1[System.__Canon],int) (FullOpts)

@@ -12,11 +12,11 @@ ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]> ; V02 arg1 [V02 ] ( 17, 18 ) struct (16) [rbp-0x40] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Span`1[System.__Canon]> ; V03 arg2 [V03,T05] ( 7, 19 ) int -> r15
-; V04 loc0 [V04,T00] ( 15, 32.50) int -> r12 -; V05 loc1 [V05,T08] ( 4, 16 ) int -> [rbp-0x44] spill-single-def
+; V04 loc0 [V04,T00] ( 17, 37 ) int -> r12 +; V05 loc1 [V05,T09] ( 4, 16 ) int -> [rbp-0x44] spill-single-def
; V06 loc2 [V06,T02] ( 7, 28 ) int -> rdx ; V07 OutArgs [V07 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 16 ) long -> rcx "spilling helperCall"
+; V08 tmp1 [V08,T12] ( 2, 16 ) long -> rcx "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref "impSpillLclRefs" <System.Span`1[uint]> @@ -46,11 +46,11 @@ ;* V35 tmp28 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V36 tmp29 [V36,T01] ( 4, 32 ) int -> [rbp-0x48] spill-single-def "Inlining Arg" ;* V37 tmp30 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V38 tmp31 [V38,T10] ( 2, 16 ) byref -> [rbp-0x60] spill-single-def "Inlining Arg"
+; V38 tmp31 [V38,T11] ( 2, 16 ) byref -> [rbp-0x60] spill-single-def "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp34 [V41,T07] ( 9, 12 ) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V42 tmp35 [V42,T06] ( 13, 16 ) int -> r14 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V41 tmp34 [V41,T08] ( 9, 12 ) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V42 tmp35 [V42,T07] ( 13, 16 ) int -> r14 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V43 tmp36 [V43 ] ( 11, 14 ) byref -> [rbp-0x40] do-not-enreg[X] addr-exposed single-def "field V02._reference (fldOffset=0x0)" P-DEP ; V44 tmp37 [V44 ] ( 12, 15 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed single-def "field V02._length (fldOffset=0x8)" P-DEP ;* V45 tmp38 [V45 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP @@ -77,10 +77,10 @@ ; V66 tmp59 [V66,T15] ( 3, 12 ) int -> [rbp-0x4C] spill-single-def "field V32._length (fldOffset=0x8)" P-INDEP ; V67 tmp60 [V67,T18] ( 2, 8 ) byref -> [rbp-0x68] spill-single-def "field V37._reference (fldOffset=0x0)" P-INDEP ; V68 tmp61 [V68,T21] ( 2, 8 ) int -> [rbp-0x50] spill-single-def "field V37._length (fldOffset=0x8)" P-INDEP
-; V69 tmp62 [V69,T12] ( 2, 16 ) long -> rsi "argument with side effect" -; V70 cse0 [V70,T13] ( 7, 14 ) long -> [rbp-0x58] multi-def "CSE - moderate" -; V71 cse1 [V71,T14] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive" -; V72 rat0 [V72,T09] ( 3, 16 ) long -> registers "runtime lookup"
+; V69 tmp62 [V69,T13] ( 2, 16 ) long -> rsi "argument with side effect" +; V70 cse0 [V70,T14] ( 7, 14 ) long -> [rbp-0x58] multi-def "CSE - moderate" +; V71 cse1 [V71,T06] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive" +; V72 rat0 [V72,T10] ( 3, 16 ) long -> registers "runtime lookup"
; V73 rat1 [V73,T03] ( 3, 22.40) long -> rcx "fgMakeTemp is creating a new local variable" ; V74 rat2 [V74,T25] ( 3, 2 ) long -> rsi "runtime lookup" ; V75 rat3 [V75,T23] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable" @@ -146,27 +146,39 @@ G_M51381_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, G_M51381_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref mov r12d, r14d cmp r14d, 1
- jle G_M51381_IG22
+ jle G_M51381_IG24
;; size=13 bbWeight=1 PerfScore 1.50
-G_M51381_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+G_M51381_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
cmp r12d, 16
- jle G_M51381_IG16
+ jle G_M51381_IG18
test r15d, r15d
- je G_M51381_IG23
+ je G_M51381_IG25
dec r15d cmp r12d, r14d
- ja G_M51381_IG26
+ ja G_M51381_IG29 + test r12d, r12d + jge SHORT G_M51381_IG11 + ;; size=36 bbWeight=4 PerfScore 21.00 +G_M51381_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M51381_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
mov dword ptr [rbp-0x4C], r12d mov rdi, qword ptr [rbx+0x38] mov rdi, qword ptr [rdi] mov rcx, qword ptr [rdi+0x20] test rcx, rcx
- je G_M51381_IG15 - ;; size=55 bbWeight=4 PerfScore 49.00 -G_M51381_IG10: ; bbWeight=3.20, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+ je G_M51381_IG17 + ;; size=24 bbWeight=4 PerfScore 33.00 +G_M51381_IG12: ; bbWeight=3.20, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
mov eax, dword ptr [rbp-0x4C] ;; size=3 bbWeight=3.20 PerfScore 3.20
-G_M51381_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov rsi, rcx mov qword ptr [rbp-0x58], rsi mov rcx, rsi @@ -195,16 +207,16 @@ G_M51381_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byr add rdi, rsi mov esi, r14d cmp rdi, rsi
- ja G_M51381_IG26
+ ja G_M51381_IG29
mov edi, edx lea r8, bword ptr [r13+4*rdi] ; byrRegs +[r8] mov bword ptr [rbp-0x60], r8 ; GC ptr vars +{V38} test ecx, ecx
- jge SHORT G_M51381_IG13
+ jge SHORT G_M51381_IG15
;; size=96 bbWeight=4 PerfScore 82.00
-G_M51381_IG12: ; bbWeight=2, gcVars=0000000000000400 {V38}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref
+G_M51381_IG14: ; bbWeight=2, gcVars=0000000000000800 {V38}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref
; byrRegs -[r8] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -213,7 +225,7 @@ G_M51381_IG12: ; bbWeight=2, gcVars=0000000000000400 {V38}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=2 PerfScore 7.00
-G_M51381_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+G_M51381_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
mov r8, bword ptr [rbp-0x60] ; byrRegs +[r8] mov bword ptr [rbp-0x68], r8 @@ -244,22 +256,22 @@ G_M51381_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byr cmp r12d, 1 jg G_M51381_IG09 ;; size=78 bbWeight=4 PerfScore 75.00
-G_M51381_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51381_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13]
- jmp G_M51381_IG22
+ jmp G_M51381_IG24
;; size=5 bbWeight=2 PerfScore 4.00
-G_M51381_IG15: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+G_M51381_IG17: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
; byrRegs +[r13] mov rdi, rbx mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rcx, rax mov eax, dword ptr [rbp-0x4C]
- jmp G_M51381_IG11
+ jmp G_M51381_IG13
;; size=29 bbWeight=0.80 PerfScore 3.80
-G_M51381_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
cmp r12d, 2
- jne SHORT G_M51381_IG17
+ jne SHORT G_M51381_IG19
mov dword ptr [rsp], 1 mov rcx, bword ptr [rbp-0x40] ; byrRegs +[rcx] @@ -271,12 +283,12 @@ G_M51381_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, xor r9d, r9d call [<unknown method>] ; byrRegs -[rcx rsi r13]
- jmp G_M51381_IG22
+ jmp G_M51381_IG24
;; size=44 bbWeight=0.50 PerfScore 5.12
-G_M51381_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
; byrRegs +[r13] cmp r12d, 3
- jne SHORT G_M51381_IG18
+ jne SHORT G_M51381_IG20
mov dword ptr [rsp], 1 mov rcx, bword ptr [rbp-0x40] ; byrRegs +[rcx] @@ -310,14 +322,14 @@ G_M51381_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov r9d, 1 call [<unknown method>] ; byrRegs -[rcx rsi r13]
- jmp SHORT G_M51381_IG22
+ jmp SHORT G_M51381_IG24
;; size=110 bbWeight=0.50 PerfScore 12.12
-G_M51381_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
; byrRegs +[r13] cmp r12d, r14d
- ja G_M51381_IG26
+ ja G_M51381_IG29
test r12d, r12d
- jge SHORT G_M51381_IG19
+ jge SHORT G_M51381_IG21
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -325,15 +337,15 @@ G_M51381_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=33 bbWeight=0.50 PerfScore 3.00
-G_M51381_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov r14d, r12d mov rdi, qword ptr [rbx+0x38] mov rdi, qword ptr [rdi] mov rsi, qword ptr [rdi+0x20] test rsi, rsi
- je SHORT G_M51381_IG21
+ je SHORT G_M51381_IG23
;; size=19 bbWeight=0.50 PerfScore 3.75
-G_M51381_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov r15, rsi lea rdi, [rbp-0x40] mov ecx, r14d @@ -349,17 +361,17 @@ G_M51381_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, mov rdi, rbx call [<unknown method>] ; byrRegs -[rax rcx rsi r13]
- jmp SHORT G_M51381_IG22
+ jmp SHORT G_M51381_IG24
;; size=41 bbWeight=0.50 PerfScore 5.25
-G_M51381_IG21: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG23: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
; byrRegs +[r13] mov rdi, rbx mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rsi, rax
- jmp SHORT G_M51381_IG20
+ jmp SHORT G_M51381_IG22
;; size=23 bbWeight=0.10 PerfScore 0.38
-G_M51381_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M51381_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13] add rsp, 72 pop rbx @@ -370,10 +382,20 @@ G_M51381_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=15 bbWeight=2 PerfScore 8.50
-G_M51381_IG23: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref, isz
+G_M51381_IG25: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref, isz
; byrRegs +[r13] cmp r12d, r14d
- ja SHORT G_M51381_IG26
+ ja SHORT G_M51381_IG29 + test r12d, r12d + jge SHORT G_M51381_IG26 + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=29 bbWeight=0.50 PerfScore 3.00 +G_M51381_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov r14, r13 ; byrRegs +[r14] ...

realworld.run.linux.x64.checked.mch

-29 (-32.58%) : 15332.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] mov ecx, esi
- test esi, esi - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, eax + jae SHORT G_M3357_IG13
mov edx, ecx movzx rdx, word ptr [rdi+2*rdx+0x0C] cmp edx, 32 je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx cmp eax, ecx jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi] - cmp ecx, eax - jae SHORT G_M3357_IG17 - mov edx, ecx - movzx rdx, word ptr [rdi+2*rdx+0x0C] - cmp edx, 32 - je SHORT G_M3357_IG12 - ;; size=16 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - cmp edx, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc ecx - cmp eax, ecx - jg SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] sub eax, esi ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx sub eax, esi ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-13 (-1.98%) : 14216.dasm - System.Linq.Enumerable:g_EnumerableToArray|2960double:double

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 26 single block inlinees; 22 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T13] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
+; V00 arg0 [V00,T12] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
; V01 loc0 [V01 ] ( 2, 2 ) struct (64) [rbp-0x68] do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[double]> ; V02 loc1 [V02 ] ( 16, 12 ) struct (264) [rbp-0x170] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[double]> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <double[]> @@ -17,37 +17,37 @@ ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[double]> ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <double[]>
-; V09 tmp5 [V09,T22] ( 3, 2.50) int -> rsi "Inline stloc first use temp" -; V10 tmp6 [V10,T19] ( 6, 3.50) ref -> rbx class-hnd "Inline stloc first use temp" <double[]>
+; V09 tmp5 [V09,T21] ( 3, 2.50) int -> rsi "Inline stloc first use temp" +; V10 tmp6 [V10,T18] ( 6, 3.50) ref -> rbx class-hnd "Inline stloc first use temp" <double[]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[double]> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <double[]> ;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <double[]> ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V16 tmp12 [V16,T16] ( 8, 4 ) int -> r13 "Inline stloc first use temp"
+; V16 tmp12 [V16,T15] ( 8, 4 ) int -> r13 "Inline stloc first use temp"
; V17 tmp13 [V17 ] ( 3, 1.50) struct (16) [rbp-0x180] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[double]> ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.Span`1[double]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]> ;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double[]]> ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double[]]>
-; V22 tmp18 [V22,T01] ( 5, 16.50) int -> [rbp-0x184] "Inline stloc first use temp"
+; V22 tmp18 [V22,T02] ( 5, 16.50) int -> [rbp-0x184] "Inline stloc first use temp"
; V23 tmp19 [V23,T07] ( 4, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <double[]> ;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]> ;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]> ;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double]>
-; V27 tmp23 [V27,T17] ( 4, 4 ) int -> r12 "Inlining Arg" -; V28 tmp24 [V28,T24] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V27 tmp23 [V27,T16] ( 4, 4 ) int -> r12 "Inlining Arg" +; V28 tmp24 [V28,T23] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]> ;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V34 tmp30 [V34,T27] ( 2, 2 ) long -> rax "Inlining Arg"
+; V34 tmp30 [V34,T26] ( 2, 2 ) long -> rax "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V38 tmp34 [V38,T21] ( 3, 3 ) int -> r14 "Inlining Arg" -; V39 tmp35 [V39,T25] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V38 tmp34 [V38,T20] ( 3, 3 ) int -> r14 "Inlining Arg" +; V39 tmp35 [V39,T24] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp37 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp38 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double[]]> @@ -59,7 +59,7 @@ ;* V48 tmp44 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]> ;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V50 tmp46 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V51 tmp47 [V51,T04] ( 2, 16 ) long -> r8 "Inlining Arg"
+; V51 tmp47 [V51,T04] ( 2, 16 ) long -> rdx "Inlining Arg"
;* V52 tmp48 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V54 tmp50 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]> @@ -67,20 +67,20 @@ ; V56 tmp52 [V56,T03] ( 2, 16 ) byref -> r15 "Inlining Arg" ;* V57 tmp53 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp54 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V59 tmp55 [V59,T18] ( 4, 4 ) int -> r13 "Inlining Arg"
+; V59 tmp55 [V59,T17] ( 4, 4 ) int -> r13 "Inlining Arg"
;* V60 tmp56 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V61 tmp57 [V61,T26] ( 2, 2 ) byref -> r12 single-def "Inlining Arg" -; V62 tmp58 [V62,T23] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V61 tmp57 [V61,T25] ( 2, 2 ) byref -> r12 single-def "Inlining Arg" +; V62 tmp58 [V62,T22] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
;* V63 tmp59 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T20] ( 3, 3 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP -;* V66 tmp62 [V66,T40] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T19] ( 3, 3 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP +;* V66 tmp62 [V66,T39] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V69 tmp65 [V69 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V70 tmp66 [V70 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V71 tmp67 [V71,T28] ( 3, 1.50) byref -> r15 "field V15._reference (fldOffset=0x0)" P-INDEP -; V72 tmp68 [V72,T29] ( 3, 1.50) int -> r14 "field V15._length (fldOffset=0x8)" P-INDEP
+; V71 tmp67 [V71,T27] ( 3, 1.50) byref -> r15 "field V15._reference (fldOffset=0x0)" P-INDEP +; V72 tmp68 [V72,T28] ( 3, 1.50) int -> r14 "field V15._length (fldOffset=0x8)" P-INDEP
; V73 tmp69 [V73 ] ( 2, 1 ) byref -> [rbp-0x180] do-not-enreg[X] addr-exposed "field V17._reference (fldOffset=0x0)" P-DEP ; V74 tmp70 [V74 ] ( 2, 1 ) int -> [rbp-0x178] do-not-enreg[X] addr-exposed "field V17._length (fldOffset=0x8)" P-DEP ; V75 tmp71 [V75,T05] ( 8, 14.50) byref -> r15 "field V18._reference (fldOffset=0x0)" P-INDEP @@ -89,35 +89,34 @@ ;* V78 tmp74 [V78 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP ;* V79 tmp75 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP ;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V81 tmp77 [V81,T15] ( 2, 4.50) byref -> r12 single-def "field V21._reference (fldOffset=0x0)" P-INDEP -; V82 tmp78 [V82,T14] ( 3, 5 ) int -> r13 "field V21._length (fldOffset=0x8)" P-INDEP
+; V81 tmp77 [V81,T14] ( 2, 4.50) byref -> r12 single-def "field V21._reference (fldOffset=0x0)" P-INDEP +; V82 tmp78 [V82,T13] ( 3, 5 ) int -> r13 "field V21._length (fldOffset=0x8)" P-INDEP
;* V83 tmp79 [V83 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP ;* V84 tmp80 [V84 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V85 tmp81 [V85,T31] ( 2, 1 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP -; V86 tmp82 [V86,T36] ( 2, 1 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
+; V85 tmp81 [V85,T30] ( 2, 1 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP +; V86 tmp82 [V86,T35] ( 2, 1 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
;* V87 tmp83 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP ;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP ;* V89 tmp85 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP ;* V90 tmp86 [V90 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-; V91 tmp87 [V91,T32] ( 2, 1 ) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP -; V92 tmp88 [V92,T37] ( 2, 1 ) int -> r14 "field V37._length (fldOffset=0x8)" P-INDEP -; V93 tmp89 [V93,T33] ( 2, 1 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp87 [V91,T31] ( 2, 1 ) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP +; V92 tmp88 [V92,T36] ( 2, 1 ) int -> r14 "field V37._length (fldOffset=0x8)" P-INDEP +; V93 tmp89 [V93,T32] ( 2, 1 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp90 [V94 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V95 tmp91 [V95,T34] ( 2, 1 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V96 tmp92 [V96,T38] ( 2, 1 ) int -> r13 "field V43._length (fldOffset=0x8)" P-INDEP -; V97 tmp93 [V97,T10] ( 3, 8 ) byref -> rsi "field V47._reference (fldOffset=0x0)" P-INDEP -; V98 tmp94 [V98,T02] ( 5, 16 ) int -> [rbp-0x188] "field V47._length (fldOffset=0x8)" P-INDEP
+; V95 tmp91 [V95,T33] ( 2, 1 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP +; V96 tmp92 [V96,T37] ( 2, 1 ) int -> r13 "field V43._length (fldOffset=0x8)" P-INDEP +; V97 tmp93 [V97,T09] ( 3, 8 ) byref -> rsi "field V47._reference (fldOffset=0x0)" P-INDEP +; V98 tmp94 [V98,T01] ( 6, 20 ) int -> [rbp-0x188] "field V47._length (fldOffset=0x8)" P-INDEP
;* V99 tmp95 [V99 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP ;* V100 tmp96 [V100 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
-; V101 tmp97 [V101,T11] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP -; V102 tmp98 [V102,T12] ( 2, 8 ) int -> r14 "field V54._length (fldOffset=0x8)" P-INDEP -; V103 tmp99 [V103,T35] ( 2, 1 ) byref -> r12 single-def "field V60._reference (fldOffset=0x0)" P-INDEP -; V104 tmp100 [V104,T39] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0x8)" P-INDEP -; V105 cse0 [V105,T30] ( 3, 1.50) long -> [rbp-0x190] spill-single-def "CSE - conservative" -; V106 cse1 [V106,T08] ( 3, 12 ) long -> [rbp-0x198] spill-single-def "CSE - moderate" -; V107 cse2 [V107,T09] ( 9, 9 ) ref -> rsi multi-def "CSE - moderate"
+; V101 tmp97 [V101,T10] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP +; V102 tmp98 [V102,T11] ( 2, 8 ) int -> r14 "field V54._length (fldOffset=0x8)" P-INDEP +; V103 tmp99 [V103,T34] ( 2, 1 ) byref -> r12 single-def "field V60._reference (fldOffset=0x0)" P-INDEP +; V104 tmp100 [V104,T38] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0x8)" P-INDEP +; V105 cse0 [V105,T29] ( 3, 1.50) long -> [rbp-0x190] spill-single-def "CSE - conservative" +; V106 cse1 [V106,T08] ( 9, 9 ) ref -> rsi multi-def "CSE - moderate"
;
-; Lcl frame size = 376
+; Lcl frame size = 360
G_M60021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -126,9 +125,9 @@ G_M60021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 376
+ sub rsp, 360
vzeroupper
- lea rbp, [rsp+0x1A0]
+ lea rbp, [rsp+0x190]
vxorps xmm8, xmm8, xmm8 vmovdqa xmmword ptr [rbp-0x180], xmm8 vmovdqa xmmword ptr [rbp-0x170], xmm8 @@ -259,19 +258,18 @@ G_M60021_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=9040 {rsi r1 cmp ecx, r14d ja G_M60021_IG22 mov dword ptr [rbp-0x188], ecx
- mov r8d, ecx - shl r8, 3 - mov qword ptr [rbp-0x198], r8 - mov rdx, r8
+ mov edx, ecx + shl rdx, 3
mov rdi, r15 ; byrRegs +[rdi] call [<unknown method>] ; byrRegs -[rsi rdi]
- mov rdi, qword ptr [rbp-0x198] - add r15, rdi - sub r14d, dword ptr [rbp-0x188]
+ mov edi, dword ptr [rbp-0x188] + mov esi, edi + lea r15, bword ptr [r15+8*rsi] + sub r14d, edi
jns SHORT G_M60021_IG13
- ;; size=60 bbWeight=4 PerfScore 47.00
+ ;; size=47 bbWeight=4 PerfScore 37.00
G_M60021_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -330,7 +328,7 @@ G_M60021_IG18: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25 G_M60021_IG19: ; bbWeight=1, epilog, nogc, extend
- add rsp, 376
+ add rsp, 360
pop rbx pop r12 pop r13 @@ -352,7 +350,7 @@ G_M60021_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 657, prolog size 87, PerfScore 164.29, instruction count 148, allocated bytes for code 657 (MethodHash=ba5d158a) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[double](System.Collections.Generic.IEnumerable`1[double]):double[] (FullOpts)
+Total bytes of code 644, prolog size 87, PerfScore 154.29, instruction count 147, allocated bytes for code 644 (MethodHash=ba5d158a) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[double](System.Collections.Generic.IEnumerable`1[double]):double[] (FullOpts)
; ============================================================ Unwind Info: @@ -366,7 +364,7 @@ Unwind Info: FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x11 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 47 * 8 = 376 = 0x00178
+ Size: 45 * 8 = 360 = 0x00168
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)

-15 (-1.84%) : 21690.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)

@@ -77,7 +77,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, cmp esi, 1 je G_M39186_IG23 xor ebx, ebx
- jmp G_M39186_IG36
+ jmp G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.75 G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz mov dword ptr [rdi+0x28], -1 @@ -262,7 +262,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs +[rbx] xor r15d, r15d cmp dword ptr [rdi+0x30], 0
- jle G_M39186_IG30
+ jle G_M39186_IG37
;; size=22 bbWeight=0.50 PerfScore 2.75 G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] @@ -271,10 +271,10 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r11, gword ptr [rdi+0x20] ; gcrRegs +[r11] cmp r15d, dword ptr [r11+0x10]
- jae G_M39186_IG31
+ jae SHORT G_M39186_IG27
mov r11, gword ptr [r11+0x08] cmp r15d, dword ptr [r11+0x08]
- jae G_M39186_IG32
+ jae SHORT G_M39186_IG26
mov eax, r15d mov r14, gword ptr [r11+8*rax+0x10] ; gcrRegs +[r14] @@ -285,11 +285,36 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] ; gcr arg pop 0 test eax, eax
- je G_M39186_IG35 - test rbx, rbx
jne SHORT G_M39186_IG28
- ;; size=69 bbWeight=4 PerfScore 85.00 -G_M39186_IG25: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=4 PerfScore 80.00 +G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx r14] + xor ebx, ebx + mov rdi, gword ptr [rbp-0x30] + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rdi] + ; gcr arg pop 0 + mov rdi, gword ptr [rbp-0x30] + ; gcrRegs +[rdi] + jmp G_M39186_IG38 + ;; size=21 bbWeight=0.50 PerfScore 3.62 +G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M39186_IG28: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx r14] + test rbx, rbx + jne SHORT G_M39186_IG33 + ;; size=5 bbWeight=4 PerfScore 5.00 +G_M39186_IG29: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] mov rbx, gword ptr [rbp-0x30] ; gcrRegs +[rbx] @@ -298,12 +323,19 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr mov rsi, qword ptr [rsi] mov rax, qword ptr [rsi+0x38] test rax, rax
- je SHORT G_M39186_IG33
+ je SHORT G_M39186_IG31
;; size=23 bbWeight=2 PerfScore 20.50
-G_M39186_IG26: ; bbWeight=1.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, rax
- ;; size=3 bbWeight=1.60 PerfScore 0.40 -G_M39186_IG27: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M39186_IG32 + ;; size=5 bbWeight=1.60 PerfScore 3.60 +G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov rdi, rax + ;; size=18 bbWeight=0.40 PerfScore 0.60 +G_M39186_IG32: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
movsxd rsi, dword ptr [rbx+0x30] call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] @@ -312,7 +344,7 @@ G_M39186_IG27: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, ; gcrRegs +[r13] mov rbx, r13 ;; size=15 bbWeight=2 PerfScore 11.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r13] mov r13, gword ptr [rbp-0x30] ; gcrRegs +[r13] @@ -321,9 +353,18 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, mov rsi, qword ptr [rsi] mov r11, qword ptr [rsi+0x30] test r11, r11
- je SHORT G_M39186_IG34
+ je SHORT G_M39186_IG35
;; size=24 bbWeight=4 PerfScore 41.00
-G_M39186_IG29: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M39186_IG36 + ;; size=2 bbWeight=3.20 PerfScore 6.40 +G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r11, rax + ;; size=18 bbWeight=0.80 PerfScore 1.20 +G_M39186_IG36: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
mov rdi, r14 ; gcrRegs +[rdi] call [r11] @@ -341,7 +382,7 @@ G_M39186_IG29: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 cmp r15d, dword ptr [r13+0x30] jl G_M39186_IG24 ;; size=33 bbWeight=4 PerfScore 37.00
-G_M39186_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov r13, gword ptr [rbp-0x30] ; gcrRegs +[r13] @@ -356,51 +397,12 @@ G_M39186_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov ebx, 1 mov rdi, r13 ; gcrRegs +[rdi]
- jmp SHORT G_M39186_IG36 - ;; size=34 bbWeight=0.50 PerfScore 3.12 -G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi r13] - call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M39186_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M39186_IG33: ; bbWeight=0.40, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r14] - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov rdi, rax - jmp G_M39186_IG27 - ;; size=23 bbWeight=0.40 PerfScore 1.40 -G_M39186_IG34: ; bbWeight=0.80, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r13] - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov r11, rax - jmp SHORT G_M39186_IG29 - ;; size=20 bbWeight=0.80 PerfScore 2.80 -G_M39186_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r13-r14] - mov r13, gword ptr [rbp-0x30] - ; gcrRegs +[r13] - xor ebx, ebx - mov rdi, r13 - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rdi r13] - ; gcr arg pop 0 - mov rdi, gword ptr [rbp-0x30] - ; gcrRegs +[rdi] - ;; size=19 bbWeight=0.50 PerfScore 2.75 -G_M39186_IG36: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 2.12 +G_M39186_IG38: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[r13]
mov eax, ebx ;; size=2 bbWeight=1 PerfScore 0.25
-G_M39186_IG37: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop r13 @@ -409,7 +411,7 @@ G_M39186_IG37: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[rdi] ; GC ptr vars +{V03 V23} push rbp @@ -422,9 +424,9 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs mov qword ptr [rsp], rbp lea rbp, [rbp+0x40] ;; size=23 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x38], 0
- je SHORT G_M39186_IG40
+ je SHORT G_M39186_IG42
mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -433,10 +435,10 @@ G_M39186_IG39: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs ; gcrRegs -[rdi] ; gcr arg pop 0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, funclet epilog, nogc, extend
+G_M39186_IG43: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 16 pop rbx pop r13 @@ -445,7 +447,7 @@ G_M39186_IG41: ; bbWeight=0, funclet epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=0 PerfScore 0.00
-G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push r15 push r14 @@ -456,7 +458,7 @@ G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp], rbp lea rbp, [rbp+0x40] ;; size=23 bbWeight=0 PerfScore 0.00
-G_M39186_IG43: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG45: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbp-0x30] ; gcrRegs +[rdi] call [<unknown method>] @@ -464,7 +466,7 @@ G_M39186_IG43: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000 ; gcr arg pop 0 nop ;; size=11 bbWeight=0 PerfScore 0.00
-G_M39186_IG44: ; bbWeight=0, funclet epilog, nogc, extend
+G_M39186_IG46: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 16 ...

+2 (+1.20%) : 24306.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)

@@ -43,7 +43,7 @@ G_M17353_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r15, rbx ; gcrRegs +[r15] test rbx, rbx
- je SHORT G_M17353_IG09
+ je SHORT G_M17353_IG08
;; size=8 bbWeight=1 PerfScore 1.50 G_M17353_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rdi, r15 @@ -64,7 +64,7 @@ G_M17353_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, G_M17353_IG04: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax cmp qword ptr [r15], rdi
- jne SHORT G_M17353_IG11
+ jne SHORT G_M17353_IG12
mov r14, r15 ; gcrRegs +[r14] lea rsi, [rbp-0x30] @@ -88,25 +88,16 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 cmp eax, dword ptr [rbx+0x20] jne SHORT G_M17353_IG03 ;; size=5 bbWeight=2 PerfScore 8.00
-G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r15]
- mov rax, r14 - ; gcrRegs +[rax] - ;; size=3 bbWeight=0.50 PerfScore 0.12 -G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 24 - pop rbx - pop r14 - pop r15 - pop rbp - ret - ;; size=11 bbWeight=0.50 PerfScore 1.62 -G_M17353_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax r14]
+ jmp SHORT G_M17353_IG10 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24 pop rbx pop r14 @@ -114,8 +105,21 @@ G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax] +[r15]
+G_M17353_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[r14] + mov rax, r14 + ; gcrRegs +[rax] + ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 24 + pop rbx + pop r14 + pop r15 + pop rbp + ret + ;; size=11 bbWeight=0.50 PerfScore 1.62 +G_M17353_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax r14] +[r15]
mov rsi, r15 ; gcrRegs +[rsi] call CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -123,7 +127,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 { int3 ;; size=9 bbWeight=0 PerfScore 0.00
-Total bytes of code 167, prolog size 31, PerfScore 114.58, instruction count 56, allocated bytes for code 167 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 169, prolog size 31, PerfScore 115.58, instruction count 57, allocated bytes for code 169 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
; ============================================================ Unwind Info:

+14 (+3.47%) : 14382.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T13] ( 5, 28 ) long -> rdi ; V02 loc1 [V02,T14] ( 5, 24 ) int -> r14 ; V03 loc2 [V03,T12] ( 5, 28.50) ref -> r13 class-hnd exact <System.String>
-; V04 loc3 [V04,T04] ( 8, 50 ) int -> r12
+; V04 loc3 [V04,T05] ( 8, 50 ) int -> r12
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax ; V06 loc5 [V06,T08] ( 3, 40 ) ref -> rcx class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> [rbp-0x2C] @@ -33,9 +33,9 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T18] ( 4, 5 ) ref -> rax "Single return block return value" ; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V25 cse0 [V25,T05] ( 6, 49 ) int -> r15 "CSE - aggressive"
+; V25 cse0 [V25,T03] ( 8, 57 ) int -> r15 "CSE - aggressive"
; V26 cse1 [V26,T07] ( 5, 40 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V27 cse2 [V27,T03] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
+; V27 cse2 [V27,T04] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -58,10 +58,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp r15d, 1 jle G_M46295_IG16 ;; size=23 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor edi, edi xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test r15d, r15d + jle SHORT G_M46295_IG07 + ;; size=9 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, eax mov rcx, gword ptr [rbx+8*rcx+0x10] @@ -94,7 +96,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r12d, r12d xor eax, eax ; gcrRegs -[rax]
- ;; size=41 bbWeight=4 PerfScore 19.00
+ test r15d, r15d + jle G_M46295_IG15 + ;; size=50 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz mov dword ptr [rbp-0x2C], eax mov edi, eax @@ -249,7 +253,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 403, prolog size 22, PerfScore 585.25, instruction count 115, allocated bytes for code 403 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 417, prolog size 22, PerfScore 595.25, instruction count 119, allocated bytes for code 417 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info:

+48 (+9.62%) : 770.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (FullOpts)

@@ -10,10 +10,10 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T03] ( 7, 19 ) int -> r15
-; V02 arg2 [V02,T04] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]> -; V03 loc0 [V03,T01] ( 14, 28.50) int -> r12
+; V02 arg2 [V02,T05] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]> +; V03 loc0 [V03,T00] ( 16, 33 ) int -> r12
; V04 loc1 [V04,T09] ( 3, 12 ) int -> [rbp-0x2C] spill-single-def
-; V05 loc2 [V05,T05] ( 4, 16 ) int -> rdi
+; V05 loc2 [V05,T06] ( 4, 16 ) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -44,13 +44,13 @@ ;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T00] ( 4, 32 ) int -> r12 "Inlining Arg"
+; V36 tmp30 [V36,T01] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V38 tmp32 [V38,T06] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V38 tmp32 [V38,T07] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V41 tmp35 [V41,T02] ( 29, 22 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp36 [V42,T07] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T08] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP @@ -79,7 +79,7 @@ ; V68 tmp62 [V68,T15] ( 2, 2 ) int -> rsi "argument with side effect" ; V69 tmp63 [V69,T16] ( 2, 2 ) int -> rsi "argument with side effect" ; V70 tmp64 [V70,T17] ( 2, 2 ) int -> rsi "argument with side effect"
-; V71 cse0 [V71,T08] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -138,16 +138,28 @@ G_M15629_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx G_M15629_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref mov r12d, r13d cmp r13d, 1
- jle G_M15629_IG20
+ jle G_M15629_IG23
;; size=13 bbWeight=1 PerfScore 1.50 G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz cmp r12d, 16
- jle G_M15629_IG13
+ jle G_M15629_IG15
test r15d, r15d
- je G_M15629_IG19
+ je G_M15629_IG21
dec r15d cmp r12d, r13d
- ja G_M15629_IG23
+ ja G_M15629_IG26 + test r12d, r12d + jge SHORT G_M15629_IG11 + ;; size=36 bbWeight=4 PerfScore 21.00 +G_M15629_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d mov rdi, rbx ; byrRegs +[rdi] @@ -164,15 +176,15 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, add rsi, rcx mov ecx, r13d cmp rsi, rcx
- ja G_M15629_IG23
+ ja G_M15629_IG26
lea rcx, bword ptr [rbx+4*rdi] ; byrRegs +[rcx] mov bword ptr [rbp-0x38], rcx ; GC ptr vars +{V38} test r12d, r12d
- jge SHORT G_M15629_IG11 - ;; size=88 bbWeight=4 PerfScore 58.00 -G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M15629_IG13 + ;; size=57 bbWeight=4 PerfScore 42.00 +G_M15629_IG12: ; bbWeight=2, gcVars=0000000000000080 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx] mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -181,7 +193,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=400 call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x38] ; byrRegs +[rdi] mov esi, r12d @@ -196,16 +208,16 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, cmp r12d, 1 jg G_M15629_IG09 ;; size=33 bbWeight=4 PerfScore 28.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] ; byrRegs -[rbx]
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] ; byrRegs +[rbx] cmp r12d, 2
- jne SHORT G_M15629_IG14
+ jne SHORT G_M15629_IG16
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov rdi, gword ptr [r14+0x08] @@ -213,17 +225,17 @@ G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi r14] test eax, eax
- jle G_M15629_IG20
+ jle G_M15629_IG23
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov dword ptr [rbx], edx mov dword ptr [rbx+0x04], esi
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=42 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] cmp r12d, 3
- jne SHORT G_M15629_IG17
+ jne SHORT G_M15629_IG19
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov rdi, gword ptr [r14+0x08] @@ -231,29 +243,29 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M15629_IG15
+ jle SHORT G_M15629_IG17
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x04] mov dword ptr [rbx], edx mov dword ptr [rbx+0x04], esi ;; size=33 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx] cmp r13d, 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
mov edx, dword ptr [rbx+0x08] mov rdi, gword ptr [r14+0x08] ; gcrRegs +[rdi] call [r14+0x18]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov esi, dword ptr [rbx] mov edx, dword ptr [rbx+0x08] mov dword ptr [rbx], edx mov dword ptr [rbx+0x08], esi ;; size=37 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx+0x04] mov edx, dword ptr [rbx+0x08] mov rdi, gword ptr [r14+0x08] @@ -261,19 +273,19 @@ G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [r14+0x18]<unknown method> ; gcrRegs -[rdi r14] test eax, eax
- jle SHORT G_M15629_IG20
+ jle SHORT G_M15629_IG23
mov edi, dword ptr [rbx+0x04] mov esi, dword ptr [rbx+0x08] mov dword ptr [rbx+0x04], esi mov dword ptr [rbx+0x08], edi
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=32 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
test r12d, r12d
- jge SHORT G_M15629_IG18
+ jge SHORT G_M15629_IG20
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -281,7 +293,7 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d mov rdi, rbx ; byrRegs +[rdi] @@ -290,13 +302,23 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[rdx r14] ; byrRegs -[rbx rdi]
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14] ; byrRegs +[rbx] cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26 + test r12d, r12d + jge SHORT G_M15629_IG22 + mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi] + mov rdi, rsi + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ;; size=29 bbWeight=0.50 PerfScore 3.00 +G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, rbx ; byrRegs +[rdi] mov esi, r12d @@ -305,11 +327,11 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[rdx r14] ; byrRegs -[rbx rdi]
- ;; size=20 bbWeight=0.50 PerfScore 2.50 -G_M15629_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 1.88 +G_M15629_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 25 8 12 5 -220 +344
benchmarks.run_pgo.linux.x64.checked.mch 563 472 69 22 -16,960 +2,931
benchmarks.run_tiered.linux.x64.checked.mch 9 2 5 2 -71 +133
coreclr_tests.run.linux.x64.checked.mch 417 127 221 69 -1,100 +2,082
libraries.crossgen2.linux.x64.checked.mch 1 1 0 0 -1 +0
libraries.pmi.linux.x64.checked.mch 154 36 68 50 -425 +1,007
libraries_tests.run.linux.x64.Release.mch 1,520 724 513 283 -9,774 +5,716
librariestestsnotieredcompilation.run.linux.x64.Release.mch 277 53 76 148 -498 +926
realworld.run.linux.x64.checked.mch 27 7 15 5 -68 +179
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
2,993 1,430 979 584 -29,117 +13,318

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 34,975 3,135 31,840 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch 156,554 60,225 96,329 13 (0.01%) 13 (0.01%)
benchmarks.run_tiered.linux.x64.checked.mch 56,298 42,308 13,990 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 598,040 355,280 242,760 10 (0.00%) 10 (0.00%)
libraries.crossgen2.linux.x64.checked.mch 1,930 0 1,930 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 296,878 6 296,872 0 (0.00%) 0 (0.00%)
libraries_tests.run.linux.x64.Release.mch 766,353 498,383 267,970 111 (0.01%) 111 (0.01%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 305,396 21,912 283,484 0 (0.00%) 0 (0.00%)
realworld.run.linux.x64.checked.mch 33,215 49 33,166 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch 64 0 64 0 (0.00%) 0 (0.00%)
2,249,703 981,298 1,268,405 134 (0.01%) 134 (0.01%)

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: 13723744 (overridden on cmd)
Total bytes of diff: 13723868 (overridden on cmd)
Total bytes of delta: 124 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 69144788 (overridden on cmd)
Total bytes of diff: 69130759 (overridden on cmd)
Total bytes of delta: -14029 (-0.02 % of base)
    relative diff is a regression.

Detail diffs



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


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: 15897809 (overridden on cmd)
Total bytes of diff: 15897871 (overridden on cmd)
Total bytes of delta: 62 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

0 total methods with Code Size differences (0 improved, 0 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: 403316719 (overridden on cmd)
Total bytes of diff: 403317701 (overridden on cmd)
Total bytes of delta: 982 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 203687 (overridden on cmd)
Total bytes of diff: 203686 (overridden on cmd)
Total bytes of delta: -1 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 60405907 (overridden on cmd)
Total bytes of diff: 60406489 (overridden on cmd)
Total bytes of delta: 582 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 348249945 (overridden on cmd)
Total bytes of diff: 348245887 (overridden on cmd)
Total bytes of delta: -4058 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 132684063 (overridden on cmd)
Total bytes of diff: 132684491 (overridden on cmd)
Total bytes of delta: 428 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 13212110 (overridden on cmd)
Total bytes of diff: 13212221 (overridden on cmd)
Total bytes of delta: 111 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



osx arm64

Diffs are based on 2,029,386 contexts (927,368 MinOpts, 1,102,018 FullOpts).

MISSED contexts: 109 (0.01%)

Overall (+1,280 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,185,284 +148
benchmarks.run_pgo.osx.arm64.checked.mch 34,533,064 +1,584
benchmarks.run_tiered.osx.arm64.checked.mch 15,508,464 +184
coreclr_tests.run.osx.arm64.checked.mch 483,586,020 +1,016
libraries.crossgen2.osx.arm64.checked.mch 311,684 +0
libraries.pmi.osx.arm64.checked.mch 80,207,064 -24
libraries_tests.run.osx.arm64.Release.mch 313,700,576 -1,948
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 163,153,084 +188
realworld.run.osx.arm64.checked.mch 15,075,948 +132

FullOpts (+1,280 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,184,656 +148
benchmarks.run_pgo.osx.arm64.checked.mch 18,159,716 +1,584
benchmarks.run_tiered.osx.arm64.checked.mch 4,004,192 +184
coreclr_tests.run.osx.arm64.checked.mch 153,413,252 +1,016
libraries.crossgen2.osx.arm64.checked.mch 311,684 +0
libraries.pmi.osx.arm64.checked.mch 80,085,936 -24
libraries_tests.run.osx.arm64.Release.mch 111,962,988 -1,948
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 149,999,392 +188
realworld.run.osx.arm64.checked.mch 14,511,996 +132

Example diffs

benchmarks.run.osx.arm64.checked.mch

-40 (-27.03%) : 5767.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-20 (-0.71%) : 15945.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)

@@ -8,19 +8,19 @@ ; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T43] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator> -; V01 arg1 [V01,T39] ( 5, 8 ) int -> x22 single-def
+; V00 this [V00,T44] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator> +; V01 arg1 [V01,T40] ( 5, 8 ) int -> x22 single-def
; V02 arg2 [V02,T36] ( 6, 9 ) ref -> x21 class-hnd single-def <System.String>
-; V03 arg3 [V03,T40] ( 5, 8 ) long -> x23 single-def -; V04 arg4 [V04,T41] ( 5, 8 ) int -> x24 single-def -; V05 arg5 [V05,T42] ( 5, 8 ) int -> x25 single-def
+; V03 arg3 [V03,T41] ( 5, 8 ) long -> x23 single-def +; V04 arg4 [V04,T42] ( 5, 8 ) int -> x24 single-def +; V05 arg5 [V05,T43] ( 5, 8 ) int -> x25 single-def
; V06 arg6 [V06,T32] ( 7, 10 ) int -> x20 single-def
-; V07 arg7 [V07,T26] ( 12, 12 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]> -; V08 loc0 [V08,T44] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]> -; V09 loc1 [V09,T45] ( 5, 5 ) ubyte -> registers -; V10 loc2 [V10,T16] ( 8, 22 ) int -> [fp+0x114] -; V11 loc3 [V11,T17] ( 8, 22 ) int -> [fp+0x110] -; V12 loc4 [V12,T53] ( 3, 3 ) int -> [fp+0x10C] spill-single-def
+; V07 arg7 [V07,T21] ( 12, 15 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]> +; V08 loc0 [V08,T46] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]> +; V09 loc1 [V09,T37] ( 5, 8 ) ubyte -> registers +; V10 loc2 [V10,T15] ( 8, 25 ) int -> [fp+0x114] +; V11 loc3 [V11,T16] ( 8, 25 ) int -> [fp+0x110] +; V12 loc4 [V12,T45] ( 3, 6 ) int -> [fp+0x10C] spill-single-def
;* V13 loc5 [V13 ] ( 0, 0 ) int -> zero-ref ;* V14 loc6 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref @@ -41,7 +41,7 @@ ; V30 loc22 [V30,T34] ( 2, 9 ) ref -> [fp+0x30] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V31 loc23 [V31,T11] ( 5, 33 ) int -> [fp+0xB4] ; V32 loc24 [V32 ] ( 2, 16 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V33 loc25 [V33,T52] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
+; V33 loc25 [V33,T53] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
; V34 loc26 [V34,T35] ( 2, 9 ) ref -> x19 class-hnd exact single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V35 loc27 [V35,T12] ( 5, 33 ) int -> [fp+0x94] ;* V36 loc28 [V36 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo> @@ -54,20 +54,20 @@ ;* V43 tmp6 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> ; V45 tmp8 [V45 ] ( 2, 16 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V46 tmp9 [V46,T48] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
+; V46 tmp9 [V46,T49] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
;* V47 tmp10 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp11 [V48,T49] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
+; V48 tmp11 [V48,T50] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
; V49 tmp12 [V49,T27] ( 2, 8 ) ubyte -> x3 "Inline return value spill temp" ; V50 tmp13 [V50,T28] ( 3, 12 ) ubyte -> x3 "Inline return value spill temp" ;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V52 tmp15 [V52,T15] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> -; V53 tmp16 [V53,T21] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
+; V52 tmp15 [V52,T17] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> +; V53 tmp16 [V53,T22] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
; V54 tmp17 [V54 ] ( 4, 16 ) byref -> [fp+0x70] must-init pinned "Inline stloc first use temp"
-; V55 tmp18 [V55,T37] ( 2, 8 ) long -> x2
+; V55 tmp18 [V55,T38] ( 2, 8 ) long -> x2
; V56 tmp19 [V56,T08] ( 2, 36 ) long -> [fp+0x68] spill-single-def "Inline stloc first use temp" ;* V57 tmp20 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp21 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V59 tmp22 [V59,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp22 [V59,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp23 [V60 ] ( 2, 8 ) int -> [fp+0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V62 tmp25 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -77,22 +77,22 @@ ; V66 tmp29 [V66 ] ( 2, 16 ) ref -> [fp+0xE8] do-not-enreg[X] addr-exposed "field V19.ParameterName (fldOffset=0x0)" P-DEP ; V67 tmp30 [V67 ] ( 2, 16 ) ref -> [fp+0xF0] do-not-enreg[X] addr-exposed "field V19.ParameterType (fldOffset=0x8)" P-DEP ; V68 tmp31 [V68 ] ( 2, 16 ) ref -> [fp+0xF8] do-not-enreg[X] addr-exposed "field V19.TypeInfo (fldOffset=0x10)" P-DEP
-; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
+; V69 tmp32 [V69,T24] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref "field V23.ParameterType (fldOffset=0x8)" P-INDEP
-; V71 tmp34 [V71,T24] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
+; V71 tmp34 [V71,T25] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
; V72 tmp35 [V72 ] ( 2, 16 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V32.ParameterName (fldOffset=0x0)" P-DEP ; V73 tmp36 [V73 ] ( 2, 16 ) ref -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V32.ParameterType (fldOffset=0x8)" P-DEP ; V74 tmp37 [V74 ] ( 2, 16 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed "field V32.TypeInfo (fldOffset=0x10)" P-DEP
-; V75 tmp38 [V75,T22] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
+; V75 tmp38 [V75,T23] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
;* V76 tmp39 [V76 ] ( 0, 0 ) ref -> zero-ref "field V36.ParameterType (fldOffset=0x8)" P-INDEP ; V77 tmp40 [V77,T19] ( 3, 20 ) ref -> x5 "field V36.TypeInfo (fldOffset=0x10)" P-INDEP ; V78 tmp41 [V78,T03] ( 3, 48 ) byref -> x1 "BlockOp address local"
-; V79 tmp42 [V79,T50] ( 2, 4 ) long -> x2 "Cast away GC" -; V80 tmp43 [V80,T51] ( 2, 4 ) long -> x3 "Cast away GC" -; V81 tmp44 [V81,T46] ( 2, 4 ) ref -> x7 "argument with side effect"
+; V79 tmp42 [V79,T51] ( 2, 4 ) long -> x1 "Cast away GC" +; V80 tmp43 [V80,T52] ( 2, 4 ) long -> x3 "Cast away GC" +; V81 tmp44 [V81,T47] ( 2, 4 ) ref -> x7 "argument with side effect"
; V82 tmp45 [V82,T04] ( 3, 48 ) byref -> x0 "BlockOp address local"
-; V83 tmp46 [V83,T25] ( 2, 16 ) long -> x2 "Cast away GC" -; V84 tmp47 [V84,T47] ( 2, 16 ) ref -> x7 "argument with side effect"
+; V83 tmp46 [V83,T26] ( 2, 16 ) long -> x2 "Cast away GC" +; V84 tmp47 [V84,T48] ( 2, 16 ) ref -> x7 "argument with side effect"
; V85 PSPSym [V85,T60] ( 1, 1 ) long -> [fp+0x118] do-not-enreg[V] "PSPSym" ; V86 cse0 [V86,T29] ( 3, 12 ) int -> [fp+0x58] spill-single-def "CSE - moderate" ; V87 cse1 [V87,T54] ( 3, 3 ) int -> x28 "CSE - moderate" @@ -137,8 +137,8 @@ G_M27295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov x19, x7 ; gcrRegs +[x19] ;; size=104 bbWeight=1 PerfScore 19.00
-G_M27295_IG02: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V33 V52}
+G_M27295_IG02: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V33 V53}
mov w27, wzr ;; size=4 bbWeight=1 PerfScore 0.50 G_M27295_IG03: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref, isz @@ -184,10 +184,10 @@ G_M27295_IG04: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0 ldr w7, [x5, #0x08] str w7, [fp, #0x50] // [V89 cse3] cmp w7, #0
- ble G_M27295_IG10
+ ble G_M27295_IG11
;; size=28 bbWeight=1 PerfScore 7.50
-G_M27295_IG05: ; bbWeight=8, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V52}
+G_M27295_IG05: ; bbWeight=8, gcVars=0020000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V53}
mov w0, #24 mov x1, #16 str w6, [fp, #0xD1FFAB1E] // [V18 loc10] @@ -212,70 +212,22 @@ G_M27295_IG07: ; bbWeight=8, isz, extend blr x8 ; gcrRegs -[x5] ; gcr arg pop 0
- cbz w0, G_M27295_IG11 - ldr w1, [fp, #0xE0] // [V20 loc12] - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - add w2, w2, w1 - ldr w1, [fp, #0xD1FFAB1E] // [V18 loc10] - add w1, w1, #1 - ldr w3, [fp, #0x50] // [V89 cse3] - cmp w3, w1 - mov w6, w1 - ldr x5, [fp, #0x40] // [V17 loc9] - ; gcrRegs +[x5] - bgt G_M27295_IG09 - ;; size=72 bbWeight=8 PerfScore 164.00 -G_M27295_IG08: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5]
+ cbnz w0, G_M27295_IG12 + ;; size=32 bbWeight=8 PerfScore 60.00 +G_M27295_IG08: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- mov w1, #6 - cmp w20, #0 - csel w1, wzr, w1, eq - ldr w4, [fp, #0xD1FFAB1E] // [V11 loc3] - add w0, w4, #5 - str w4, [fp, #0xD1FFAB1E] // [V11 loc3] - cmp w4, #0 - csel w0, wzr, w0, eq - str w2, [fp, #0xD1FFAB1E] // [V10 loc2] - add w0, w2, w0 - add w5, w0, w1 - str w5, [fp, #0xD1FFAB1E] // [V16 loc8] - sxtw x1, w5 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - bl CORINFO_HELP_NEWARR_1_VC - ; gcrRegs +[x0] - ; gcr arg pop 0 - str x0, [fp, #0x48] // [V08 loc0] - ; GC ptr vars +{V08} - b G_M27295_IG15 - ;; size=76 bbWeight=1 PerfScore 14.00 -G_M27295_IG09: ; bbWeight=4, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x5] - ; GC ptr vars -{V08} +{V17 V31} - str w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG05 - ;; size=8 bbWeight=4 PerfScore 8.00 -G_M27295_IG10: ; bbWeight=0.50, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5] - ; GC ptr vars -{V17 V31} - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG08 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M27295_IG11: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref
mov w27, #1 ldr w2, [fp, #0xD1FFAB1E] // [V12 loc4] str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- mov w4, #4 - str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
+ mov w1, #4 + str w1, [fp, #0xD1FFAB1E] // [V11 loc3]
mov x5, x19 ; gcrRegs +[x5] str x5, [fp, #0x38] // [V21 loc13] ; GC ptr vars +{V21} mov w6, wzr ;; size=32 bbWeight=1 PerfScore 7.00
-G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27295_IG09: ; bbWeight=8, gcVars=0020000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
mov w1, #24 mov x0, #16 str w6, [fp, #0xDC] // [V22 loc14] @@ -301,30 +253,11 @@ G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs blr x7 ; gcrRegs -[x0 x5] ; gcr arg pop 0
- cbz w0, G_M27295_IG14 - ldr w0, [fp, #0x88] // [V45 tmp8] - ldr w1, [fp, #0xD8] // [V24 loc16] - add w1, w1, w0 - ldr w2, [fp, #0xD1FFAB1E] // [V11 loc3] - add w2, w2, w1 - ldr w0, [fp, #0xDC] // [V22 loc14] - add w0, w0, #1 - ldr w1, [fp, #0x50] // [V89 cse3] - cmp w1, w0 - str w2, [fp, #0xD1FFAB1E] // [V11 loc3] - mov w6, w0 - ldr x5, [fp, #0x38] // [V21 loc13] - ; gcrRegs +[x5] - bgt G_M27295_IG12 - ;; size=128 bbWeight=8 PerfScore 344.00 -G_M27295_IG13: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5] - ; GC ptr vars -{V21 V33} - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG08 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M27295_IG14 + ;; size=76 bbWeight=8 PerfScore 212.00 +G_M27295_IG10: ; bbWeight=4, gcVars=0020000000000000 {V33}, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
+ ; GC ptr vars -{V21 V33}
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -337,47 +270,112 @@ G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 ldr x19, [x0] ; gcrRegs +[x19] ldr w27, [fp, #0xD1FFAB1E] // [V12 loc4]
- str wzr, [fp, #0xD1FFAB1E] // [V11 loc3] - mov w2, wzr - mov w0, w2 - mov w2, w27
+ mov w4, wzr + mov w0, wzr + str w27, [fp, #0xD1FFAB1E] // [V10 loc2] + str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
mov w27, w0
- b G_M27295_IG08 - ;; size=64 bbWeight=1 PerfScore 13.50
...

-4 (-0.15%) : 5961.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -23,24 +23,24 @@ ; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String> ; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28 ; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3 ; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]> ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1 ;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt" ;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg" ;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -67,13 +67,13 @@ ;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" ;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> -; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg" -; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> +; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg" +; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]> ; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg" ; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]> @@ -90,14 +90,14 @@ ;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> -; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> +; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP ;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP @@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2 bhi G_M4730_IG74
- cmp w1, #0 - cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w3, [x1, #0x08] cmp w3, w0 bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref ; byrRegs -[x27] add x1, x1, #16 @@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {}, beq G_M4730_IG67 b G_M4730_IG27 ;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89} str w1, [fp, #0x60] // [V10 loc6] mov w28, w2 @@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; GC ptr vars +{V89} ldr w28, [fp, #0x68] // [V07 loc3] ;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3] ; GC ptr vars -{V57} cmp w25, w26 @@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89} ; GC ptr vars +{V13} cbz x24, G_M4730_IG39 ;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26] ldr w26, [fp, #0x44] // [V90 tmp68] cbz w26, G_M4730_IG32 @@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g str w0, [x19, #0x18] b G_M4730_IG41 ;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27] ; GC ptr vars +{V13 V16 V89} b G_M4730_IG42 @@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; gcrRegs -[x26] b G_M4730_IG47 ;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26] ; GC ptr vars +{V13 V16 V89} ldr x2, [fp, #0x30] // [V13 loc9] @@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ; gcr arg pop 0 b G_M4730_IG06 ;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27] ; GC ptr vars +{V13 V16 V89} ldr x1, [fp, #0x30] // [V13 loc9] @@ -1212,7 +1211,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2688, prolog size 48, PerfScore 6977.50, instruction count 672, allocated bytes for code 2688 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2684, prolog size 48, PerfScore 6975.50, instruction count 671, allocated bytes for code 2684 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -1223,7 +1222,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 672 (0x002a0) Actual length = 2688 (0x000a80)
+ Function Length : 671 (0x0029f) Actual length = 2684 (0x000a7c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.61%) : 5880.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)

@@ -76,7 +76,7 @@ G_M60940_IG02: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=800 G_M60940_IG03: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz cbnz x0, G_M60940_IG04 str xzr, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=12 bbWeight=1 PerfScore 3.00 G_M60940_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -128,7 +128,7 @@ G_M60940_IG05: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, ldr x0, [fp, #0x38] // [V07 loc3] ; gcrRegs +[x0] str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=52 bbWeight=1 PerfScore 14.00 G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -144,7 +144,7 @@ G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w2, wzr mov w3, wzr cmp w1, #0
- ble G_M60940_IG11
+ ble G_M60940_IG13
;; size=44 bbWeight=1 PerfScore 13.00 G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz mov w4, #24 @@ -159,21 +159,28 @@ G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w2, [fp, #0x28] // [V10 loc6+0x08] ; byrRegs -[x2] cmp w2, #17
- beq G_M60940_IG10
+ bne G_M60940_IG10 + ;; size=44 bbWeight=8 PerfScore 152.00 +G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + b G_M60940_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + b G_M60940_IG13 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M60940_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0]
add w2, w3, #1 sxtw w3, w2 cmp w1, w3 bgt G_M60940_IG07
- ;; size=60 bbWeight=8 PerfScore 172.00 -G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=8 PerfScore 20.00 +G_M60940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M60940_IG11
+ b G_M60940_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - b G_M60940_IG11 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, fp, #32 // [V10 loc6] ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0] @@ -184,9 +191,9 @@ G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x2 ; gcr arg pop 0 str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=36 bbWeight=1 PerfScore 10.00
-G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG13: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V05} ldr x0, [fp, #0x18] // [V04 loc0] @@ -199,36 +206,36 @@ G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M60940_IG16
+ b G_M60940_IG18
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG12: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04 V05} ldr x0, [fp, #0x48] // [V34 PSPSym]
- bl G_M60940_IG27
+ bl G_M60940_IG29
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60940_IG13: ; bbWeight=1, nogc, extend
+G_M60940_IG15: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05} ldr x0, [fp, #0x10] // [V05 loc1] ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M60940_IG15: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x50] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, xzr - ;; size=4 bbWeight=1 PerfScore 0.50
G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x60 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, xzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M60940_IG19: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x50] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M60940_IG20: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] @@ -236,7 +243,7 @@ G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre str x1, [sp, #0x18] sub fp, x1, #96 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG21: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05} mov x1, x0 ; gcrRegs +[x1] @@ -249,12 +256,12 @@ G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbnz x19, G_M60940_IG20
+ cbnz x19, G_M60940_IG22
mov w0, wzr ; gcrRegs -[x0]
- b G_M60940_IG23
+ b G_M60940_IG25
;; size=36 bbWeight=0 PerfScore 0.00
-G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -263,7 +270,7 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M60940_IG21
+ cbnz x0, G_M60940_IG23
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -276,44 +283,44 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by cmp x0, #0 cset x0, ne ; gcrRegs -[x0]
- b G_M60940_IG22
+ b G_M60940_IG24
;; size=56 bbWeight=0 PerfScore 0.00
-G_M60940_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0 cset x0, ne ;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #96 str x3, [sp, #0x18] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M60940_IG25: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG27: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
adr x0, [G_M60940_IG09] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M60940_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #96 str x3, [sp, #0x18] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG30: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0]
- cbz x0, G_M60940_IG29
+ cbz x0, G_M60940_IG31
movz x1, #0xD1FFAB1E // code for System.Reflection.PortableExecutable.PEReader:Dispose():this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -323,7 +330,7 @@ G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr @@ -331,7 +338,7 @@ G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, RWD00 dq 0000000104814218h, 00000001084987B0h
-Total bytes of code 652, prolog size 32, PerfScore 283.00, instruction count 163, allocated bytes for code 652 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
+Total bytes of code 656, prolog size 32, PerfScore 284.00, instruction count 164, allocated bytes for code 656 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
; ============================================================ Unwind Info: @@ -342,7 +349,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -410,7 +417,7 @@ Unwind Info: *************** EH table for System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider 2 EH table entries, 1 duplicate clauses, 1 cloned finallys, 4 total EH entries reported to VM
-EH#0: try [G_M60940_IG10..G_M60940_IG11) handled by [G_M60940_IG24..G_M60940_IG27) filter at [G_M60940_IG18..G_M60940_IG24)
...

+16 (+0.67%) : 16579.dasm - System.Text.Json.Tests.Perf_Deep:WriteDeepUtf16():this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T00] ( 69,116.50) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Text.Json.Utf8JsonWriter> ; V02 loc1 [V02 ] ( 9, 7 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init ld-addr-op <System.Text.Json.JsonWriterOptions> ; V03 loc2 [V03,T09] ( 6, 21 ) int -> x21
-; V04 loc3 [V04,T02] ( 8, 29 ) int -> x24
+; V04 loc3 [V04,T02] ( 8, 29 ) int -> x21
; V05 loc4 [V05,T18] ( 4, 13 ) int -> x19 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T42] ( 3, 6 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Buffers.ArrayBufferWriter`1[ubyte]> @@ -86,8 +86,8 @@ ;* V75 tmp69 [V75 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V76 tmp70 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V77 tmp71 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x21 "Inlining Arg" -; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x22 "Inlining Arg" +; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x26 "Inlining Arg"
;* V80 tmp74 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V81 tmp75 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V82 tmp76 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -100,7 +100,7 @@ ; V89 tmp83 [V89,T33] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder> ; V90 tmp84 [V90,T24] ( 5, 10 ) ref -> x0 ;* V91 tmp85 [V91 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x22 "Inline stloc first use temp"
+; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x27 "Inline stloc first use temp"
;* V93 tmp87 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V94 tmp88 [V94 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V95 tmp89 [V95,T14] ( 2, 16 ) int -> x1 "Inlining Arg" @@ -145,10 +145,10 @@ ;* V134 tmp128 [V134 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP ;* V135 tmp129 [V135 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP ;* V136 tmp130 [V136 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x25 "field V75._reference (fldOffset=0x0)" P-INDEP -; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x21 "field V75._length (fldOffset=0x8)" P-INDEP -; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x25 "field V76._reference (fldOffset=0x0)" P-INDEP -; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x21 "field V76._length (fldOffset=0x8)" P-INDEP
+; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x26 "field V75._reference (fldOffset=0x0)" P-INDEP +; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x22 "field V75._length (fldOffset=0x8)" P-INDEP +; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x26 "field V76._reference (fldOffset=0x0)" P-INDEP +; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x22 "field V76._length (fldOffset=0x8)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP ;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP ;* V143 tmp137 [V143 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP @@ -159,7 +159,7 @@ ; V148 tmp142 [V148,T37] ( 2, 8 ) long -> x24 "Cast away GC" ; V149 tmp143 [V149,T51] ( 2, 4 ) long -> x25 "Cast away GC" ; V150 tmp144 [V150,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x22 "Cast away GC"
+; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x27 "Cast away GC"
; V152 tmp146 [V152,T07] ( 3, 24 ) ref -> x1 "arr expr" ; V153 PSPSym [V153,T61] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym" ; V154 cse0 [V154,T17] ( 4, 14 ) int -> x0 "CSE - moderate" @@ -170,21 +170,22 @@ ; Lcl frame size = 72 G_M54203_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0xA0]!
stp x19, x20, [sp, #0x58] stp x21, x22, [sp, #0x68] stp x23, x24, [sp, #0x78]
- str x25, [sp, #0x88]
+ stp x25, x26, [sp, #0x88] + str x27, [sp, #0x98]
mov fp, sp add x9, fp, #32 movi v16.16b, #0 stp q16, q16, [x9] stp xzr, xzr, [x9, #0x20]
- add x1, sp, #144
+ add x1, sp, #160
str x1, [fp, #0x50] // [V153 PSPSym] mov x19, x0 ; gcrRegs +[x19]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M54203_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20] @@ -485,18 +486,18 @@ G_M54203_IG28: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { str w0, [x20, #0x28] mov w0, #3 strb w0, [x20, #0x36]
- mov w24, wzr
+ mov w21, wzr
;; size=32 bbWeight=1 PerfScore 8.00 G_M54203_IG29: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x28] ; gcrRegs +[x0] ldr w1, [x0, #0x08]
- cmp w24, w1
+ cmp w21, w1
bhs G_M54203_IG47 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x22, [x0, w24, UXTW #3]
+ ldr x22, [x0, w21, UXTW #3]
; gcrRegs +[x22] cbnz x22, G_M54203_IG61 ;; size=28 bbWeight=4 PerfScore 48.00 @@ -517,12 +518,12 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x19, #0x20] ; gcrRegs +[x1] ldr w0, [x1, #0x08]
- cmp w24, w0
+ cmp w21, w0
bhs G_M54203_IG47 add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- ldr w1, [x1, w24, UXTW #2]
+ ldr w1, [x1, w21, UXTW #2]
; byrRegs -[x1] sxtw x1, w1 mov x0, x20 @@ -534,10 +535,10 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- add w24, w24, #1
+ add w21, w21, #1
movz w0, #0xD1FFAB1E movk w0, #1 LSL #16
- cmp w24, w0
+ cmp w21, w0
blt G_M54203_IG29 ;; size=72 bbWeight=4 PerfScore 82.00 G_M54203_IG32: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref @@ -631,7 +632,7 @@ G_M54203_IG39: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b b G_M54203_IG72 ;; size=64 bbWeight=1 PerfScore 15.00 G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov w0, w21
+ mov w0, w22
movz x1, #0xD1FFAB1E // code for System.Text.Json.ThrowHelper:ThrowArgumentException_ValueTooLarge(long) movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -640,9 +641,9 @@ G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
+G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
; gcrRegs +[x19]
- ; byrRegs +[x25]
+ ; byrRegs +[x26]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -653,7 +654,7 @@ G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ;; size=24 bbWeight=0 PerfScore 0.00 G_M54203_IG42: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]
- ; byrRegs -[x25]
+ ; byrRegs -[x26]
ldrb w4, [x20, #0x36] ldr w2, [x20, #0x68] mov w0, #31 @@ -915,27 +916,27 @@ G_M54203_IG60: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=100 ;; size=40 bbWeight=0.50 PerfScore 4.25 G_M54203_IG61: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x22]
- add x25, x22, #12 - ; byrRegs +[x25] - ldr w21, [x22, #0x08]
+ add x26, x22, #12 + ; byrRegs +[x26] + ldr w22, [x22, #0x08] + ; gcrRegs -[x22]
movz w0, #0xD1FFAB1E movk w0, #0xD1FFAB1E LSL #16
- cmp w21, w0
+ cmp w22, w0
bgt G_M54203_IG40 add x0, x20, #96 ; byrRegs +[x0] ldr x0, [x0] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbnz w21, G_M54203_IG62
+ cbnz w22, G_M54203_IG62
movn w3, #0 b G_M54203_IG65 ;; size=44 bbWeight=2 PerfScore 24.00
-G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref, isz - ; gcrRegs -[x22] - mov x22, x25 - ; byrRegs +[x22] - str x22, [fp, #0x20] // [V87 tmp81]
+G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref, isz + mov x27, x26 + ; byrRegs +[x27] + str x27, [fp, #0x20] // [V87 tmp81]
cbnz x0, G_M54203_IG64 movz x0, #0xD1FFAB1E ; gcrRegs -[x0] @@ -944,17 +945,17 @@ G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200 ldr w0, [x0] tbz w0, #0, G_M54203_IG41 ;; size=32 bbWeight=2 PerfScore 16.00
-G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref - ; byrRegs -[x22]
+G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref + ; byrRegs -[x27]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=2 PerfScore 9.00
-G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref - mov x1, x22 - mov w2, w21
+G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref + mov x1, x27 + mov w2, w22
ldr x3, [x0] ldr x3, [x3, #0x48] ldr x3, [x3, #0x28] @@ -963,13 +964,13 @@ G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200 ; gcr arg pop 0 sxtw w3, w0 ;; size=28 bbWeight=2 PerfScore 23.00
-G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
str xzr, [fp, #0x20] // [V87 tmp81] cmn w3, #1 beq G_M54203_IG66
- mov x1, x25
+ mov x1, x26
; byrRegs +[x1]
- mov w2, w21
+ mov w2, w22
mov x0, x20 ; gcrRegs +[x0] movz x4, #0xD1FFAB1E // code for <unknown method> @@ -978,12 +979,12 @@ G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ldr x4, [x4] blr x4 ; gcrRegs -[x0]
- ; byrRegs -[x1 x25]
+ ; byrRegs -[x1 x26]
; gcr arg pop 0 b G_M54203_IG69 ;; size=48 bbWeight=2 PerfScore 21.00
-G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz - ; byrRegs +[x25]
+G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
...

+20 (+3.94%) : 21852.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -33,10 +33,10 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value" ; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG23 - cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25 + cbz w21, G_M46295_IG19
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG17 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG14 - cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16 + cbnz x23, G_M46295_IG12
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08] sub w0, w0, w24 cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12 ; byrRegs +[x2] sbfiz x0, x24, #1, #32 @@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -244,7 +255,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -254,7 +265,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 508, prolog size 32, PerfScore 659.00, instruction count 127, allocated bytes for code 508 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 528, prolog size 32, PerfScore 671.00, instruction count 132, allocated bytes for code 528 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -265,7 +276,7 @@ Unwind Info: E bit : 0 ...

benchmarks.run_pgo.osx.arm64.checked.mch

-16 (-3.54%) : 76508.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)

@@ -23,7 +23,7 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]> ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ; V12 tmp6 [V12,T05] ( 2,399.96) long -> x1 "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> x23 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> x23 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> x24 class-hnd "Inlining Arg" <System.__Canon> @@ -39,9 +39,9 @@ ; V26 tmp20 [V26,T03] ( 2,400 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon> ;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP ;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> x24 "V04.[000..008)" -; V30 tmp24 [V30,T14] ( 4,101.01) int -> x25 "V04.[008..012)" -; V31 tmp25 [V31,T07] ( 6,301.01) int -> registers "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> x24 "V04.[000..008)" +; V30 tmp24 [V30,T14] ( 3,101.01) int -> x25 "V04.[008..012)" +; V31 tmp25 [V31,T06] ( 6,301.01) int -> registers "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> x2 "V04.[024..032)" ; V33 tmp27 [V33,T11] ( 3,199.99) long -> x4 "V04.[032..040)" ;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)" @@ -80,15 +80,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ldp w25, w26, [fp, #0xF8] // [V04 loc2+0x08], [V04 loc2+0x0c] ;; size=12 bbWeight=1 PerfScore 4.50 G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- cbz w23, G_M19783_IG08
+ cbz w23, G_M19783_IG06
;; size=4 bbWeight=0.01 PerfScore 0.01 G_M19783_IG04: ; bbWeight=7.41, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
- b G_M19783_IG08
+ b G_M19783_IG06
;; size=4 bbWeight=7.41 PerfScore 7.41 G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x24] cmp w22, w0
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
add x0, x19, #16 ; byrRegs +[x0] ldr x0, [x0, w22, UXTW #3] @@ -107,11 +107,15 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs mov w26, wzr b G_M19783_IG03 ;; size=56 bbWeight=0.01 PerfScore 0.17
-G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ mov w23, #1 + ldr w0, [x24, #0x44] + cmp w25, w0 + bne G_M19783_IG18
ldr w27, [x24, #0x38]
- b G_M19783_IG10 - ;; size=8 bbWeight=100 PerfScore 400.00
+ b G_M19783_IG09 + ;; size=24 bbWeight=100 PerfScore 900.00
G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] sxtw x0, w22 @@ -127,23 +131,17 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, blr x4 ; gcrRegs -[x0 x2] ; gcr arg pop 0
- cbz w0, G_M19783_IG15 - ;; size=44 bbWeight=99.99 PerfScore 1199.89 -G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz - mov w23, #1 - ldr w0, [x24, #0x44] - cmp w25, w0 - bne G_M19783_IG19
+ cbz w0, G_M19783_IG14
b G_M19783_IG06
- ;; size=20 bbWeight=100 PerfScore 600.00 -G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=99.99 PerfScore 1299.88 +G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24, #0x10] ; gcrRegs +[x0] add w1, w26, #1 sxtw w28, w1 ldr w1, [x0, #0x08] cmp w26, w1
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
mov w1, #24 mov x2, #16 umaddl x1, w26, w1, x2 @@ -153,38 +151,38 @@ G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byref ldr w1, [x0, #0x14] cmn w1, #1 mov w26, w28
- bge G_M19783_IG11
+ bge G_M19783_IG10
;; size=56 bbWeight=100 PerfScore 2000.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cmp w26, w27
- bhs G_M19783_IG16 - b G_M19783_IG09
+ bhs G_M19783_IG15 + b G_M19783_IG08
;; size=12 bbWeight=100 PerfScore 250.00
-G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
+G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0] ldp x2, x4, [x0] ; gcrRegs +[x2] mov w28, #1 ;; size=8 bbWeight=100 PerfScore 450.00
-G_M19783_IG12: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cbnz w28, G_M19783_IG07 ;; size=4 bbWeight=100 PerfScore 100.00
-G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG12: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x24] add w22, w22, #1 ldr w0, [x19, #0x08] cmp w0, w22
- ble G_M19783_IG17
+ ble G_M19783_IG16
b G_M19783_IG05 ;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21 x24] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -198,21 +196,17 @@ G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w23, #1 - ldr w1, [x24, #0x44] - cmp w25, w1 - beq G_M19783_IG06 - b G_M19783_IG19 - ;; size=64 bbWeight=0 PerfScore 0.00 -G_M19783_IG16: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+ b G_M19783_IG06 + ;; size=48 bbWeight=0 PerfScore 0.00 +G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
add w26, w27, #1 mov x2, xzr ; gcrRegs +[x2] mov x4, xzr mov w28, wzr
- b G_M19783_IG12
+ b G_M19783_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M19783_IG16: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x19 x24] ldr x2, [x20, #0x08] ; gcrRegs +[x2] @@ -226,7 +220,7 @@ G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcrRegs -[x1 x20-x21] ; gcr arg pop 0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG17: ; bbWeight=0, epilog, nogc, extend
ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] @@ -236,7 +230,7 @@ G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend add sp, sp, #224 ret lr ;; size=32 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 @@ -247,7 +241,7 @@ G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 452, prolog size 40, PerfScore 5025.53, instruction count 113, allocated bytes for code 452 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 436, prolog size 40, PerfScore 5025.52, instruction count 109, allocated bytes for code 436 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -258,7 +252,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-3.06%) : 32953.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)

@@ -8,8 +8,8 @@ ; 7 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T31] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128> -; V01 arg1 [V01,T32] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V00 arg0 [V00,T30] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128> +; V01 arg1 [V01,T31] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
; V02 loc0 [V02,T28] ( 6, 6 ) long -> x19 ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[uint]> ; V04 loc2 [V04,T29] ( 6, 6 ) long -> x21 @@ -23,8 +23,8 @@ ;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]> ;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ptr ; V14 loc12 [V14,T05] ( 13, 39 ) int -> [fp+0x64] ptr
-; V15 loc13 [V15,T11] ( 8, 18 ) int -> [fp+0x60] spill-single-def ptr -; V16 loc14 [V16,T18] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
+; V15 loc13 [V15,T11] ( 7, 18 ) int -> [fp+0x60] spill-single-def ptr +; V16 loc14 [V16,T17] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
; V17 loc15 [V17,T03] ( 6, 60 ) long -> [fp+0x50] ptr ; V18 loc16 [V18,T10] ( 3, 22 ) int -> [fp+0x4C] ptr ; V19 loc17 [V19,T02] ( 13,114 ) long -> [fp+0x40] ptr @@ -38,7 +38,7 @@ ; V27 tmp5 [V27,T33] ( 3, 6 ) int -> x0 "Span.get_Item index" ; V28 tmp6 [V28,T63] ( 2, 2 ) int -> x0 "Span.get_Item index" ; V29 tmp7 [V29,T59] ( 5, 3 ) int -> x0
-; V30 tmp8 [V30,T24] ( 3, 8 ) int -> x7
+; V30 tmp8 [V30,T23] ( 3, 8 ) int -> x7
; V31 tmp9 [V31,T16] ( 5, 12 ) int -> x0 ;* V32 tmp10 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[uint]> ;* V33 tmp11 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]> @@ -64,8 +64,8 @@ ;* V53 tmp31 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp33 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V56 tmp34 [V56,T19] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg" -; V57 tmp35 [V57,T25] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
+; V56 tmp34 [V56,T18] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg" +; V57 tmp35 [V57,T24] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V59 tmp37 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp38 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -77,8 +77,8 @@ ;* V66 tmp44 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V67 tmp45 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V69 tmp47 [V69,T17] ( 5, 12 ) int -> [fp+0x38] ptr "Inlining Arg" -; V70 tmp48 [V70,T23] ( 3, 8 ) byref -> [fp+0x18] ptr "Inlining Arg"
+; V69 tmp47 [V69,T19] ( 3, 12 ) int -> [fp+0x38] spill-single-def ptr "Inlining Arg" +; V70 tmp48 [V70,T25] ( 2, 8 ) byref -> [fp+0x18] spill-single-def ptr "Inlining Arg"
;* V71 tmp49 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V72 tmp50 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -92,7 +92,7 @@ ; V81 tmp59 [V81,T48] ( 2, 4 ) long -> x0 "Inlining Arg" ; V82 tmp60 [V82,T49] ( 2, 4 ) long -> x1 "Inlining Arg" ; V83 tmp61 [V83,T14] ( 7, 15 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp62 [V84,T09] ( 15, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V84 tmp62 [V84,T09] ( 14, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
; V85 tmp63 [V85,T13] ( 6, 7 ) byref -> x21 single-def "field V05._reference (fldOffset=0x0)" P-INDEP ; V86 tmp64 [V86,T08] ( 15, 21.50) int -> x22 "field V05._length (fldOffset=0x8)" P-INDEP ; V87 tmp65 [V87,T20] ( 7, 8 ) byref -> x23 single-def "field V06._reference (fldOffset=0x0)" P-INDEP @@ -132,7 +132,7 @@ ; V121 tmp99 [V121,T43] ( 4, 4 ) long -> x2 "V01.[000..008)" ; V122 tmp100 [V122,T40] ( 5, 5 ) long -> x3 "V01.[008..016)" ; V123 GsCookie [V123 ] ( 1, 1 ) long -> [fp+0xB8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V124 cse0 [V124,T30] ( 4, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V124 cse0 [V124,T32] ( 3, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V125 cse1 [V125,T12] ( 4, 16 ) int -> [fp+0x34] spill-single-def "CSE - aggressive" ; V126 cse2 [V126,T26] ( 6, 7.50) int -> x3 multi-def "CSE - moderate" ; V127 cse3 [V127,T37] ( 3, 6 ) int -> x0 "CSE - moderate" @@ -176,7 +176,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w0, w1, w0 neg w0, w0, ASR #5 add w20, w0, #4
- tbnz w20, #31, G_M55503_IG48
+ tbnz w20, #31, G_M55503_IG46
add x21, fp, #152 // [V24 tmp2] str w2, [x21] lsr x0, x2, #32 @@ -193,13 +193,13 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w0, w1, w0 neg w0, w0, ASR #5 add w22, w0, #4
- tbnz w22, #31, G_M55503_IG48
+ tbnz w22, #31, G_M55503_IG46
add x23, fp, #136 // [V25 tmp3] stp xzr, xzr, [x23] sub w0, w20, w22 add w24, w0, #1 cmp w24, #4
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
cmp w24, #0 cset x0, ge movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) @@ -278,7 +278,7 @@ G_M55503_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 G_M55503_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz sxtw w5, w20 cmp w20, w22
- blt G_M55503_IG36
+ blt G_M55503_IG37
;; size=12 bbWeight=1 PerfScore 2.00 G_M55503_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz sub w6, w5, w22 @@ -383,11 +383,11 @@ G_M55503_IG25: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x2 bhi G_M55503_IG22 ;; size=20 bbWeight=16 PerfScore 56.00 G_M55503_IG26: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
- cbz x13, G_M55503_IG31
+ cbz x13, G_M55503_IG32
;; size=4 bbWeight=8 PerfScore 8.00 G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz cmp w6, w20
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
ubfiz x0, x6, #2, #32 add x9, x19, x0 ; byrRegs +[x9] @@ -402,7 +402,7 @@ G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 str w5, [fp, #0x64] // [V14 loc12] tbnz w1, #31, G_M55503_IG43 ;; size=44 bbWeight=2 PerfScore 18.00
-G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000101000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; byrRegs -[x9] mov x2, x21 ; byrRegs +[x2] @@ -417,60 +417,78 @@ G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 blr x10 ; byrRegs -[x0 x2] ; gcr arg pop 0
- ldr w4, [fp, #0x5C] // [V16 loc14] - cmp w0, w4
+ ldr w2, [fp, #0x5C] // [V16 loc14] + cmp w0, w2
beq G_M55503_IG39
- add w1, w4, #1
+ add w1, w2, #1
cmp w0, w1
- bne G_M55503_IG44
+ beq G_M55503_IG29 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcr arg pop 0 + ;; size=104 bbWeight=2 PerfScore 44.00 +G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr x0, [fp, #0x10] // [V124 cse0] ; byrRegs +[x0]
- ldr w5, [fp, #0x60] // [V15 loc13] - sub w1, w20, w5 - tbnz w1, #31, G_M55503_IG38 - ;; size=76 bbWeight=2 PerfScore 38.00 -G_M55503_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V70 tmp48] + ; GC ptr vars +{V70} + ldr w4, [fp, #0x60] // [V15 loc13] + sub w1, w20, w4 + str w1, [fp, #0x38] // [V69 tmp47] + tbnz w1, #31, G_M55503_IG44 + ;; size=24 bbWeight=2 PerfScore 15.00 +G_M55503_IG30: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V70}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; GC ptr vars -{V124} mov x2, x21 ; byrRegs +[x2] mov w3, w22
- movz x4, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint - movk x4, #0xD1FFAB1E LSL #16 - movk x4, #1 LSL #32 - ldr x4, [x4] - blr x4
+ movz x5, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint + movk x5, #0xD1FFAB1E LSL #16 + movk x5, #1 LSL #32 + ldr x5, [x5] + ; GC ptr vars -{V70} + blr x5
; byrRegs -[x0 x2] ; gcr arg pop 0 ldr x2, [fp, #0x40] // [V19 loc17] sub x2, x2, #1 cmp w0, #1
- bne G_M55503_IG47
+ bne G_M55503_IG45
;; size=44 bbWeight=2 PerfScore 21.00
-G_M55503_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
mov x13, x2 ldp w6, w5, [fp, #0x60] // [V15 loc13], [V14 loc12] ;; size=8 bbWeight=1 PerfScore 2.50
-G_M55503_IG31: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w24
- bhs G_M55503_IG33
+ bhs G_M55503_IG34
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG32: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str w13, [x23, w6, UXTW #2] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w5, w20
- bhs G_M55503_IG35
+ bhs G_M55503_IG36
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str wzr, [x19, w5, UXTW #2] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr w8, [fp, #0x34] // [V125 cse1] sxtw w5, w8 cmp w5, w22 bge G_M55503_IG10 ;; size=16 bbWeight=4 PerfScore 16.00
-G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x19 x21] ldp w1, w0, [x23, #0x08] orr x1, x1, x0, LSL #32 @@ -482,12 +500,12 @@ G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b movk xip0, #0xD1FFAB1E LSL #48 ldr xip1, [fp, #0xB8] // [V123 GsCookie] cmp xip0, xip1
- beq G_M55503_IG37
+ beq G_M55503_IG38
bl CORINFO_HELP_FAIL_FAST ; byrRegs -[x23] ; gcr arg pop 0 ;; size=48 bbWeight=1 PerfScore 14.50
-G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x27, x28, [sp, #0xD1FFAB1E] ldp x25, x26, [sp, #0xF0] ldp x23, x24, [sp, #0xE0] @@ -496,19 +514,11 @@ G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0xD1FFAB1E ret lr ;; size=28 bbWeight=1 PerfScore 7.00 ...

-8 (-1.33%) : 67213.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueImmutableDictionary():ubyte:this (Tier1-OSR)

@@ -13,70 +13,68 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String> ; V01 loc0 [V01,T06] ( 9, 799.92) ubyte -> x20 ; V02 loc1 [V02,T11] ( 6, 299.97) ref -> x21 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T17] ( 3, 1.02) ref -> x22 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T14] ( 3, 100 ) ref -> x22 class-hnd exact <<unknown class>>
; V04 loc3 [V04,T05] ( 17,1300.89) int -> x19 ; V05 loc4 [V05 ] ( 5, 400.96) ref -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.String> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x25 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x24 class-hnd exact "Inlining Arg" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ; V10 tmp4 [V10,T07] ( 8, 799.92) ubyte -> x0 "Inline return value spill temp" ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ; V12 tmp6 [V12,T03] ( 6,2560.48) int -> x0 "Inline stloc first use temp"
-; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
+; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> ;* V15 tmp9 [V15,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V17 tmp11 [V17,T00] ( 14,4813.94) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V17 tmp11 [V17,T00] ( 14,4813.94) ref -> x25 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V08._root (fldOffset=0x0)" P-INDEP ;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref "field V08._comparers (fldOffset=0x8)" P-INDEP
-; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x26 "field V09._root (fldOffset=0x0)" P-INDEP -; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x27 "field V09._comparers (fldOffset=0x8)" P-INDEP
+; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x25 "field V09._root (fldOffset=0x0)" P-INDEP +; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x26 "field V09._comparers (fldOffset=0x8)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref "field V11._root (fldOffset=0x0)" P-INDEP
-; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x27 "field V11._comparers (fldOffset=0x8)" P-INDEP
+; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x26 "field V11._comparers (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T01] ( 3,3703.32) int -> x2 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 3,3135.78) ref -> x4 "CSE - aggressive" ; V26 cse2 [V26,T15] ( 3, 37.41) int -> x2 "CSE - aggressive" ; V27 cse3 [V27,T16] ( 3, 31.67) ref -> x4 "CSE - aggressive" ; V28 cse4 [V28,T09] ( 7, 400.98) int -> x23 "CSE - aggressive"
-; V29 cse5 [V29,T14] ( 4, 101.00) byref -> x24 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M61968_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - stp x25, x26, [sp, #0x58] - str x27, [sp, #0x68]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V13 tmp7], [V13 tmp7+0x08] - str xzr, [fp, #0x20] // [V13 tmp7+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V13 tmp7], [V13 tmp7+0x08] + str xzr, [fp, #0x28] // [V13 tmp7+0x10]
ldr w20, [fp, #0xB4] ldp x22, x21, [fp, #0xA0] ; gcrRegs +[x21-x22] ldr w19, [fp, #0x9C]
- ;; size=48 bbWeight=0.01 PerfScore 0.15
+ ;; size=44 bbWeight=0.01 PerfScore 0.14
G_M61968_IG02: ; bbWeight=0.01, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz ldr w23, [x22, #0x08] cmp w23, w19 ble G_M61968_IG22 tbnz w19, #31, G_M61968_IG11
- add x24, x22, #16 - ; byrRegs +[x24] - ;; size=20 bbWeight=0.01 PerfScore 0.06 -G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref, isz - ; gcrRegs -[x22] - ldr x25, [x24, w19, UXTW #3] - ; gcrRegs +[x25]
+ ;; size=16 bbWeight=0.01 PerfScore 0.05 +G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz + add x0, x22, #16 + ; byrRegs +[x0] + ldr x24, [x0, w19, UXTW #3] + ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24 - ldp x26, x27, [x21, #0x08] - ; gcrRegs +[x26-x27] - ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24 + ldp x25, x26, [x21, #0x08] + ; gcrRegs +[x25-x26] + ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0] + mov x1, x24
; gcrRegs +[x1] movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 @@ -85,44 +83,44 @@ G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=100000 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ldrsb wzr, [x26] - ;; size=48 bbWeight=98.99 PerfScore 2276.77 -G_M61968_IG04: ; bbWeight=1267.44, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz - ldr x4, [x26, #0x08]
+ ldrsb wzr, [x25] + ;; size=52 bbWeight=98.99 PerfScore 2326.27 +G_M61968_IG04: ; bbWeight=1267.44, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz + ldr x4, [x25, #0x08]
; gcrRegs +[x4] cbz x4, G_M61968_IG20
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2 beq G_M61968_IG08 ;; size=20 bbWeight=1267.44 PerfScore 10773.21
-G_M61968_IG05: ; bbWeight=1168.45, gcrefRegs=E200010 {x4 x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M61968_IG05: ; bbWeight=1168.45, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2 ble G_M61968_IG07 ;; size=8 bbWeight=1168.45 PerfScore 1752.67
-G_M61968_IG06: ; bbWeight=567.54, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG06: ; bbWeight=567.54, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG04 ;; size=8 bbWeight=567.54 PerfScore 2270.14
-G_M61968_IG07: ; bbWeight=600.91, gcrefRegs=A200010 {x4 x21 x25 x27}, byrefRegs=1000000 {x24}, byref - ; gcrRegs -[x26] +[x4] - mov x26, x4 - ; gcrRegs +[x26]
+G_M61968_IG07: ; bbWeight=600.91, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x25] +[x4] + mov x25, x4 + ; gcrRegs +[x25]
b G_M61968_IG04 ;; size=8 bbWeight=600.91 PerfScore 901.37
-G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, nogc
+G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x4]
- ldp x0, x2, [x26, #0x20] - stp x0, x2, [fp, #0x10] - ldr x0, [x26, #0x30] - str x0, [fp, #0x20]
+ ldp x0, x2, [x25, #0x20] + stp x0, x2, [fp, #0x18] + ldr x0, [x25, #0x30] + str x0, [fp, #0x28]
;; size=16 bbWeight=395.96 PerfScore 3563.64 G_M61968_IG09: ; bbWeight=395.96, isz, extend
- add x0, fp, #16 // [V13 tmp7]
+ add x0, fp, #24 // [V13 tmp7]
add x4, fp, #144 // [V05 loc4]
- mov x2, x25
+ mov x2, x24
; gcrRegs +[x2]
- mov x3, x27
+ mov x3, x26
; gcrRegs +[x3] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -132,7 +130,7 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend movk x5, #1 LSL #32 ldr x5, [x5] blr x5
- ; gcrRegs -[x2-x3 x25-x27]
+ ; gcrRegs -[x2-x3 x24-x26]
; gcr arg pop 0 eor w0, w20, w0 uxtb w20, w0 @@ -140,25 +138,24 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend cmp w23, w19 ble G_M61968_IG22 ;; size=68 bbWeight=395.96 PerfScore 4751.53
-G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
b G_M61968_IG03 ;; size=4 bbWeight=98.99 PerfScore 98.99 G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x22] - ; byrRegs -[x24]
cmp w19, w23 bhs G_M61968_IG19
- add x24, x22, #16 - ; byrRegs +[x24] - ldr x25, [x24, w19, UXTW #3] - ; gcrRegs +[x25]
+ add x0, x22, #16 + ; byrRegs +[x0] + ldr x24, [x0, w19, UXTW #3] + ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24 - ldp x26, x27, [x21, #0x08] - ; gcrRegs +[x26-x27] - ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24 + ldp x25, x26, [x21, #0x08] + ; gcrRegs +[x25-x26] + ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0] + mov x1, x24
; gcrRegs +[x1] movz x11, #0xD1FFAB1E movk x11, #0xD1FFAB1E LSL #16 @@ -166,46 +163,45 @@ G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- ; byrRegs -[x24]
; gcr arg pop 0
- ldrsb wzr, [x26]
+ ldrsb wzr, [x25]
;; size=60 bbWeight=1.00 PerfScore 25.00
-G_M61968_IG12: ; bbWeight=12.80, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz - ldr x4, [x26, #0x08]
+G_M61968_IG12: ; bbWeight=12.80, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz + ldr x4, [x25, #0x08]
; gcrRegs +[x4] cbz x4, G_M61968_IG21
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2 beq G_M61968_IG16 ;; size=20 bbWeight=12.80 PerfScore 108.82
-G_M61968_IG13: ; bbWeight=11.80, gcrefRegs=E600010 {x4 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M61968_IG13: ; bbWeight=11.80, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2 ble G_M61968_IG15 ;; size=8 bbWeight=11.80 PerfScore 17.70
-G_M61968_IG14: ; bbWeight=5.73, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M61968_IG14: ; bbWeight=5.73, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG12 ;; size=8 bbWeight=5.73 PerfScore 22.93
-G_M61968_IG15: ; bbWeight=6.07, gcrefRegs=A600010 {x4 x21 x22 x25 x27}, byrefRegs=0000 {}, byref - ; gcrRegs -[x26] +[x4] - mov x26, x4 - ; gcrRegs +[x26]
+G_M61968_IG15: ; bbWeight=6.07, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x25] +[x4] + mov x25, x4 + ; gcrRegs +[x25]
b G_M61968_IG12 ...

+20 (+3.76%) : 79973.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T09] ( 4, 3.04) byref -> x22 single-def ; V03 arg3 [V03,T07] ( 4, 4.09) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.15) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.15) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=101.04 PerfScore 2323.81
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0 beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x0, x23, x28 lsl x0, x0, #1 @@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 sxtw w3, w0 ;; size=28 bbWeight=0.52 PerfScore 3.39 G_M3489_IG12: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.04 PerfScore 1.04
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - sub w0, w27, #1 - and w0, w27, w0 - sub w1, w0, #1 - and w27, w0, w1 - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - cbnz w27, G_M3489_IG09 - b G_M3489_IG05 - ;; size=28 bbWeight=0.01 PerfScore 0.04 -G_M3489_IG14: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22] str x23, [fp, #0xD1FFAB1E] // [V05 loc1] ;; size=4 bbWeight=0.52 PerfScore 0.52
-G_M3489_IG15: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add w0, w23, w28 ;; size=8 bbWeight=1.04 PerfScore 2.59
-G_M3489_IG16: ; bbWeight=1.04, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.04, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.04, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=1.04 PerfScore 9.84
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22] + sub w0, w27, #1 + and w0, w27, w0 + sub w1, w0, #1 + and w27, w0, w1 + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + cbnz w27, G_M3489_IG09 + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG06 + ;; size=48 bbWeight=0.01 PerfScore 0.08 +G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend @@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3897.82, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3897.81, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -278,7 +285,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+3.76%) : 77650.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T09] ( 4, 3.02) byref -> x22 single-def ; V03 arg3 [V03,T07] ( 4, 4.03) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.04) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.04) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=101.01 PerfScore 2323.19
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0 beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x0, x23, x28 lsl x0, x0, #1 @@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 sxtw w3, w0 ;; size=28 bbWeight=0.51 PerfScore 3.30 G_M3489_IG12: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.02 PerfScore 1.02
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - sub w0, w27, #1 - and w0, w27, w0 - sub w1, w0, #1 - and w27, w0, w1 - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - cbnz w27, G_M3489_IG09 - b G_M3489_IG05 - ;; size=28 bbWeight=0.01 PerfScore 0.04 -G_M3489_IG14: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22] str x23, [fp, #0xD1FFAB1E] // [V05 loc1] ;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M3489_IG15: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add w0, w23, w28 ;; size=8 bbWeight=1.01 PerfScore 2.52
-G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.01, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=1.01 PerfScore 9.58
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22] + sub w0, w27, #1 + and w0, w27, w0 + sub w1, w0, #1 + and w27, w0, w1 + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + cbnz w27, G_M3489_IG09 + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG06 + ;; size=48 bbWeight=0.01 PerfScore 0.08 +G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend @@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3895.71, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3895.70, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -278,7 +285,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+3.82%) : 34540.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T09] ( 4, 2.83) byref -> x22 single-def ; V03 arg3 [V03,T08] ( 4, 3.65) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T01] ( 9, 602.92) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T01] ( 12, 602.92) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T06] ( 1, 100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T06] ( 2, 100.00) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -142,14 +142,14 @@ G_M3489_IG05: ; bbWeight=100.70, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=100.70 PerfScore 2316.11
-G_M3489_IG06: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG06: ; bbWeight=99.87, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0 beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.87 PerfScore 649.19
G_M3489_IG07: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -175,7 +175,7 @@ G_M3489_IG09: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x0, x23, x28 lsl x0, x0, #1 @@ -213,26 +213,17 @@ G_M3489_IG11: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 sxtw w3, w0 ;; size=28 bbWeight=0.41 PerfScore 2.68 G_M3489_IG12: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=0.83 PerfScore 0.83
-G_M3489_IG13: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - sub w0, w27, #1 - and w0, w27, w0 - sub w1, w0, #1 - and w27, w0, w1 - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - cbnz w27, G_M3489_IG09 - b G_M3489_IG06 - ;; size=28 bbWeight=0.13 PerfScore 0.63 -G_M3489_IG14: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22] str x23, [fp, #0xD1FFAB1E] // [V05 loc1] ;; size=4 bbWeight=0.41 PerfScore 0.41
-G_M3489_IG15: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add w0, w23, w28 ;; size=8 bbWeight=0.70 PerfScore 1.75
-G_M3489_IG16: ; bbWeight=0.70, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=0.70, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -244,7 +235,23 @@ G_M3489_IG16: ; bbWeight=0.70, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=0.70 PerfScore 6.65
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22] + sub w0, w27, #1 + and w0, w27, w0 + sub w1, w0, #1 + and w27, w0, w1 + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + cbnz w27, G_M3489_IG09 + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG07 + ;; size=48 bbWeight=0.13 PerfScore 1.31 +G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend @@ -268,7 +275,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 524, prolog size 52, PerfScore 6997.93, instruction count 131, allocated bytes for code 524 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 544, prolog size 52, PerfScore 6997.81, instruction count 136, allocated bytes for code 544 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -279,7 +286,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
+ Function Length : 136 (0x00088) Actual length = 544 (0x000220)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.osx.arm64.checked.mch

+0 (0.00%) : 26637.dasm - System.Net.Security.SslStreamCertificateContext:Create(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,ubyte,System.Net.Security.SslCertificateTrust,ubyte):System.Net.Security.SslStreamCertificateContext (Tier1)

@@ -24,14 +24,14 @@ ;* V13 loc8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V14 loc9 [V14,T36] ( 3, 5 ) int -> x22 ; V15 loc10 [V15,T34] ( 3, 5 ) ref -> x0 class-hnd exact single-def <System.Security.Cryptography.X509Certificates.X509ChainStatus[]>
-; V16 loc11 [V16,T04] ( 5, 16.50) int -> x11
+; V16 loc11 [V16,T04] ( 5, 16.50) int -> x1
;* V17 loc12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Security.Cryptography.X509Certificates.X509ChainStatus> ; V18 loc13 [V18,T02] ( 6, 20.50) int -> x22 ; V19 loc14 [V19,T03] ( 6, 17 ) int -> x20 ;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V21 tmp1 [V21,T30] ( 3, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V22 tmp2 [V22,T31] ( 3, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2]> -; V23 tmp3 [V23,T18] ( 5, 10 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SslStreamCertificateContext>
+; V22 tmp2 [V22,T31] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2]> +; V23 tmp3 [V23,T18] ( 5, 10 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SslStreamCertificateContext>
;* V24 tmp4 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V25 tmp5 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>> ;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>> @@ -91,10 +91,10 @@ ;* V80 tmp60 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V81 tmp61 [V81,T46] ( 6, 2.50) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V82 tmp62 [V82 ] ( 0, 0 ) ref -> zero-ref "field V17._statusInformation (fldOffset=0x0)" P-INDEP
-; V83 tmp63 [V83,T25] ( 2, 8 ) int -> x2 "field V17.<Status>k__BackingField (fldOffset=0x8)" P-INDEP
+; V83 tmp63 [V83,T25] ( 2, 8 ) int -> x3 "field V17.<Status>k__BackingField (fldOffset=0x8)" P-INDEP
; V84 tmp64 [V84,T52] ( 2, 2 ) ref -> x24 single-def "argument with side effect" ; V85 tmp65 [V85,T54] ( 2, 2 ) int -> x1 "argument with side effect"
-; V86 tmp66 [V86,T12] ( 2, 16 ) int -> x2 "Enum:HasFlag this temp"
+; V86 tmp66 [V86,T12] ( 2, 16 ) int -> x3 "Enum:HasFlag this temp"
; V87 tmp67 [V87,T11] ( 2, 16 ) ref -> x2 "argument with side effect" ; V88 tmp68 [V88,T53] ( 2, 2 ) ref -> x0 single-def "argument with side effect" ; V89 tmp69 [V89,T45] ( 3, 3 ) ref -> x0 single-def "argument with side effect" @@ -103,7 +103,7 @@ ; V92 PSPSym [V92,T59] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" ; V93 cse0 [V93,T55] ( 3, 1.50) ref -> x20 "CSE - moderate" ; V94 cse1 [V94,T17] ( 9, 10 ) long -> x20 multi-def "CSE - moderate"
-; V95 cse2 [V95,T38] ( 3, 5 ) int -> x1 "CSE - moderate"
+; V95 cse2 [V95,T38] ( 3, 5 ) int -> x2 "CSE - moderate"
; V96 cse3 [V96,T29] ( 4, 6 ) long -> x25 "CSE - moderate" ; ; Lcl frame size = 48 @@ -137,7 +137,7 @@ G_M52998_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M52998_IG36
+ cbz w0, G_M52998_IG38
movz x23, #0xD1FFAB1E movk x23, #0xD1FFAB1E LSL #16 movk x23, #1 LSL #32 @@ -472,7 +472,7 @@ G_M52998_IG15: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byr ldr w0, [x0, #0x08] ; gcrRegs -[x0] sub w20, w0, #1
- tbnz w20, #31, G_M52998_IG30
+ tbnz w20, #31, G_M52998_IG32
;; size=40 bbWeight=1 PerfScore 13.50 G_M52998_IG16: ; bbWeight=0.50, gcrefRegs=4A80000 {x19 x21 x23 x26}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x24] @@ -517,27 +517,29 @@ G_M52998_IG16: ; bbWeight=0.50, gcrefRegs=4A80000 {x19 x21 x23 x26}, byre ldr x1, [x1] blr x1 ; gcr arg pop 0
- mov w11, wzr - ldr w1, [x0, #0x08] - cmp w1, #0 - ble G_M52998_IG18
+ mov w1, wzr + ldr w2, [x0, #0x08] + cmp w2, #0 + ble G_M52998_IG19
;; size=140 bbWeight=0.50 PerfScore 21.25 G_M52998_IG17: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
- ubfiz x2, x11, #4, #32 - add x2, x2, #16 - add x2, x0, x2 - ; byrRegs +[x2] - ldr w2, [x2, #0x08] - ; byrRegs -[x2] - tbnz w2, #16, G_M52998_IG28 - add w11, w11, #1 - cmp w1, w11 - bgt G_M52998_IG17 - ;; size=32 bbWeight=4 PerfScore 32.00 -G_M52998_IG18: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0]
+ ubfiz x3, x1, #4, #32 + add x3, x3, #16 + add x3, x0, x3 + ; byrRegs +[x3] + ldr w3, [x3, #0x08] + ; byrRegs -[x3] + tbz w3, #16, G_M52998_IG29 + ;; size=20 bbWeight=4 PerfScore 24.00 +G_M52998_IG18: ; bbWeight=0.50, gcrefRegs=4A80000 {x19 x21 x23 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x24] + add w20, w20, #1 + mov x24, xzr + ; gcrRegs +[x24] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M52998_IG19: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
cmp w20, #0
- ble G_M52998_IG22
+ ble G_M52998_IG23
mov x0, x26 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this @@ -551,7 +553,7 @@ G_M52998_IG18: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, ldr w1, [x1, #0x08] ; gcrRegs -[x1] cmp w1, #1
- ble G_M52998_IG22
+ ble G_M52998_IG23
sxtw x1, w20 movz x0, #0xD1FFAB1E ; gcrRegs -[x0] @@ -564,13 +566,13 @@ G_M52998_IG18: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, ; gcrRegs +[x23] mov w22, wzr ;; size=76 bbWeight=0.50 PerfScore 9.50
-G_M52998_IG19: ; bbWeight=4, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG20: ; bbWeight=4, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x26, #0x18] ; gcrRegs +[x0]
- cbnz x0, G_M52998_IG21
+ cbnz x0, G_M52998_IG22
;; size=8 bbWeight=4 PerfScore 16.00
-G_M52998_IG20: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+G_M52998_IG21: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add x0, x25, #0xD1FFAB1E bl CORINFO_HELP_NEWSFAST @@ -605,7 +607,7 @@ G_M52998_IG20: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byr mov x0, x27 ; gcrRegs +[x0] ;; size=72 bbWeight=2 PerfScore 27.00
-G_M52998_IG21: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG22: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27] add w1, w22, #1 movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this @@ -624,9 +626,9 @@ G_M52998_IG21: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, ; gcr arg pop 0 add w22, w22, #1 cmp w22, w20
- blt G_M52998_IG19
+ blt G_M52998_IG20
;; size=56 bbWeight=4 PerfScore 64.00
-G_M52998_IG22: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG23: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
mov x0, x26 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this @@ -651,7 +653,7 @@ G_M52998_IG22: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz x24, G_M52998_IG29
+ cbz x24, G_M52998_IG31
mov x0, x26 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this @@ -665,17 +667,17 @@ G_M52998_IG22: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, ; gcrRegs -[x0] sub w22, w0, #1 ;; size=116 bbWeight=0.50 PerfScore 21.00
-G_M52998_IG23: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG24: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
add w20, w20, #1 cmp w20, w22
- bge G_M52998_IG30
+ bge G_M52998_IG32
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M52998_IG24: ; bbWeight=4, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG25: ; bbWeight=4, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x26, #0x18] ; gcrRegs +[x0]
- cbnz x0, G_M52998_IG26
+ cbnz x0, G_M52998_IG27
;; size=8 bbWeight=4 PerfScore 16.00
-G_M52998_IG25: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+G_M52998_IG26: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] add x0, x25, #0xD1FFAB1E bl CORINFO_HELP_NEWSFAST @@ -710,7 +712,7 @@ G_M52998_IG25: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byr mov x0, x27 ; gcrRegs +[x0] ;; size=72 bbWeight=2 PerfScore 27.00
-G_M52998_IG26: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG27: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27] mov w1, w20 movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this @@ -730,19 +732,22 @@ G_M52998_IG26: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, ; gcr arg pop 0 add w20, w20, #1 cmp w20, w22
- blt G_M52998_IG24
+ blt G_M52998_IG25
;; size=64 bbWeight=4 PerfScore 98.00
-G_M52998_IG27: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref - b G_M52998_IG30
+G_M52998_IG28: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref + b G_M52998_IG32
;; size=4 bbWeight=1 PerfScore 1.00
-G_M52998_IG28: ; bbWeight=0.50, gcrefRegs=4A80000 {x19 x21 x23 x26}, byrefRegs=0000 {}, byref - ; gcrRegs -[x24] - add w20, w20, #1 - mov x24, xzr - ; gcrRegs +[x24] - b G_M52998_IG18 - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M52998_IG29: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+G_M52998_IG29: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0] + add w1, w1, #1 + cmp w2, w1 + bgt G_M52998_IG17 + ;; size=12 bbWeight=4 PerfScore 8.00 +G_M52998_IG30: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + b G_M52998_IG19 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M52998_IG31: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
mov x0, x26 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this @@ -753,9 +758,9 @@ G_M52998_IG29: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, ; gcr arg pop 0 ldr x0, [x0, #0x08] ldr w22, [x0, #0x08]
- b G_M52998_IG23
+ b G_M52998_IG24
;; size=36 bbWeight=0.50 PerfScore 6.50
-G_M52998_IG30: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG32: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] add x0, x26, #16 ; byrRegs +[x0] @@ -765,9 +770,9 @@ G_M52998_IG30: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byr ldr x0, [x26, #0x20] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbz x0, G_M52998_IG32
+ cbz x0, G_M52998_IG34
;; size=24 bbWeight=1 PerfScore 7.50
-G_M52998_IG31: ; bbWeight=0.50, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+G_M52998_IG33: ; bbWeight=0.50, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
str xzr, [x26, #0x20] ...

+0 (0.00%) : 41209.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)

@@ -42,7 +42,7 @@ ;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp26 [V32,T36] ( 3, 6 ) int -> x26 "Inline return value spill temp" ; V33 tmp27 [V33,T37] ( 4, 8 ) int -> x0 "Inline stloc first use temp"
-; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
+; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x22 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp30 [V36,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -66,7 +66,7 @@ ; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> x28 class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount> ;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount> ;* V57 tmp51 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 "Inlining Arg"
+; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V60 tmp54 [V60,T60] ( 2, 2 ) int -> x21 "Single return block return value" ; V61 tmp55 [V61,T25] ( 6, 13 ) int -> x20 "V01.[000..004)" @@ -110,7 +110,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w20, [fp, #0x38] // [V01 arg1] ldrb w0, [x19, #0x4F]
- cbnz w0, G_M55237_IG91
+ cbnz w0, G_M55237_IG92
bl <unknown method> ; gcr arg pop 0 sxtw w21, w0 @@ -120,7 +120,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x44] cmp w21, w0
- beq G_M55237_IG92
+ beq G_M55237_IG93
add x22, x19, #80 ; byrRegs +[x22] mov x0, x22 @@ -150,10 +150,10 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 { ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w1, #4
- blt G_M55237_IG93
+ blt G_M55237_IG94
ldr x0, [x0, #0x18] ldr x0, [x0, #0x20]
- cbz x0, G_M55237_IG93
+ cbz x0, G_M55237_IG94
ldr x0, [x0] ; byrRegs +[x0] add x23, x0, #16 @@ -241,7 +241,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=2080000 {x19 x25}, byrefRegs=C0 ; gcrRegs +[x24] ldr w0, [x24, #0x18] cmp w0, #0
- bgt G_M55237_IG94
+ bgt G_M55237_IG95
ldr w1, [x19, #0x40] cmp w21, w1 bne G_M55237_IG35 @@ -303,10 +303,10 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 { ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w1, #4
- blt G_M55237_IG95
+ blt G_M55237_IG96
ldr x0, [x0, #0x18] ldr x0, [x0, #0x20]
- cbz x0, G_M55237_IG95
+ cbz x0, G_M55237_IG96
ldr x0, [x0] ; byrRegs +[x0] add x23, x0, #16 @@ -528,7 +528,7 @@ G_M55237_IG36: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 ldr w0, [x19, #0x48] mov w1, #0xD1FFAB1E cmp w0, w1
- blo G_M55237_IG88
+ blo G_M55237_IG84
cmn w20, #1 beq G_M55237_IG38 ;; size=24 bbWeight=4 PerfScore 26.00 @@ -546,11 +546,11 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 sub w0, w0, w1 cmp w0, w20 ccmp w0, #0, nc, lt
- blt G_M55237_IG84
+ blt G_M55237_IG85
sub w26, w20, w0 ;; size=28 bbWeight=2 PerfScore 12.00 G_M55237_IG40: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
- cbz w26, G_M55237_IG84
+ cbz w26, G_M55237_IG85
;; size=4 bbWeight=2 PerfScore 2.00 G_M55237_IG41: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz cmp w25, #20 @@ -899,7 +899,7 @@ G_M55237_IG74: ; bbWeight=4, gcrefRegs=1080002 {x1 x19 x24}, byrefRegs=C0 ; byrRegs -[x2] ; gcr arg pop 0 sxtw w21, w0
- cbz w21, G_M55237_IG86
+ cbz w21, G_M55237_IG87
ldr x0, [x24, #0x10] ldr x26, [x19, #0x28] cmp x0, x26 @@ -980,13 +980,55 @@ G_M55237_IG83: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 ; gcrRegs -[x28] b G_M55237_IG36 ;; size=4 bbWeight=4 PerfScore 4.00
-G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x19 x24]
+G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x23]
+ ldr w0, [x19, #0x48] + add w0, w0, #1 + str w0, [x19, #0x48] + ldr w0, [x24, #0x18] + add w0, w0, #1 + str w0, [x24, #0x18] + b G_M55237_IG89 + ;; size=28 bbWeight=0.50 PerfScore 5.00 +G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs -[x19 x24] + ldr w0, [x22] + cbnz w0, G_M55237_IG86 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcr arg pop 0 + ;; size=52 bbWeight=0.50 PerfScore 6.25 +G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref + stlr wzr, [x22] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M55237_IG87: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x22] + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M55237_IG88: ; bbWeight=0.50, epilog, nogc, extend + ldp x27, x28, [sp, #0x80] + ldp x25, x26, [sp, #0x70] + ldp x23, x24, [sp, #0x60] + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x90 + ret lr + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M55237_IG89: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; byrRegs +[x22]
mov x19, x22 ; byrRegs +[x19] ldr w0, [x19]
- cbnz w0, G_M55237_IG85
+ cbnz w0, G_M55237_IG90
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -1001,56 +1043,11 @@ G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22} ; byrRegs -[x22] ; gcr arg pop 0 ;; size=56 bbWeight=0.50 PerfScore 6.50
-G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - stlr wzr, [x19] - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19] - mov w0, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M55237_IG87: ; bbWeight=0.50, epilog, nogc, extend - ldp x27, x28, [sp, #0x80] - ldp x25, x26, [sp, #0x70] - ldp x23, x24, [sp, #0x60] - ldp x21, x22, [sp, #0x50] - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x90 - ret lr - ;; size=28 bbWeight=0.50 PerfScore 3.50 -G_M55237_IG88: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs +[x19 x24] - ; byrRegs +[x22] - ldr w0, [x19, #0x48] - add w0, w0, #1 - str w0, [x19, #0x48] - ldr w0, [x24, #0x18] - add w0, w0, #1 - str w0, [x24, #0x18] - mov x19, x22 - ; gcrRegs -[x19] - ; byrRegs +[x19] - ldr w0, [x19] - cbnz w0, G_M55237_IG89 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x24] - ; byrRegs -[x22] - ; gcr arg pop 0 - ;; size=80 bbWeight=0.50 PerfScore 11.00 -G_M55237_IG89: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stlr wzr, [x19] uxtb w0, w21 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG91: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x80] ldp x25, x26, [sp, #0x70] ldp x23, x24, [sp, #0x60] @@ -1059,7 +1056,7 @@ G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x90 ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] ; byrRegs -[x19] mov x0, x19 @@ -1073,7 +1070,7 @@ G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -1113,7 +1110,7 @@ G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] ; gcr arg pop 0 ;; size=88 bbWeight=0 PerfScore 0.00
-G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M55237_IG94: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x19] ; byrRegs +[x22] mov w0, #4 @@ -1124,7 +1121,7 @@ G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; byrRegs +[x23] ...

+0 (0.00%) : 10127.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)

@@ -79,12 +79,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbz w0, G_M44603_IG12
+ cbnz w0, G_M44603_IG10
;; size=24 bbWeight=2 PerfScore 13.00
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - b G_M44603_IG10 - ;; size=4 bbWeight=4 PerfScore 4.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21] + b G_M44603_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -110,7 +112,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-Total bytes of code 156, prolog size 16, PerfScore 67.25, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 156, prolog size 16, PerfScore 63.75, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 6780.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> x19 class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate> ; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [fp+0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V03 loc2 [V03,T21] ( 13, 43 ) ref -> [fp+0x38] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>> @@ -21,7 +21,7 @@ ; V10 loc9 [V10,T14] ( 9, 53 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain> ; V11 loc10 [V11,T11] ( 4, 72 ) ubyte -> x22 ; V12 loc11 [V12,T23] ( 3, 40 ) int -> x21
-; V13 loc12 [V13,T02] ( 5,132 ) int -> x23
+; V13 loc12 [V13,T03] ( 5,132 ) int -> x23
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V15 loc14 [V15,T54] ( 3, 10 ) int -> x19 ; V16 loc15 [V16,T25] ( 5, 33 ) int -> x20 @@ -33,7 +33,7 @@ ;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V23 tmp5 [V23,T44] ( 2, 16 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Net.NetEventSource> ; V24 tmp6 [V24,T12] ( 8, 64 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T37] ( 3, 24 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]> ; V27 tmp9 [V27,T38] ( 3, 24 ) ref -> x21 class-hnd exact "dup spill" <System.Object[]> ;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback> @@ -144,10 +144,10 @@ ;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement> ;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 5,288 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> -; V137 tmp119 [V137,T03] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String> -; V138 tmp120 [V138,T01] ( 6,132 ) ref -> x25 -; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 5,320 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> +; V137 tmp119 [V137,T04] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String> +; V138 tmp120 [V138,T02] ( 6,148 ) ref -> x25 +; V139 tmp121 [V139,T01] ( 3,192 ) ref -> x25 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String> ;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource> @@ -165,8 +165,8 @@ ;* V154 tmp136 [V154,T107] ( 0, 0 ) ref -> zero-ref ;* V155 tmp137 [V155 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V156 tmp138 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
-; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x25 class-hnd "Inlining Arg" <System.FormattableString> -; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x24
+; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x24 class-hnd "Inlining Arg" <System.FormattableString> +; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x25
; V159 tmp141 [V159,T31] ( 2, 32 ) ref -> x26 ;* V160 tmp142 [V160 ] ( 0, 0 ) ref -> zero-ref ;* V161 tmp143 [V161 ] ( 0, 0 ) ref -> zero-ref @@ -235,7 +235,7 @@ ; V224 tmp206 [V224,T76] ( 3, 6 ) ref -> x1 single-def "argument with side effect" ; V225 tmp207 [V225,T77] ( 3, 6 ) ref -> x1 single-def "argument with side effect" ; V226 tmp208 [V226,T13] ( 6, 54 ) ref -> x1 "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> x0 "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> x0 "argument with side effect"
; V228 tmp210 [V228,T34] ( 2, 32 ) ref -> x0 "argument with side effect" ; V229 tmp211 [V229,T19] ( 3, 48 ) ref -> x0 "argument with side effect" ; V230 tmp212 [V230,T104] ( 2, 4 ) long -> x2 "argument with side effect" @@ -247,13 +247,13 @@ ; V236 cse1 [V236,T115] ( 3, 3 ) ref -> x1 "CSE - conservative" ; V237 cse2 [V237,T116] ( 3, 3 ) ref -> x1 "CSE - conservative" ; V238 cse3 [V238,T117] ( 3, 3 ) ref -> x1 "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
; V240 cse5 [V240,T118] ( 3, 3 ) ref -> x0 "CSE - conservative" ; V241 cse6 [V241,T82] ( 4, 4 ) ref -> x19 "CSE - conservative" ; V242 cse7 [V242,T80] ( 5, 5 ) ref -> x19 "CSE - conservative" ; V243 cse8 [V243,T119] ( 3, 3 ) int -> x21 "CSE - conservative" ; V244 cse9 [V244,T22] ( 6, 43 ) int -> x19 multi-def "CSE - moderate"
-; V245 cse10 [V245,T10] ( 3, 80 ) byref -> x24 "CSE - aggressive"
+; V245 cse10 [V245,T10] ( 3, 96 ) byref -> x24 "CSE - aggressive"
; V246 rat0 [V246,T79] ( 3, 6 ) ref -> x6 "delegate invoke call" ; ; Lcl frame size = 80 @@ -272,7 +272,7 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x48] // [V00 this] ; GC ptr vars +{V00} ;; size=44 bbWeight=1 PerfScore 10.00
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] stp xzr, xzr, [fp, #0x38] // [V03 loc2], [V02 loc1] ; GC ptr vars +{V02 V03} @@ -418,7 +418,7 @@ G_M34773_IG07: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0xA0 ret lr ;; size=24 bbWeight=1 PerfScore 6.00
-G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200020 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200040 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] ; GC ptr vars +{V02 V03 V21 V41} ldr x1, [x19, #0x30] @@ -475,7 +475,7 @@ G_M34773_IG09: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {} str xzr, [fp, #0x28] // [V05 loc4] ; GC ptr vars +{V05} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200020 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200040 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V21 V41} movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this movk x1, #0xD1FFAB1E LSL #16 @@ -494,7 +494,7 @@ G_M34773_IG10: ; bbWeight=1, gcVars=0000000000000000000000000000001000000 ldr w2, [x2] tbnz w2, #0, G_M34773_IG12 ;; size=52 bbWeight=1 PerfScore 17.00
-G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208020 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208040 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -686,7 +686,7 @@ G_M34773_IG16: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000 ;; size=24 bbWeight=1 PerfScore 6.00 G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -706,7 +706,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20] @@ -729,7 +729,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=44 bbWeight=1 PerfScore 23.50 G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -749,12 +749,12 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20] ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -774,7 +774,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0 x19] @@ -815,7 +815,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ; gcrRegs +[x19] cbz x19, G_M34773_IG26 ;; size=104 bbWeight=1 PerfScore 42.50
-G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000020 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000040 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ; GC ptr vars -{V03} ldr x0, [x19] @@ -910,7 +910,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x20, [x0] ; gcrRegs +[x20] ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -924,7 +924,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x3 ; gcrRegs -[x0-x2 x19-x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=60 bbWeight=1 PerfScore 18.00 G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x48] // [V00 this] @@ -932,7 +932,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x1, [x0, #0x38] ; gcrRegs +[x1] ldr x1, [x1, #0x10]
- cbz x1, G_M34773_IG57
+ cbz x1, G_M34773_IG58
ldr x1, [x1, #0x08] mov x0, x1 ldr x1, [x1] @@ -943,7 +943,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] ; gcr arg pop 0 cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this @@ -969,7 +969,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [x0, #0x08] cbnz w19, G_M34773_IG29 ;; size=120 bbWeight=1 PerfScore 50.00
-G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208020 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208040 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x19, x20 ; gcrRegs +[x19] @@ -1034,23 +1034,23 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] ; gcr arg pop 0 cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
;; size=48 bbWeight=1 PerfScore 24.00 G_M34773_IG31: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x30] // [V04 loc3] ; gcrRegs +[x0]
- cbz x0, G_M34773_IG50
+ cbz x0, G_M34773_IG51
;; size=8 bbWeight=8 PerfScore 24.00 G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr x0, [fp, #0x30] // [V04 loc3] ; gcrRegs +[x0] ldr w19, [x0, #0x08]
- cbz w19, G_M34773_IG50
+ cbz w19, G_M34773_IG51
stp xzr, xzr, [fp, #0x18] // [V10 loc9], [V09 loc8] ; GC ptr vars +{V09 V10} ;; size=16 bbWeight=4 PerfScore 28.00
-G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] @@ -1074,7 +1074,7 @@ G_M34773_IG33: ; bbWeight=4, gcVars=0000000000000000000000000000000000000 ; gcr arg pop 0 str x0, [fp, #0x20] // [V09 loc8] ...

+4 (+0.24%) : 4719.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan1[ushort],System.ReadOnlyMemory1[ubyte]):this (Tier0-FullOpts)

@@ -583,12 +583,12 @@ G_M6729_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M6729_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x28] // [V06 loc3] ; gcrRegs +[x0]
- cbz x0, G_M6729_IG37
+ cbz x0, G_M6729_IG39
mov w19, wzr ldr w0, [fp, #0x40] // [V10 loc7] ; gcrRegs -[x0] cmp w0, #0
- ble G_M6729_IG34
+ ble G_M6729_IG37
ldr x0, [fp, #0x28] // [V06 loc3] ; gcrRegs +[x0] ldr w20, [x0, #0x08] @@ -596,7 +596,7 @@ G_M6729_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M6729_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] cmp w19, w20
- bhs G_M6729_IG35
+ bhs G_M6729_IG33
ldr x0, [fp, #0x28] // [V06 loc3] ; gcrRegs +[x0] ubfiz x1, x19, #6, #32 @@ -608,17 +608,30 @@ G_M6729_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x1, xzr swpal x1, x21, [x0] ; gcrRegs +[x21]
- cbz x21, G_M6729_IG33
+ cbz x21, G_M6729_IG36
;; size=40 bbWeight=8 PerfScore 104.00 G_M6729_IG31: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0001 {x0}, byref, isz ldr w1, [x0, #0x08] lsr w22, w1, #31
- cbnz w22, G_M6729_IG32 - cbz w1, G_M6729_IG32
+ cbnz w22, G_M6729_IG35 + cbz w1, G_M6729_IG35
ldr w0, [x21, #0x08] ; byrRegs -[x0] cmp w0, w1
- blo G_M6729_IG36
+ bhs G_M6729_IG34 + ;; size=28 bbWeight=4 PerfScore 42.00 +G_M6729_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x21] + ; GC ptr vars -{V06} + b G_M6729_IG38 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M6729_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M6729_IG34: ; bbWeight=4, gcVars=0000000000000080 {V06}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21] + ; GC ptr vars +{V06 V07}
add x0, x21, #16 ; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -628,8 +641,8 @@ G_M6729_IG31: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0001 {x0}, blr x2 ; byrRegs -[x0] ; gcr arg pop 0
- ;; size=52 bbWeight=4 PerfScore 66.00 -G_M6729_IG32: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=4 PerfScore 24.00 +G_M6729_IG35: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
movz x23, #0xD1FFAB1E movk x23, #0xD1FFAB1E LSL #16 movk x23, #1 LSL #32 @@ -646,13 +659,13 @@ G_M6729_IG32: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, by ; gcrRegs -[x0-x1 x21] ; gcr arg pop 0 ;; size=44 bbWeight=4 PerfScore 44.00
-G_M6729_IG33: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6729_IG36: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w19, w19, #1 ldr w0, [fp, #0x40] // [V10 loc7] cmp w19, w0 blt G_M6729_IG30 ;; size=16 bbWeight=8 PerfScore 32.00
-G_M6729_IG34: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #1 LSL #32 @@ -673,17 +686,13 @@ G_M6729_IG34: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x3, #1 LSL #32 ldr x3, [x3] ldr wzr, [x0]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V06 V07}
blr x3 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- b G_M6729_IG37
+ b G_M6729_IG39
;; size=76 bbWeight=1 PerfScore 20.00
-G_M6729_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M6729_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -692,7 +701,7 @@ G_M6729_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #1 LSL #32 @@ -751,7 +760,7 @@ G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=168 bbWeight=1 PerfScore 51.00
-G_M6729_IG38: ; bbWeight=1, funclet epilog, nogc, extend
+G_M6729_IG40: ; bbWeight=1, funclet epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] @@ -760,7 +769,7 @@ G_M6729_IG38: ; bbWeight=1, funclet epilog, nogc, extend ret lr ;; size=24 bbWeight=1 PerfScore 12.50
-Total bytes of code 1700, prolog size 68, PerfScore 734.50, instruction count 425, allocated bytes for code 1700 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
+Total bytes of code 1704, prolog size 68, PerfScore 734.50, instruction count 426, allocated bytes for code 1704 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -815,7 +824,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
+ Function Length : 167 (0x000a7) Actual length = 668 (0x00029c)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+20 (+3.94%) : 43524.dasm - System.String:Concat(System.String[]):System.String (Tier1)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -33,10 +33,10 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value" ; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG23 - cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25 + cbz w21, G_M46295_IG19
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG17 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG14 - cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16 + cbnz x23, G_M46295_IG12
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08] sub w0, w0, w24 cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12 ; byrRegs +[x2] sbfiz x0, x24, #1, #32 @@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -244,7 +255,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -254,7 +265,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 508, prolog size 32, PerfScore 659.00, instruction count 127, allocated bytes for code 508 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 528, prolog size 32, PerfScore 671.00, instruction count 132, allocated bytes for code 528 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================ Unwind Info: @@ -265,7 +276,7 @@ Unwind Info: E bit : 0 ...

coreclr_tests.run.osx.arm64.checked.mch

-28 (-2.82%) : 239946.dasm - Test_arrayDim:TestEntryPoint() (FullOpts)

@@ -16,7 +16,7 @@ ; V05 tmp2 [V05,T01] ( 11, 94.65) ref -> x25 class-hnd exact "Inlining Arg" <System.String> ; V06 tmp3 [V06,T06] ( 8, 30.35) int -> x27 "Inline stloc first use temp" ; V07 tmp4 [V07,T14] ( 6, 22.76) int -> x0 "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 12, 38.08) ref -> [fp+0x18] class-hnd exact "Inline stloc first use temp" <System.String>
+; V08 tmp5 [V08,T04] ( 12, 38.08) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.String>
;* V09 tmp6 [V09,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -25,20 +25,20 @@ ;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp14 [V17,T07] ( 4, 30.35) byref -> registers "Inlining Arg" -; V18 tmp15 [V18,T08] ( 4, 30.35) byref -> registers "Inlining Arg"
+; V17 tmp14 [V17,T07] ( 4, 30.35) byref -> x0 "Inlining Arg" +; V18 tmp15 [V18,T08] ( 4, 30.35) byref -> x1 "Inlining Arg"
; V19 tmp16 [V19,T11] ( 4, 30.35) long -> x26 "Inlining Arg" ;* V20 tmp17 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V24 tmp21 [V24,T09] ( 4, 30.35) byref -> x25 "Inlining Arg" -; V25 tmp22 [V25,T10] ( 4, 30.35) byref -> x28 "Inlining Arg"
+; V24 tmp21 [V24,T09] ( 4, 30.35) byref -> registers "Inlining Arg" +; V25 tmp22 [V25,T10] ( 4, 30.35) byref -> x25 "Inlining Arg"
; V26 tmp23 [V26,T17] ( 2, 16 ) ref -> x1 "argument with side effect" ; V27 cse0 [V27,T02] ( 18, 68.28) ref -> x1 multi-def "CSE - aggressive" ; V28 cse1 [V28,T05] ( 5, 37.40) int -> x26 "CSE - aggressive"
-; V29 cse2 [V29,T16] ( 3, 22.53) int -> x28 "CSE - aggressive" -; V30 cse3 [V30,T15] ( 3, 22.53) byref -> [fp+0x10] spill-single-def "CSE - aggressive"
+; V29 cse2 [V29,T16] ( 3, 22.53) int -> x23 "CSE - aggressive" +; V30 cse3 [V30,T15] ( 3, 22.53) byref -> [fp+0x18] spill-single-def "CSE - aggressive"
; V31 cse4 [V31,T20] ( 2, 5 ) ref -> x20 hoist "CSE - aggressive" ; V32 cse5 [V32,T21] ( 2, 5 ) long -> x21 hoist "CSE - aggressive" ; V33 cse6 [V33,T18] ( 4, 10.16) int -> x23 "CSE - aggressive" @@ -130,36 +130,37 @@ G_M49663_IG07: ; bbWeight=7.51, gcrefRegs=2500000 {x20 x22 x25}, byrefReg sxtw w27, w26 add w0, w27, #1 tbnz w0, #31, G_M49663_IG27
+ bl <unknown method> + ; gcrRegs +[x0] + mov x28, x0 + ; gcrRegs +[x28] + cbnz x28, G_M49663_IG10
b G_M49663_IG09
- ;; size=16 bbWeight=7.51 PerfScore 22.53
+ ;; size=28 bbWeight=7.51 PerfScore 41.31
G_M49663_IG08: ; bbWeight=7.92, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x0 x25 x28]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 b G_M49663_IG13 ;; size=16 bbWeight=7.92 PerfScore 19.80
-G_M49663_IG09: ; bbWeight=7.51, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x25] - bl <unknown method> - ; gcrRegs +[x0] - mov x23, x0 - ; gcrRegs +[x23] - cbnz x23, G_M49663_IG10
+G_M49663_IG09: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref + ; gcrRegs +[x25 x28]
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2 ; gcrRegs -[x0]
- ;; size=48 bbWeight=7.51 PerfScore 75.10 -G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byrefRegs=0000 {}, byref, isz - ldr w28, [x23, #0x08] - cmp w28, w26
+ ;; size=36 bbWeight=7.51 PerfScore 56.33 +G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz + ldr w23, [x28, #0x08] + cmp w23, w26
bge G_M49663_IG11 movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 @@ -173,10 +174,10 @@ G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre blr x2 ; gcrRegs -[x0] ;; size=48 bbWeight=7.51 PerfScore 90.13
-G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byrefRegs=0000 {}, byref, isz - add x3, x23, #12
+G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz + add x3, x28, #12
; byrRegs +[x3]
- str x3, [fp, #0x10] // [V30 cse3]
+ str x3, [fp, #0x18] // [V30 cse3]
; GC ptr vars +{V30} mov x0, x3 ; byrRegs +[x0] @@ -191,7 +192,7 @@ G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre blr x4 ; gcrRegs -[x25] ; byrRegs -[x0-x1 x3]
- sub w0, w28, w27
+ sub w0, w23, w27
cmp w0, #0 bgt G_M49663_IG12 movz x1, #8 @@ -206,22 +207,24 @@ G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre blr x2 ; gcrRegs -[x0] ;; size=92 bbWeight=7.51 PerfScore 142.70
-G_M49663_IG12: ; bbWeight=7.51, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
+G_M49663_IG12: ; bbWeight=7.51, gcrefRegs=10500000 {x20 x22 x28}, byrefRegs=0000 {}, byref
sbfiz x0, x27, #1, #32
- ldr x25, [fp, #0x10] // [V30 cse3]
+ ldr x25, [fp, #0x18] // [V30 cse3]
; byrRegs +[x25]
- add x25, x25, x0 - movz x28, #0xD1FFAB1E - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #1 LSL #32 - ldrh w0, [x28] - strh w0, [x25] - mov x0, x23
+ add x23, x25, x0 + ; byrRegs +[x23] + movz x25, #0xD1FFAB1E + ; byrRegs -[x25] + movk x25, #0xD1FFAB1E LSL #16 + movk x25, #1 LSL #32 + ldrh w0, [x25] + strh w0, [x23] + mov x0, x28
; gcrRegs +[x0] ;; size=36 bbWeight=7.51 PerfScore 71.35 G_M49663_IG13: ; bbWeight=15.84, gcVars=0000000000000000 {}, gcrefRegs=500001 {x0 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x23] - ; byrRegs -[x25]
+ ; gcrRegs -[x28] + ; byrRegs -[x23]
; GC ptr vars -{V30} movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -263,111 +266,97 @@ G_M49663_IG17: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefReg ldr w27, [x25, #0x08] add w0, w27, #1 tbnz w0, #31, G_M49663_IG27
+ bl <unknown method> + ; gcrRegs +[x0] + mov x28, x0 + ; gcrRegs +[x28] + cbnz x28, G_M49663_IG20
b G_M49663_IG19
- ;; size=16 bbWeight=0.08 PerfScore 0.42
+ ;; size=28 bbWeight=0.08 PerfScore 0.61
G_M49663_IG18: ; bbWeight=0.08, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x0 x25 x28]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 b G_M49663_IG23 ;; size=16 bbWeight=0.08 PerfScore 0.20
-G_M49663_IG19: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x25] - bl <unknown method> - ; gcrRegs +[x0] - str x0, [fp, #0x18] // [V08 tmp5] - ; GC ptr vars +{V08} - cbnz x0, G_M49663_IG20
+G_M49663_IG19: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref + ; gcrRegs +[x25 x28]
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2 ; gcrRegs -[x0]
- ;; size=48 bbWeight=0.08 PerfScore 0.80 -G_M49663_IG20: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz - ldr w1, [x25, #0x08] - ldr x0, [fp, #0x18] // [V08 tmp5] - ; gcrRegs +[x0] - ldr w2, [x0, #0x08] - cmp w1, w2
+ ;; size=36 bbWeight=0.08 PerfScore 0.57 +G_M49663_IG20: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz + ldr w0, [x25, #0x08] + ldr w1, [x28, #0x08] + cmp w0, w1
ble G_M49663_IG21 movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2 ; gcrRegs -[x0]
- ;; size=56 bbWeight=0.08 PerfScore 1.29 -G_M49663_IG21: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x18] // [V08 tmp5] - ; gcrRegs +[x0] - add x2, x0, #12 - ; byrRegs +[x2] - mov x1, x2
+ ;; size=52 bbWeight=0.08 PerfScore 1.14 +G_M49663_IG21: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz + add x0, x28, #12 + ; byrRegs +[x0] + add x1, x25, #12
; byrRegs +[x1]
- add x2, x25, #12 - mov x3, x2 - ; byrRegs +[x3]
ldr w26, [x25, #0x08] lsl x2, x26, #1
- ; byrRegs -[x2] - mov x0, x1 - ; gcrRegs -[x0] - ; byrRegs +[x0] - mov x1, x3
movz x3, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x3]
movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3 ; gcrRegs -[x25] ; byrRegs -[x0-x1]
- ldr x0, [fp, #0x18] // [V08 tmp5] - ; gcrRegs +[x0] - ldr w1, [x0, #0x08] - sub w1, w1, w27 - cmp w1, #0
+ ldr w0, [x28, #0x08] + sub w0, w0, w27 + cmp w0, #0
bgt G_M49663_IG22 ...

-8 (-2.22%) : 504858.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)

@@ -38,12 +38,12 @@ G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp w20, w21, [fp, #0x58] ;; size=36 bbWeight=1 PerfScore 12.50 G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG11
+ b G_M3612_IG09
;; size=4 bbWeight=1 PerfScore 1.00 G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] cmp w23, w0
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x19, #16 ; byrRegs +[x0] ldr x22, [x0, w23, UXTW #3] @@ -59,12 +59,12 @@ G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 G_M3612_IG05: ; bbWeight=10.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x10] cmp w20, w0
- bhs G_M3612_IG18
+ bhs G_M3612_IG17
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w20, w1
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -96,28 +96,15 @@ G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x10] sub w21, w0, #2
- tbz w21, #31, G_M3612_IG10
+ tbnz w21, #31, G_M3612_IG13
;; size=12 bbWeight=0.52 PerfScore 2.33
-G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] - add w23, w23, #1 - ldr w0, [x19, #0x08] - cmp w0, w23 - ble G_M3612_IG16 - b G_M3612_IG03 - ;; size=20 bbWeight=0.52 PerfScore 3.11 -G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr wzr, [x19, #0x08] - b G_M3612_IG08 - ;; size=8 bbWeight=0.49 PerfScore 1.97 -G_M3612_IG10: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x22]
+G_M3612_IG08: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
sub w20, w21, #1 ;; size=4 bbWeight=9.68 PerfScore 4.84
-G_M3612_IG11: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - tbnz w20, #31, G_M3612_IG13
+G_M3612_IG09: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + tbnz w20, #31, G_M3612_IG11
;; size=4 bbWeight=9.68 PerfScore 9.68
-G_M3612_IG12: ; bbWeight=90.32, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG10: ; bbWeight=90.32, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22 ; gcrRegs +[x0] mov w1, w20 @@ -129,24 +116,31 @@ G_M3612_IG12: ; bbWeight=90.32, gcrefRegs=480000 {x19 x22}, byrefRegs=000 blr x3 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M3612_IG17
+ cbnz w0, G_M3612_IG16
sub w20, w20, #1
- tbz w20, #31, G_M3612_IG12
+ tbz w20, #31, G_M3612_IG10
;; size=44 bbWeight=90.32 PerfScore 858.01
-G_M3612_IG13: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG11: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1
- tbz w21, #31, G_M3612_IG10
+ tbz w21, #31, G_M3612_IG08
;; size=8 bbWeight=9.68 PerfScore 14.53
-G_M3612_IG14: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3612_IG12: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M3612_IG09 - ;; size=4 bbWeight=0.49 PerfScore 0.49 -G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr wzr, [x19, #0x08] + ;; size=4 bbWeight=0.49 PerfScore 1.48 +G_M3612_IG13: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + add w23, w23, #1 + ldr w0, [x19, #0x08] + cmp w0, w23 + ble G_M3612_IG15 + b G_M3612_IG03 + ;; size=20 bbWeight=0.52 PerfScore 3.11 +G_M3612_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -154,7 +148,7 @@ G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add sp, sp, #64 ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M3612_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x22] mov x0, x22 ; gcrRegs +[x0] @@ -167,9 +161,9 @@ G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M3612_IG13
+ b G_M3612_IG11
;; size=36 bbWeight=0 PerfScore 0.00
-G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3612_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x22] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -180,7 +174,7 @@ G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 360, prolog size 36, PerfScore 1272.10, instruction count 90, allocated bytes for code 360 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
+Total bytes of code 352, prolog size 36, PerfScore 1271.11, instruction count 88, allocated bytes for code 352 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -191,7 +185,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-1.43%) : 473217.dasm - System.Diagnostics.Process:CreateEnvp(System.Diagnostics.ProcessStartInfo):System.String

@@ -12,7 +12,7 @@ ; V00 arg0 [V00,T19] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Diagnostics.ProcessStartInfo> ; V01 loc0 [V01,T11] ( 6, 138.00) ref -> x21 class-hnd exact single-def <System.String[]> ; V02 loc1 [V02,T12] ( 5, 137.00) int -> registers
-; V03 loc2 [V03,T08] ( 18, 209.39) ref -> [fp+0x10] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]>
+; V03 loc2 [V03,T08] ( 18, 209.39) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]>
;* V04 loc3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.String]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T20] ( 4, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Collections.Generic.IDictionary`2[System.String,System.String]> @@ -32,51 +32,50 @@ ; V20 tmp15 [V20,T22] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <<unknown class>> ; V21 tmp16 [V21,T18] ( 6, 12 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> ; V22 tmp17 [V22,T23] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V23 tmp18 [V23,T24] ( 3, 6 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V23 tmp18 [V23,T24] ( 3, 6 ) struct (40) [fp+0x20] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V25 tmp20 [V25,T00] ( 20,1102 ) byref -> x19 "Inlining Arg"
-; V26 tmp21 [V26,T04] ( 8, 272.00) int -> x3 "Inline stloc first use temp" -; V27 tmp22 [V27,T02] ( 6, 408.00) ref -> x22 class-hnd exact "impAppendStmt" <<unknown class>> -; V28 tmp23 [V28,T03] ( 8, 272.00) byref -> x24 "Inline stloc first use temp"
+; V26 tmp21 [V26,T04] ( 8, 272.00) int -> x14 "Inline stloc first use temp" +; V27 tmp22 [V27,T02] ( 6, 408.00) ref -> x12 class-hnd exact "impAppendStmt" <<unknown class>> +; V28 tmp23 [V28,T03] ( 8, 272.00) byref -> x22 "Inline stloc first use temp"
;* V29 tmp24 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]> ; V30 tmp25 [V30,T06] ( 4, 272.00) ref -> x15 class-hnd "Inlining Arg" <System.__Canon>
-; V31 tmp26 [V31,T07] ( 4, 272.00) ref -> x25 class-hnd "Inlining Arg" <System.__Canon>
+; V31 tmp26 [V31,T07] ( 4, 272.00) ref -> x24 class-hnd "Inlining Arg" <System.__Canon>
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp28 [V33 ] ( 0, 0 ) ref -> zero-ref "field V04.key (fldOffset=0x0)" P-INDEP ;* V34 tmp29 [V34 ] ( 0, 0 ) ref -> zero-ref "field V04.value (fldOffset=0x8)" P-INDEP ; V35 tmp30 [V35,T13] ( 5, 136.00) ref -> registers "field V15.key (fldOffset=0x0)" P-INDEP ; V36 tmp31 [V36,T14] ( 5, 136.00) ref -> x2 "field V15.value (fldOffset=0x8)" P-INDEP ; V37 tmp32 [V37,T15] ( 4, 136.00) ref -> x15 "field V29.key (fldOffset=0x0)" P-INDEP
-; V38 tmp33 [V38,T16] ( 4, 136.00) ref -> x25 "field V29.value (fldOffset=0x8)" P-INDEP
+; V38 tmp33 [V38,T16] ( 4, 136.00) ref -> x24 "field V29.value (fldOffset=0x8)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) ref -> zero-ref single-def "V23.[000..008)" ; V40 tmp35 [V40,T30] ( 2, 2 ) int -> x2 "V23.[008..012)" ;* V41 tmp36 [V41 ] ( 0, 0 ) int -> zero-ref "V23.[012..016)" ;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref "V23.[016..020)"
-; V43 PSPSym [V43,T31] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" -; V44 cse0 [V44,T10] ( 3, 203.94) int -> x3 "CSE - aggressive" -; V45 cse1 [V45,T27] ( 3, 2.06) int -> x3 "CSE - moderate"
+; V43 PSPSym [V43,T31] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" +; V44 cse0 [V44,T10] ( 3, 203.94) int -> x14 "CSE - aggressive" +; V45 cse1 [V45,T27] ( 3, 2.06) int -> x14 "CSE - moderate"
; V46 cse2 [V46,T25] ( 9, 5.70) long -> x23 hoist multi-def "CSE - moderate"
-; V47 cse3 [V47,T09] ( 4, 204.93) ref -> x14 "CSE - aggressive" -; V48 cse4 [V48,T26] ( 4, 2.07) ref -> x14 "CSE - moderate"
+; V47 cse3 [V47,T09] ( 4, 204.93) ref -> x15 "CSE - aggressive" +; V48 cse4 [V48,T26] ( 4, 2.07) ref -> x15 "CSE - moderate"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M28356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48] - stp x21, x22, [sp, #0x58] - stp x23, x24, [sp, #0x68] - str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50] + stp x21, x22, [sp, #0x60] + stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #32
movi v16.16b, #0 stp q16, q16, [x9] str xzr, [x9, #0x20] add x1, sp, #128
- str x1, [fp, #0x40] // [V43 PSPSym]
+ str x1, [fp, #0x48] // [V43 PSPSym]
mov x19, x0 ; gcrRegs +[x19]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=48 bbWeight=1 PerfScore 9.50
G_M28356_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz mov x0, x19 ; gcrRegs +[x0] @@ -139,12 +138,12 @@ G_M28356_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x14, [x22, #0x08] ; gcrRegs +[x14] ldr w2, [x14, #0x44]
- stp xzr, xzr, [fp, #0x30] - str x14, [fp, #0x18] // [V23 tmp18]
+ stp xzr, xzr, [fp, #0x38] + str x14, [fp, #0x20] // [V23 tmp18]
add x14, x0, #8 ; gcrRegs -[x14] ; byrRegs +[x14]
- add x13, fp, #24 // [V23 tmp18]
+ add x13, fp, #32 // [V23 tmp18]
; byrRegs +[x13] bl CORINFO_HELP_ASSIGN_BYREF ; gcrRegs -[x22] @@ -159,7 +158,7 @@ G_M28356_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ;; size=156 bbWeight=1 PerfScore 39.00 G_M28356_IG04: ; bbWeight=1, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref ; byrRegs -[x13]
- str x0, [fp, #0x10] // [V03 loc2]
+ str x0, [fp, #0x18] // [V03 loc2]
; GC ptr vars +{V03} ;; size=4 bbWeight=1 PerfScore 1.00 G_M28356_IG05: ; bbWeight=1, gcVars=0000000000000100 {V03}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz @@ -173,20 +172,21 @@ G_M28356_IG05: ; bbWeight=1, gcVars=0000000000000100 {V03}, gcrefRegs=200 b G_M28356_IG07 ;; size=32 bbWeight=1 PerfScore 8.00 G_M28356_IG06: ; bbWeight=67.32, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz
- ldp x4, x2, [x0, #0x20] - ; gcrRegs +[x2 x4]
+ ldp x3, x2, [x0, #0x20] + ; gcrRegs +[x2-x3]
add w1, w20, #1
- sxtw w25, w1 - mov x0, x4
+ sxtw w19, w1 + mov x0, x3
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 movz x3, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x3]
movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x2 x4]
+ ; gcrRegs -[x2]
; gcr arg pop 0 ldr w14, [x21, #0x08] cmp w20, w14 @@ -199,8 +199,8 @@ G_M28356_IG06: ; bbWeight=67.32, gcrefRegs=200001 {x0 x21}, byrefRegs=000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- mov w20, w25 - ldr x0, [fp, #0x10] // [V03 loc2]
+ mov w20, w19 + ldr x0, [fp, #0x18] // [V03 loc2]
; gcrRegs +[x0] ;; size=84 bbWeight=67.32 PerfScore 1514.70 G_M28356_IG07: ; bbWeight=68.31, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz @@ -215,43 +215,44 @@ G_M28356_IG07: ; bbWeight=68.31, gcrefRegs=200001 {x0 x21}, byrefRegs=000 bne G_M28356_IG11 ;; size=24 bbWeight=68.31 PerfScore 751.41 G_M28356_IG08: ; bbWeight=68.31, gcrefRegs=200001 {x0 x21}, byrefRegs=80000 {x19}, byref, isz
- ldr w3, [x19, #0x0C] - ldr x14, [x19] - ; gcrRegs +[x14] - ldr w15, [x14, #0x38] - cmp w3, w15
+ ldr w14, [x19, #0x0C] + ldr x15, [x19] + ; gcrRegs +[x15] + ldr w12, [x15, #0x38] + cmp w14, w12
bhs G_M28356_IG20 ;; size=20 bbWeight=68.31 PerfScore 717.25
-G_M28356_IG09: ; bbWeight=67.32, gcrefRegs=204001 {x0 x14 x21}, byrefRegs=80000 {x19}, byref, isz - ldr x22, [x14, #0x10] - ; gcrRegs +[x22] - add w14, w3, #1 - ; gcrRegs -[x14] - str w14, [x19, #0x0C] - ldr w14, [x22, #0x08] - cmp w3, w14
+G_M28356_IG09: ; bbWeight=67.32, gcrefRegs=208001 {x0 x15 x21}, byrefRegs=80000 {x19}, byref, isz + ldr x12, [x15, #0x10] + ; gcrRegs +[x12] + add w15, w14, #1 + ; gcrRegs -[x15] + str w15, [x19, #0x0C] + ldr w15, [x12, #0x08] + cmp w14, w15
bhs G_M28356_IG10
- mov w14, #24 - mov x15, #16 - umaddl x14, w3, w14, x15 - add x24, x22, x14 - ; byrRegs +[x24] - ldr w14, [x24, #0x14] - cmn w14, #1
+ mov w15, #24 + mov xip0, #16 + umaddl x14, w14, w15, xip0 + add x22, x12, x14 + ; byrRegs +[x22] + ldr w12, [x22, #0x14] + ; gcrRegs -[x12] + cmn w12, #1
blt G_M28356_IG08
- ldp x15, x25, [x24] - ; gcrRegs +[x15 x25]
+ ldp x15, x24, [x22] + ; gcrRegs +[x15 x24]
add x14, x19, #24 ; byrRegs +[x14] bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x15 x22] - ; byrRegs -[x14 x24]
+ ; gcrRegs -[x15] + ; byrRegs -[x14 x22]
add x14, x19, #32 ; byrRegs +[x14]
- mov x15, x25
+ mov x15, x24
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x15 x25]
+ ; gcrRegs -[x15 x24]
; byrRegs -[x14 x19] b G_M28356_IG06 ;; size=80 bbWeight=67.32 PerfScore 1918.62 @@ -271,7 +272,7 @@ G_M28356_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=24 bbWeight=0 PerfScore 0.00 G_M28356_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x21]
- ldr x0, [fp, #0x10] // [V03 loc2]
+ ldr x0, [fp, #0x18] // [V03 loc2]
; gcrRegs +[x0] movz x11, #0xD1FFAB1E movk x11, #0xD1FFAB1E LSL #16 @@ -282,12 +283,12 @@ G_M28356_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov x2, x1 ; gcrRegs +[x2]
- mov x4, x0 - ; gcrRegs +[x4]
+ mov x3, x0 + ; gcrRegs +[x3]
b G_M28356_IG15 ;; size=36 bbWeight=0 PerfScore 0.00 G_M28356_IG13: ; bbWeight=0.01, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1-x2 x4]
+ ; gcrRegs -[x1-x3]
ldr xzr, [x0] movz x23, #0xD1FFAB1E movk x23, #0xD1FFAB1E LSL #16 @@ -295,24 +296,25 @@ G_M28356_IG13: ; bbWeight=0.01, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 b G_M28356_IG16 ;; size=20 bbWeight=0.01 PerfScore 0.06 G_M28356_IG14: ; bbWeight=0.68, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
- ldp x4, x2, [x0, #0x20] - ; gcrRegs +[x2 x4]
+ ldp x3, x2, [x0, #0x20] + ; gcrRegs +[x2-x3]
;; size=4 bbWeight=0.68 PerfScore 2.72
-G_M28356_IG15: ; bbWeight=0.68, gcrefRegs=200014 {x2 x4 x21}, byrefRegs=0000 {}, byref, isz
+G_M28356_IG15: ; bbWeight=0.68, gcrefRegs=20000C {x2 x3 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ...

+8 (+5.26%) : 565812.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)

@@ -46,13 +46,13 @@ G_M44603_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00 G_M44603_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M44603_IG07
+ cbz x19, G_M44603_IG06
;; size=4 bbWeight=1 PerfScore 1.00 G_M44603_IG03: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz mov w20, wzr ldr w21, [x19, #0x08] cmp w21, #0
- ble G_M44603_IG07
+ ble G_M44603_IG06
;; size=16 bbWeight=0.98 PerfScore 4.91 G_M44603_IG04: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x0, x19, #12 @@ -60,7 +60,7 @@ G_M44603_IG04: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldrh w0, [x0, w20, UXTW #2] ; byrRegs -[x0] cmp w0, #0xD1FFAB1E
- blo G_M44603_IG09
+ blo G_M44603_IG08
;; size=16 bbWeight=0.96 PerfScore 4.81 G_M44603_IG05: ; bbWeight=0.92, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte @@ -69,43 +69,47 @@ G_M44603_IG05: ; bbWeight=0.92, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbz w0, G_M44603_IG10 - ;; size=24 bbWeight=0.92 PerfScore 6.01 -G_M44603_IG06: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - add w20, w20, #1 - cmp w21, w20 - bgt G_M44603_IG04 - ;; size=12 bbWeight=0.98 PerfScore 1.96 -G_M44603_IG07: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M44603_IG09 + b G_M44603_IG11 + ;; size=28 bbWeight=0.92 PerfScore 6.93 +G_M44603_IG06: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov w0, #1
- ;; size=4 bbWeight=0.06 PerfScore 0.03 -G_M44603_IG08: ; bbWeight=0.06, epilog, nogc, extend
+ ;; size=4 bbWeight=0.02 PerfScore 0.01 +G_M44603_IG07: ; bbWeight=0.02, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.06 PerfScore 0.28 -G_M44603_IG09: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.02 PerfScore 0.09 +G_M44603_IG08: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M44603_IG06
+ tbz w0, #7, G_M44603_IG11
;; size=20 bbWeight=0.92 PerfScore 5.08
-G_M44603_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44603_IG09: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + add w20, w20, #1 + cmp w21, w20 + bgt G_M44603_IG04 + ;; size=12 bbWeight=0.98 PerfScore 1.96 +G_M44603_IG10: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ b G_M44603_IG06 + ;; size=4 bbWeight=0.06 PerfScore 0.06 +G_M44603_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr ;; size=4 bbWeight=0.92 PerfScore 0.46
-G_M44603_IG11: ; bbWeight=0.92, epilog, nogc, extend
+G_M44603_IG12: ; bbWeight=0.92, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.92 PerfScore 4.62
-Total bytes of code 152, prolog size 20, PerfScore 33.17, instruction count 38, allocated bytes for code 152 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 160, prolog size 20, PerfScore 33.94, instruction count 40, allocated bytes for code 160 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -116,7 +120,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+36.36%) : 150409.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)

@@ -8,46 +8,59 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 16
-G_M984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M984_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp str w1, [fp, #0x1C] // [V01 arg1] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M984_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M984_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01] - mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq - cinc w0, wzr, eq - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M984_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M984_IG05 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M984_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [fp, #0x1D] // [V01 arg1+0x01] + cmp w0, #255 + bne G_M984_IG05 + mov w0, #1 + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M984_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M984_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M984_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=d746fc27) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=d746fc27) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ 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) Epilog Start Index : 1 (0x01)
+ ---- Scope 1 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

+16 (+36.36%) : 150432.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)

@@ -8,46 +8,59 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 16
-G_M34680_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34680_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp str w1, [fp, #0x1C] // [V01 arg1] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M34680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01] - mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq - cinc w0, wzr, eq - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M34680_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M34680_IG05 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M34680_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [fp, #0x1D] // [V01 arg1+0x01] + cmp w0, #255 + bne G_M34680_IG05 + mov w0, #1 + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M34680_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M34680_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M34680_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=3eac7887) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=3eac7887) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ 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) Epilog Start Index : 1 (0x01)
+ ---- Scope 1 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

libraries.crossgen2.osx.arm64.checked.mch

+0 (0.00%) : 890.dasm - Program:Main(System.String[]):int (FullOpts)

@@ -1587,7 +1587,7 @@ G_M58511_IG17: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, mov w23, wzr ;; size=164 bbWeight=1 PerfScore 47.00 G_M58511_IG18: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M58511_IG26
+ b G_M58511_IG35
;; size=4 bbWeight=1 PerfScore 1.00 G_M58511_IG19: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr w11, [x19, #0x08] @@ -1697,38 +1697,12 @@ G_M58511_IG25: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg ldr w0, [fp, #0xD1FFAB1E] // [V11 loc10] ldr w11, [fp, #0xD1FFAB1E] // [V03 loc2] cmp w0, w11
- bne G_M58511_IG27 - mov x0, x22 - ; gcrRegs +[x0] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - mov x11, #0xD1FFAB1E - cmp x0, x11 - bgt G_M58511_IG35 - mov w0, #5 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcr arg pop 0 - ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14] - add w0, w0, #1 - str w0, [fp, #0xD1FFAB1E] // [V15 loc14] - ;; size=80 bbWeight=4 PerfScore 88.00 -G_M58511_IG26: ; bbWeight=8, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr w11, [fp, #0xD1FFAB1E] // [V15 loc14] - cmp w11, #40 - bge G_M58511_IG48 - b G_M58511_IG19 - ;; size=16 bbWeight=8 PerfScore 36.00 -G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ beq G_M58511_IG34 + ;; size=16 bbWeight=4 PerfScore 22.00 +G_M58511_IG26: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14] cmp w0, #2
- bge G_M58511_IG30
+ bge G_M58511_IG36
stp xzr, xzr, [fp, #0x30] stp xzr, xzr, [fp, #0x40] str xzr, [fp, #0x50] @@ -1741,13 +1715,13 @@ G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg blr x3 ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 13.00
-G_M58511_IG28: ; bbWeight=1, nogc, extend
+G_M58511_IG27: ; bbWeight=1, nogc, extend
ldp q16, q17, [fp, #0x30] stp q16, q17, [fp, #0xD1FFAB1E] ldr x0, [fp, #0x50] str x0, [fp, #0xD1FFAB1E] ;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG29: ; bbWeight=1, extend
+G_M58511_IG28: ; bbWeight=1, extend
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] @@ -1813,535 +1787,18 @@ G_M58511_IG29: ; bbWeight=1, extend ; gcr arg pop 0 ldr w0, [fp, #0xD1FFAB1E] // [V03 loc2] str w0, [fp, #0xD1FFAB1E] // [V11 loc10]
- b G_M58511_IG34 - ;; size=204 bbWeight=1 PerfScore 67.00 -G_M58511_IG30: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - stp xzr, xzr, [fp, #0x58] - stp xzr, xzr, [fp, #0x68] - str xzr, [fp, #0x78] - add x0, fp, #88 // [V55 tmp28] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - mov w1, #53 - mov w2, #3 - ldr x3, [x11] - blr x3 - ; gcr arg pop 0 - ;; size=40 bbWeight=1 PerfScore 9.50 -G_M58511_IG31: ; bbWeight=1, nogc, extend - sub x0, fp, #200 - ldp q16, q17, [x0, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E] - ldr x1, [x0, #0xD1FFAB1E] - str x1, [fp, #0xD1FFAB1E] - ;; size=20 bbWeight=1 PerfScore 8.50 -G_M58511_IG32: ; bbWeight=1, extend - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V11 loc10] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V03 loc2] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=216 bbWeight=1 PerfScore 72.50 -G_M58511_IG33: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs +[x0] - ; gcr arg pop 0 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ;; size=36 bbWeight=1 PerfScore 10.50 -G_M58511_IG34: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=200 bbWeight=1 PerfScore 66.00 +G_M58511_IG29: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov w23, #1
- b G_M58511_IG48 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M58511_IG35: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - stp xzr, xzr, [fp, #0x80] - stp xzr, xzr, [fp, #0x90] - str xzr, [fp, #0xA0] - add x0, fp, #128 // [V54 tmp27] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - mov w1, #72 - mov w2, #2 - ldr x3, [x11] - blr x3 - ; gcr arg pop 0 - ;; size=40 bbWeight=1 PerfScore 9.50 -G_M58511_IG36: ; bbWeight=1, nogc, extend - ldp q16, q17, [fp, #0x80] - stp q16, q17, [fp, #0xD1FFAB1E] - ldr x0, [fp, #0xA0] - str x0, [fp, #0xD1FFAB1E] - ;; size=16 bbWeight=1 PerfScore 6.00 -G_M58511_IG37: ; bbWeight=1, isz, extend - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - mov x0, x22 - ; gcrRegs +[x0] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14] - add w1, w1, #1 - sxtw x1, w1 - cmp x1, #0 - beq G_M58511_IG40 - cmn x1, #1 - bne G_M58511_IG38 - cmp x0, #1 - bvs G_M58511_IG39 - ;; size=92 bbWeight=1 PerfScore 25.50 -G_M58511_IG38: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - sdiv x1, x0, x1 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24]
...

libraries.pmi.osx.arm64.checked.mch

-40 (-27.03%) : 167158.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-28 (-1.65%) : 248176.dasm - Microsoft.Build.BackEnd.RequestBuilder+d__61:MoveNext():this (FullOpts)

@@ -8,21 +8,21 @@ ; 0 inlinees with PGO data; 27 single block inlinees; 17 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 25, 23 ) byref -> [fp+0x10] this EH-live single-def
+; V00 this [V00,T02] ( 25, 23 ) byref -> [fp+0x18] this EH-live single-def
; V01 loc0 [V01,T41] ( 2, 2 ) int -> x1 single-def ; V02 loc1 [V02,T04] ( 16, 16 ) ref -> x19 class-hnd single-def <Microsoft.Build.BackEnd.RequestBuilder> ; V03 loc2 [V03,T36] ( 2, 2 ) ref -> x22 class-hnd single-def <<unknown class>> ; V04 loc3 [V04,T20] ( 4, 4 ) ubyte -> x20
-; V05 loc4 [V05,T17] ( 5, 5 ) ref -> registers class-hnd <<unknown class>>
+; V05 loc4 [V05,T17] ( 5, 5 ) ref -> x20 class-hnd <<unknown class>>
; V06 loc5 [V06,T29] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Build.BackEnd.FullyQualifiedBuildRequest[]> ; V07 loc6 [V07,T01] ( 5, 33 ) int -> x2 ;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Threading.WaitHandle[]>
-; V09 loc8 [V09,T18] ( 5, 5 ) int -> x20 -; V10 loc9 [V10 ] ( 7, 7 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[int]>
+; V09 loc8 [V09,T18] ( 5, 5 ) int -> registers +; V10 loc9 [V10 ] ( 7, 7 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[int]>
;* V11 loc10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V14 tmp2 [V14,T07] ( 6, 12 ) ref -> x22 class-hnd exact single-def "dup spill" <System.Threading.WaitHandle[]>
+; V14 tmp2 [V14,T07] ( 6, 12 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Threading.WaitHandle[]>
; V15 tmp3 [V15,T21] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> ; V16 tmp4 [V16,T22] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> ;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> @@ -42,7 +42,7 @@ ;* V31 tmp19 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V32 tmp20 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp22 [V34,T14] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
+; V34 tmp22 [V34,T14] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
; V35 tmp23 [V35,T15] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]> ;* V36 tmp24 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V37 tmp25 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Threading.WaitHandle]> @@ -53,12 +53,12 @@ ;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V43 tmp31 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <<unknown class>> ;* V44 tmp32 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V45 tmp33 [V45,T05] ( 7, 14 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]> -; V46 tmp34 [V46,T08] ( 6, 12 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
+; V45 tmp33 [V45,T05] ( 7, 14 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]> +; V46 tmp34 [V46,T08] ( 6, 12 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V47 tmp35 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp36 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp37 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-; V50 tmp38 [V50,T27] ( 2, 4 ) int -> x19 "Inlining Arg"
+; V50 tmp38 [V50,T27] ( 2, 4 ) int -> x20 "Inlining Arg"
;* V51 tmp39 [V51,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V52 tmp40 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V53 tmp41 [V53,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -69,36 +69,35 @@ ; V58 tmp46 [V58,T00] ( 6, 41 ) int -> x14 "Inline stloc first use temp" ; V59 tmp47 [V59,T03] ( 3, 24 ) int -> x12 "Inline stloc first use temp" ; V60 tmp48 [V60,T31] ( 3, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V61 tmp49 [V61 ] ( 7, 7 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10.m_task (fldOffset=0x0)" P-DEP
+; V61 tmp49 [V61 ] ( 7, 7 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10.m_task (fldOffset=0x0)" P-DEP
; V62 tmp50 [V62,T38] ( 2, 2 ) ref -> x0 single-def "field V26.m_task (fldOffset=0x0)" P-INDEP ; V63 tmp51 [V63,T39] ( 2, 2 ) byref -> x0 "field V37._reference (fldOffset=0x0)" P-INDEP ;* V64 tmp52 [V64,T44] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP ;* V65 tmp53 [V65 ] ( 0, 0 ) ref -> zero-ref "field V42._source (fldOffset=0x0)" P-INDEP ; V66 tmp54 [V66,T25] ( 2, 4 ) ref -> x2 single-def "argument with side effect" ; V67 tmp55 [V67,T26] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V68 PSPSym [V68,T45] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V69 cse0 [V69,T32] ( 3, 3 ) ref -> x20 "CSE - moderate"
+; V68 PSPSym [V68,T45] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V69 cse0 [V69,T32] ( 3, 3 ) ref -> x19 "CSE - moderate"
; V70 cse1 [V70,T35] ( 3, 3 ) int -> x1 "CSE - moderate" ; V71 cse2 [V71,T06] ( 7, 14 ) byref -> x0 "CSE - aggressive" ; V72 cse3 [V72,T10] ( 2, 9 ) byref -> x1 hoist "CSE - aggressive" ; V73 cse4 [V73,T09] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V74 cse5 [V74,T33] ( 3, 3 ) ref -> x23 "CSE - moderate"
+; V74 cse5 [V74,T33] ( 3, 3 ) ref -> x21 "CSE - moderate"
; V75 cse6 [V75,T40] ( 2, 2 ) ref -> x1 "CSE - moderate" ;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M54417_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - str x23, [sp, #0x48]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40]
mov fp, sp
- str xzr, [fp, #0x18] // [V10 loc9]
+ str xzr, [fp, #0x20] // [V10 loc9]
add x1, sp, #80
- str x1, [fp, #0x20] // [V68 PSPSym] - str x0, [fp, #0x10] // [V00 this]
+ str x1, [fp, #0x28] // [V68 PSPSym] + str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M54417_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref ; byrRegs +[x0] ldr w1, [x0, #0x20] @@ -106,36 +105,36 @@ G_M54417_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000 ; gcrRegs +[x19] ;; size=8 bbWeight=1 PerfScore 6.00 G_M54417_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- cbz w1, G_M54417_IG13
+ cbz w1, G_M54417_IG15
mov w20, wzr ldr x1, [x0] ; gcrRegs +[x1] mov w2, wzr ldr w3, [x1, #0x08] cmp w3, #0
- ble G_M54417_IG05
+ ble G_M54417_IG06
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] ;; size=32 bbWeight=1 PerfScore 10.00
-G_M54417_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0003 {x0 x1}, byref, isz
+G_M54417_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz + ; byrRegs -[x0]
ldr x4, [x1, w2, UXTW #3] ; gcrRegs +[x4] ldrb w4, [x4, #0x1C] ; gcrRegs -[x4]
- cbnz w4, G_M54417_IG11 - add w2, w2, #1 - cmp w3, w2 - bgt G_M54417_IG04 - ;; size=24 bbWeight=8 PerfScore 72.00 -G_M54417_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+ cbz w4, G_M54417_IG12 + ;; size=12 bbWeight=8 PerfScore 56.00 +G_M54417_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
+ mov w20, #1 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M54417_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w1, #1 str w1, [x19, #0x80]
- cbz w20, G_M54417_IG06
+ cbz w20, G_M54417_IG07
mov x0, x19 ; gcrRegs +[x0]
- ; byrRegs -[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.Build.BackEnd.RequestBuilder:SaveOperatingEnvironment():this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -144,26 +143,27 @@ G_M54417_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 8.50
-G_M54417_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x21, [fp, #0x10] // [V00 this] - ; byrRegs +[x21] - ldr x2, [x21]
+G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x0, [fp, #0x18] // [V00 this] + ; byrRegs +[x0] + ldr x2, [x0]
; gcrRegs +[x2] ldr x3, [x19, #0x60] ; gcrRegs +[x3]
- cbz x3, G_M54417_IG07
+ cbz x3, G_M54417_IG08
ldr x1, [x19, #0x38] ; gcrRegs +[x1] ldr x0, [x3, #0x08] ; gcrRegs +[x0]
+ ; byrRegs -[x0]
ldr x3, [x3, #0x18] ; gcrRegs -[x3] blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0 ;; size=32 bbWeight=1 PerfScore 19.00
-G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - cbz w20, G_M54417_IG18
+G_M54417_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cbz w20, G_M54417_IG20
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -171,18 +171,18 @@ G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 bl CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[x0] ; gcr arg pop 0
- mov x22, x0 - ; gcrRegs +[x22]
+ mov x20, x0 + ; gcrRegs +[x20]
ldr x15, [x19, #0x08] ; gcrRegs +[x15]
- add x14, x22, #16
+ add x14, x20, #16
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14] ldr x15, [x19, #0x10] ; gcrRegs +[x15]
- add x14, x22, #24
+ add x14, x20, #24
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] @@ -196,7 +196,7 @@ G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbz w0, G_M54417_IG12
+ cbz w0, G_M54417_IG14
ldr x0, [x19, #0x40] ; gcrRegs +[x0] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -212,21 +212,20 @@ G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 ldr x3, [x3, #0x50] ldr w3, [x3, #0x40] ; gcrRegs -[x3]
- mov x0, x22
+ mov x0, x20
mov w1, #1 movz x4, #0xD1FFAB1E // code for <unknown method> movk x4, #0xD1FFAB1E LSL #16 movk x4, #1 LSL #32 ldr x4, [x4] blr x4
- ; gcrRegs -[x0 x2 x22]
+ ; gcrRegs -[x0 x2 x20]
; gcr arg pop 0
- sxtw w20, w0
+ sxtw w21, w0
;; size=152 bbWeight=1 PerfScore 49.00
-G_M54417_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x21] - cmp w20, #1 - bne G_M54417_IG09
+G_M54417_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w21, #1 + bne G_M54417_IG10
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for Microsoft.Build.BackEnd.RequestBuilder:RestoreOperatingEnvironment():this @@ -246,38 +245,37 @@ G_M54417_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=56 bbWeight=1 PerfScore 13.50
-G_M54417_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - cmp w20, #1
+G_M54417_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
...

-44 (-1.51%) : 130133.dasm - Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser:ParseFields(int,int):Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo:this (FullOpts)

@@ -9,8 +9,8 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 10, 22 ) ref -> [fp+0xD8] this class-hnd single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser>
-; V01 arg1 [V01,T37] ( 4, 8 ) int -> x21 single-def -; V02 arg2 [V02,T34] ( 6, 9 ) int -> x20 single-def
+; V01 arg1 [V01,T38] ( 4, 8 ) int -> x21 single-def +; V02 arg2 [V02,T35] ( 6, 9 ) int -> x20 single-def
; V03 loc0 [V03,T08] ( 10, 21 ) ushort -> x23 ; V04 loc1 [V04,T05] ( 9, 24 ) ref -> [fp+0xD0] class-hnd exact spill-single-def <<unknown class>> ; V05 loc2 [V05,T03] ( 11, 28 ) ref -> [fp+0xC8] class-hnd exact spill-single-def <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch]> @@ -28,11 +28,11 @@ ; V17 loc14 [V17,T21] ( 6, 12 ) long -> [fp+0x120] spill-single-def ;* V18 loc15 [V18 ] ( 0, 0 ) long -> zero-ref ;* V19 loc16 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 loc17 [V20,T42] ( 4, 8 ) ref -> [fp+0xB0] class-hnd exact spill-single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser+<>c__DisplayClass2_0>
+; V20 loc17 [V20,T43] ( 4, 8 ) ref -> [fp+0xB0] class-hnd exact spill-single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser+<>c__DisplayClass2_0>
;* V21 loc18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Func`1[System.Collections.Generic.IDictionary`2[long,System.String]]>
-; V22 loc19 [V22,T47] ( 4, 8 ) ushort -> x23 -; V23 loc20 [V23,T48] ( 4, 8 ) ushort -> x27 -; V24 loc21 [V24,T36] ( 5, 10 ) ushort -> [fp+0x11C]
+; V22 loc19 [V22,T48] ( 4, 8 ) ushort -> x23 +; V23 loc20 [V23,T49] ( 4, 8 ) ushort -> x27 +; V24 loc21 [V24,T37] ( 5, 10 ) ushort -> [fp+0x11C]
; V25 loc22 [V25,T22] ( 6, 12 ) int -> x23 ;# V26 OutArgs [V26 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V27 tmp1 [V27,T59] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -46,21 +46,21 @@ ; V35 tmp9 [V35,T56] ( 7, 7 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>> ; V36 tmp10 [V36,T82] ( 3, 3 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>> ; V37 tmp11 [V37,T83] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V38 tmp12 [V38,T43] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
+; V38 tmp12 [V38,T44] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
; V39 tmp13 [V39,T06] ( 3, 24 ) ref -> x1 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Regex> ;* V40 tmp14 [V40 ] ( 0, 0 ) ref -> zero-ref ;* V41 tmp15 [V41 ] ( 0, 0 ) ref -> zero-ref ;* V42 tmp16 [V42 ] ( 0, 0 ) ref -> zero-ref ;* V43 tmp17 [V43 ] ( 0, 0 ) int -> zero-ref ; V44 tmp18 [V44,T02] ( 10, 36 ) ref -> [fp+0xA8] spill-single-def
-; V45 tmp19 [V45,T38] ( 3, 10 ) ref -> x28
+; V45 tmp19 [V45,T25] ( 3, 12 ) ref -> x28
;* V46 tmp20 [V46,T78] ( 0, 0 ) ref -> zero-ref ;* V47 tmp21 [V47,T81] ( 0, 0 ) int -> zero-ref
-; V48 tmp22 [V48,T51] ( 3, 8 ) int -> [fp+0x118]
+; V48 tmp22 [V48,T42] ( 3, 10 ) int -> [fp+0x118]
; V49 tmp23 [V49,T16] ( 2, 16 ) ref -> x3 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> ; V50 tmp24 [V50,T07] ( 8, 22 ) ref -> [fp+0xA0]
-; V51 tmp25 [V51,T25] ( 3, 12 ) ref -> [fp+0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> -; V52 tmp26 [V52,T26] ( 3, 12 ) byref -> [fp+0x90] spill-single-def "finalizable newobj spill"
+; V51 tmp25 [V51,T26] ( 3, 12 ) ref -> [fp+0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> +; V52 tmp26 [V52,T27] ( 3, 12 ) byref -> [fp+0x90] spill-single-def "finalizable newobj spill"
; V53 tmp27 [V53,T52] ( 2, 8 ) ref -> x3 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> ;* V54 tmp28 [V54 ] ( 0, 0 ) ref -> zero-ref ;* V55 tmp29 [V55 ] ( 0, 0 ) ref -> zero-ref @@ -70,25 +70,25 @@ ;* V59 tmp33 [V59 ] ( 0, 0 ) ref -> zero-ref ;* V60 tmp34 [V60 ] ( 0, 0 ) long -> zero-ref ;* V61 tmp35 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
-; V62 tmp36 [V62,T49] ( 4, 8 ) long -> x0 "Inline stloc first use temp"
+; V62 tmp36 [V62,T50] ( 4, 8 ) long -> x0 "Inline stloc first use temp"
;* V63 tmp37 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo> ;* V64 tmp38 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement> ; V65 tmp39 [V65,T12] ( 6, 18 ) ref -> [fp+0x88] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V66 tmp40 [V66,T32] ( 2, 12 ) int -> [fp+0x114] spill-single-def "Inlining Arg" -; V67 tmp41 [V67,T30] ( 2, 12 ) ref -> [fp+0x80] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> -; V68 tmp42 [V68,T33] ( 2, 12 ) int -> [fp+0x110] spill-single-def "Inlining Arg" -; V69 tmp43 [V69,T31] ( 2, 12 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V66 tmp40 [V66,T33] ( 2, 12 ) int -> [fp+0x114] spill-single-def "Inlining Arg" +; V67 tmp41 [V67,T31] ( 2, 12 ) ref -> [fp+0x80] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> +; V68 tmp42 [V68,T34] ( 2, 12 ) int -> [fp+0x110] spill-single-def "Inlining Arg" +; V69 tmp43 [V69,T32] ( 2, 12 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
;* V70 tmp44 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V71 tmp45 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V72 tmp46 [V72,T50] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
+; V72 tmp46 [V72,T51] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
; V73 tmp47 [V73,T18] ( 5, 14 ) long -> [fp+0x108] spill-single-def "Inline stloc first use temp" ;* V74 tmp48 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ; V75 tmp49 [V75,T61] ( 3, 6 ) ref -> x9 class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement> ;* V76 tmp50 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ;* V77 tmp51 [V77 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V78 tmp52 [V78,T27] ( 3, 12 ) ref -> [fp+0x70] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
+; V78 tmp52 [V78,T28] ( 3, 12 ) ref -> [fp+0x70] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
; V79 tmp53 [V79,T53] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Object>
-; V80 tmp54 [V80,T44] ( 4, 8 ) ref -> x0
+; V80 tmp54 [V80,T45] ( 4, 8 ) ref -> x0
;* V81 tmp55 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexReplacement> ; V82 tmp56 [V82,T20] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" ; V83 tmp57 [V83,T00] ( 7, 56 ) ref -> [fp+0x68] class-hnd exact spill-single-def "Inlining Arg" <System.String> @@ -109,7 +109,7 @@ ; V98 tmp72 [V98,T40] ( 3, 10 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> ; V99 tmp73 [V99,T24] ( 4, 12 ) int -> x15 "Inline stloc first use temp" ; V100 tmp74 [V100,T65] ( 2, 4 ) ref -> x0 single-def "Single return block return value"
-; V101 FramesRoot [V101,T35] ( 6, 10 ) long -> x22 "Pinvoke FrameListRoot"
+; V101 FramesRoot [V101,T36] ( 6, 10 ) long -> x22 "Pinvoke FrameListRoot"
; V102 PInvokeFrame[V102 ] ( 8, 12 ) struct (72) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" ; V103 tmp77 [V103 ] ( 7, 18 ) ref -> [fp+0x138] do-not-enreg[X] addr-exposed "field V08.Type (fldOffset=0x0)" P-DEP ; V104 tmp78 [V104 ] ( 8, 20 ) ref -> [fp+0x140] do-not-enreg[X] addr-exposed "field V08.info (fldOffset=0x8)" P-DEP @@ -140,15 +140,15 @@ ; V129 tmp103 [V129,T76] ( 2, 4 ) ushort -> [fp+0xE8] spill-single-def "V94.[016..018)" ; V130 tmp104 [V130,T77] ( 2, 4 ) ushort -> [fp+0xE4] spill-single-def "V94.[018..020)" ; V131 tmp105 [V131,T10] ( 5, 20 ) byref -> x13 "Spilling address for field-by-field copy"
-; V132 tmp106 [V132,T28] ( 3, 12 ) ref -> x0 "arr expr"
+; V132 tmp106 [V132,T29] ( 3, 12 ) ref -> x0 "arr expr"
;* V133 tmp107 [V133,T79] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V134 tmp108 [V134,T80] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V135 cse0 [V135,T45] ( 4, 8 ) byref -> x0 "CSE - moderate" -; V136 cse1 [V136,T46] ( 2, 4 ) ref -> x0 "CSE - moderate"
+; V135 cse0 [V135,T46] ( 4, 8 ) byref -> x0 "CSE - moderate" +; V136 cse1 [V136,T47] ( 2, 4 ) ref -> x0 "CSE - moderate"
; V137 cse2 [V137,T62] ( 3, 6 ) int -> x0 "CSE - moderate" ; V138 cse3 [V138,T63] ( 3, 6 ) int -> x0 "CSE - moderate" ; V139 cse4 [V139,T19] ( 5, 14 ) int -> x0 "CSE - moderate"
-; V140 cse5 [V140,T29] ( 3, 12 ) int -> x2 "CSE - moderate"
+; V140 cse5 [V140,T30] ( 3, 12 ) int -> x2 "CSE - moderate"
; V141 cse6 [V141,T64] ( 3, 6 ) int -> x0 "CSE - moderate" ; ; Lcl frame size = 320 @@ -246,7 +246,7 @@ G_M4868_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000028 {V04 mov x1, x0 ; gcrRegs +[x1] ldrsb wzr, [x1]
- cbz x28, G_M4868_IG67
+ cbz x28, G_M4868_IG65
str x1, [fp, #0xA8] // [V44 tmp18] ; GC ptr vars +{V44} ldr w0, [x1, #0x40] @@ -255,22 +255,22 @@ G_M4868_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000028 {V04 ;; size=96 bbWeight=4 PerfScore 136.00 G_M4868_IG04: ; bbWeight=2, gcVars=0000000000000000000000000000002C {V04 V05 V44}, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref mov w2, wzr
+ str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
b G_M4868_IG07
- ;; size=8 bbWeight=2 PerfScore 3.00
+ ;; size=12 bbWeight=2 PerfScore 5.00
G_M4868_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000028 {V04 V05}, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x1 x19 x28] ; GC ptr vars -{V44} ldr x25, [fp, #0xC8] // [V05 loc2] ; gcrRegs +[x25]
- b G_M4868_IG60
+ b G_M4868_IG58
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M4868_IG06: ; bbWeight=2, gcVars=0000000000000000000000000000002C {V04 V05 V44}, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M4868_IG06: ; bbWeight=4, gcVars=0000000000000000000000000000002C {V04 V05 V44}, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x25] +[x1 x19 x28] ; GC ptr vars +{V02 V44} ldr w2, [x28, #0x08] str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
- ldr w2, [fp, #0xD1FFAB1E] // [V48 tmp22] - ;; size=12 bbWeight=2 PerfScore 12.00
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M4868_IG07: ; bbWeight=4, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, byref, isz ldr x3, [x1, #0x30] ; gcrRegs +[x3] @@ -278,7 +278,6 @@ G_M4868_IG07: ; bbWeight=4, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefReg ;; size=8 bbWeight=4 PerfScore 16.00 G_M4868_IG08: ; bbWeight=2, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x3]
- str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
add x3, x1, #48 ; byrRegs +[x3] str x3, [fp, #0x90] // [V52 tmp26] @@ -304,14 +303,14 @@ G_M4868_IG08: ; bbWeight=2, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefReg movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ;; size=76 bbWeight=2 PerfScore 31.00
+ ;; size=72 bbWeight=2 PerfScore 29.00
G_M4868_IG09: ; bbWeight=2, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, byref, isz ldr x1, [fp, #0x98] // [V51 tmp25] ; gcrRegs +[x1] str x0, [x1, #0x08] ldr x0, [fp, #0x90] // [V52 tmp26] ; byrRegs +[x0]
- cbz x0, G_M4868_IG68
+ cbz x0, G_M4868_IG66
mov x2, xzr ; GC ptr vars -{V51 V52} bl <unknown method> @@ -327,11 +326,9 @@ G_M4868_IG09: ; bbWeight=2, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0 ldr x1, [x2, #0x30] mov x3, x1 mov x1, x2
- ldr w2, [fp, #0xD1FFAB1E] // [V48 tmp22] - ; gcrRegs -[x2] - ;; size=56 bbWeight=2 PerfScore 35.00
+ ;; size=52 bbWeight=2 PerfScore 31.00
G_M4868_IG10: ; bbWeight=4, gcrefRegs=1108000A {x1 x3 x19 x24 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
ldr x4, [x1, #0x18] ; gcrRegs +[x4] str x4, [fp, #0x80] // [V67 tmp41] @@ -350,7 +347,7 @@ G_M4868_IG10: ; bbWeight=4, gcrefRegs=1108000A {x1 x3 x19 x24 x28}, byref str x8, [fp, #0xD1FFAB1E] // [V73 tmp47] cbnz x8, G_M4868_IG13 ;; size=48 bbWeight=4 PerfScore 78.00
-G_M4868_IG11: ; bbWeight=2, gcVars=000000000000000000000000C00000AC {V04 V05 V44 V50 V67 V69}, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M4868_IG11: ; bbWeight=2, gcVars=000000000000000000000001800000AC {V04 V05 V44 V50 V67 V69}, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1 x3-x4 x7] ldr x4, [fp, #0x80] // [V67 tmp41] ; gcrRegs +[x4] @@ -368,10 +365,9 @@ G_M4868_IG12: ; bbWeight=1, gcVars=0000000000000000000000000000002C {V04 mov x3, x1 ; gcrRegs +[x3] ldr x1, [fp, #0xA8] // [V44 tmp18]
- ldr w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
b G_M4868_IG10
- ;; size=16 bbWeight=1 PerfScore 5.50 -G_M4868_IG13: ; bbWeight=2, gcVars=000000000000000000000000C00000AC {V04 V05 V44 V50 V67 V69}, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 3.50 +G_M4868_IG13: ; bbWeight=2, gcVars=000000000000000000000001800000AC {V04 V05 V44 V50 V67 V69}, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x1 x3] ; GC ptr vars +{V07 V50 V67 V69} ldr x4, [fp, #0x80] // [V67 tmp41] @@ -382,7 +378,6 @@ G_M4868_IG13: ; bbWeight=2, gcVars=000000000000000000000000C00000AC {V04 ; gcrRegs +[x7] and w0, w8, #2 cbz w0, G_M4868_IG15
- str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
cmp w0, #0 cset x0, ne movz x9, #0xD1FFAB1E // code for <unknown method> @@ -412,7 +407,7 @@ G_M4868_IG13: ; bbWeight=2, gcVars=000000000000000000000000C00000AC {V04 ldr x1, [x1] ; GC ptr vars -{V78} blr x1
- ;; size=112 bbWeight=2 PerfScore 69.00
+ ;; size=108 bbWeight=2 PerfScore 67.00
G_M4868_IG14: ; bbWeight=2, gcrefRegs=11080001 {x0 x19 x24 x28}, byrefRegs=0000 {}, byref mov x9, x0 ; gcrRegs +[x9] @@ -420,19 +415,17 @@ G_M4868_IG14: ; bbWeight=2, gcrefRegs=11080001 {x0 x19 x24 x28}, byrefReg ;; size=8 bbWeight=2 PerfScore 3.00 G_M4868_IG15: ; bbWeight=2, gcrefRegs=11080090 {x4 x7 x19 x24 x28}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x9] +[x4 x7]
- str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
ldr x8, [fp, #0xD1FFAB1E] // [V73 tmp47] mov x0, x8 bl <unknown method> ; gcrRegs -[x4 x7] +[x0] mov x9, x0 ; gcrRegs +[x9]
- ;; size=20 bbWeight=2 PerfScore 10.00
+ ;; size=16 bbWeight=2 PerfScore 8.00
G_M4868_IG16: ; bbWeight=2, gcrefRegs=11080200 {x9 x19 x24 x28}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov x6, x9 ; gcrRegs +[x6]
- ldr w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
...

+20 (+3.97%) : 3289.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T08] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T13] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T14] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T12] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T02] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T06] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -28,8 +28,8 @@ ;* V17 tmp7 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V18 tmp8 [V18,T18] ( 4, 5 ) ref -> x0 "Single return block return value" ; V19 tmp9 [V19,T16] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V20 cse0 [V20,T07] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V21 cse1 [V21,T03] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V20 cse0 [V20,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V21 cse1 [V21,T07] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V22 cse2 [V22,T05] ( 5, 40 ) int -> x27 "CSE - aggressive" ; ; Lcl frame size = 0 @@ -46,37 +46,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG20
+ cbz x19, G_M46295_IG22
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG14
+ ble G_M46295_IG16
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG21 - cbz w21, G_M46295_IG15
+ bgt G_M46295_IG23 + cbz w21, G_M46295_IG17
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -85,20 +90,26 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG15 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG10
+ cbz x26, G_M46295_IG12
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG10
+ cbz w27, G_M46295_IG12
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG12
+ blt G_M46295_IG14
cmp x23, #0 cset x0, ne movz x1, #0xD1FFAB1E // code for <unknown method> @@ -144,21 +155,21 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=160 bbWeight=8 PerfScore 312.00
-G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG11: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG13
+ b G_M46295_IG15
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG12: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG18
+ beq G_M46295_IG20
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -172,28 +183,28 @@ G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG16
+ cbz w20, G_M46295_IG18
cmp w20, #0
- bls G_M46295_IG19
+ bls G_M46295_IG21
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG17
+ cbnz x0, G_M46295_IG19
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- b G_M46295_IG17
+ b G_M46295_IG19
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -203,18 +214,18 @@ G_M46295_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG17
+ b G_M46295_IG19
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -230,7 +241,7 @@ G_M46295_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -240,7 +251,7 @@ G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 504, prolog size 32, PerfScore 671.00, instruction count 126, allocated bytes for code 504 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 524, prolog size 32, PerfScore 683.00, instruction count 131, allocated bytes for code 524 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -251,7 +262,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 126 (0x0007e) Actual length = 504 (0x0001f8)
+ Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+3.98%) : 199470.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0 ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75 -G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M3645_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M3645_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M3645_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #1 LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M3645_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M3645_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #1 LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M3645_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M3645_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M3645_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M3645_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M3645_IG17
...

+32 (+3.98%) : 50239.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0 ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75 -G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M3645_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M3645_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M3645_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #1 LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M3645_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M3645_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #1 LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M3645_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M3645_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M3645_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M3645_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M3645_IG17
...

libraries_tests.run.osx.arm64.Release.mch

-40 (-27.03%) : 341952.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,13 +8,13 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 673 ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 3.53) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 4.56) int -> x1 single-def -; V02 loc0 [V02,T02] ( 11, 3.16) int -> x3 -; V03 loc1 [V03,T04] ( 6, 1.58) ushort -> x5
+; V00 arg0 [V00,T01] ( 4, 3.52) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 6, 4.04) int -> x1 single-def +; V02 loc0 [V02,T02] ( 7, 3.68) int -> x3 +; V03 loc1 [V03,T04] ( 3, 1.58) ushort -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.53) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 1.05) byref -> x4 hoist multi-def "CSE - moderate"
+; V05 cse0 [V05,T03] ( 5, 3.05) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 1.05) byref -> x4 hoist "CSE - moderate"
; ; Lcl frame size = 0 @@ -36,62 +36,46 @@ G_M3357_IG04: ; bbWeight=0.48, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.48 PerfScore 0.96
-G_M3357_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG07
add x4, x0, #12 ; byrRegs +[x4]
- ;; size=12 bbWeight=0.52 PerfScore 1.04 -G_M3357_IG06: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=8 bbWeight=0.52 PerfScore 0.52 +G_M3357_IG06: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG08 - add w3, w3, #1 - cmp w2, w3 - ble G_M3357_IG11 - b G_M3357_IG06 - ;; size=32 bbWeight=0.52 PerfScore 4.18 -G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - ; byrRegs -[x4]
cmp w3, w2
- bhs G_M3357_IG10 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG08
+ bhs G_M3357_IG09 + ldrh w0, [x4, w3, UXTW #2] + cmp w0, #32 + ccmp w0, #9, z, ne + bne G_M3357_IG07
add w3, w3, #1 cmp w2, w3
- ble G_M3357_IG11 - b G_M3357_IG07 - ;; size=44 bbWeight=0.01 PerfScore 0.05 -G_M3357_IG08: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+ ble G_M3357_IG10 + b G_M3357_IG06 + ;; size=40 bbWeight=0.53 PerfScore 5.01 +G_M3357_IG07: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4] sub w0, w3, w1 ;; size=4 bbWeight=0.52 PerfScore 0.26
-G_M3357_IG09: ; bbWeight=0.52, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.52, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.52 PerfScore 1.04
-G_M3357_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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_M3357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w2, w1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 13.77, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 14.03, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-40 (-11.90%) : 341951.dasm - System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)

@@ -9,16 +9,16 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 9, 4.03) ref -> x19 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 8, 5.56) int -> x1 single-def
+; V00 arg0 [V00,T01] ( 8, 4.03) ref -> x19 class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 7, 5.04) int -> x1 single-def
; V02 arg2 [V02,T05] ( 3, 2 ) ubyte -> x20 single-def ; V03 arg3 [V03,T02] ( 4, 3 ) byref -> x3 single-def ; V04 loc0 [V04,T04] ( 18, 4.00) int -> x22 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T07] ( 4, 2 ) int -> x2 "Inline return value spill temp"
-; V07 tmp2 [V07,T06] ( 11, 3.16) int -> x4 "Inline stloc first use temp" -; V08 tmp3 [V08,T08] ( 6, 1.58) ushort -> x0 "Inline stloc first use temp" -; V09 cse0 [V09,T03] ( 10, 4.03) int -> x21 "CSE - aggressive"
+; V07 tmp2 [V07,T06] ( 7, 3.68) int -> x4 "Inline stloc first use temp" +; V08 tmp3 [V08,T08] ( 3, 1.58) ushort -> x0 "Inline stloc first use temp" +; V09 cse0 [V09,T03] ( 9, 4.56) int -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -40,70 +40,56 @@ G_M52160_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, ;; size=16 bbWeight=1 PerfScore 5.50 G_M52160_IG03: ; bbWeight=0.48, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref mov w2, wzr
- b G_M52160_IG08
+ b G_M52160_IG07
;; size=8 bbWeight=0.48 PerfScore 0.72
-G_M52160_IG04: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG04: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
sxtw w4, w1
- tbnz w1, #31, G_M52160_IG06 - ;; size=8 bbWeight=0.52 PerfScore 0.78 -G_M52160_IG05: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ ;; size=4 bbWeight=0.52 PerfScore 0.26 +G_M52160_IG05: ; bbWeight=0.53, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz + cmp w4, w21 + bhs G_M52160_IG14
add x2, x19, #12 ; byrRegs +[x2] ldrh w0, [x2, w4, UXTW #2] cmp w0, #32 ccmp w0, #9, z, ne
- bne G_M52160_IG07
+ bne G_M52160_IG06
add w4, w4, #1 cmp w21, w4
- ble G_M52160_IG16
+ ble G_M52160_IG15
b G_M52160_IG05
- ;; size=36 bbWeight=0.52 PerfScore 4.44 -G_M52160_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ ;; size=44 bbWeight=0.53 PerfScore 5.27 +G_M52160_IG06: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
; byrRegs -[x2]
- cmp w4, w21 - bhs G_M52160_IG15 - add x0, x19, #12 - ; byrRegs +[x0] - ldrh w0, [x0, w4, UXTW #2] - ; byrRegs -[x0] - cmp w0, #32 - ccmp w0, #9, z, ne - bne G_M52160_IG07 - add w4, w4, #1 - cmp w21, w4 - ble G_M52160_IG16 - b G_M52160_IG06 - ;; size=44 bbWeight=0.01 PerfScore 0.05 -G_M52160_IG07: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
sub w2, w4, w1 ;; size=4 bbWeight=0.52 PerfScore 0.26
-G_M52160_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
add w22, w1, w2 cmp w21, w22
- beq G_M52160_IG10
+ beq G_M52160_IG09
;; size=12 bbWeight=1 PerfScore 2.00
-G_M52160_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
cmp w22, w21
- bhs G_M52160_IG15
+ bhs G_M52160_IG14
add x0, x19, #12 ; byrRegs +[x0] ldrh w0, [x0, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #44
- beq G_M52160_IG12
+ beq G_M52160_IG11
;; size=24 bbWeight=0.50 PerfScore 3.26
-G_M52160_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52160_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ; byrRegs -[x3] mov w0, w22 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52160_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M52160_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M52160_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, gcvars, byref, isz
+G_M52160_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, gcvars, byref, isz
; gcrRegs +[x19] ; byrRegs +[x3] mov w0, #1 @@ -122,10 +108,10 @@ G_M52160_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 ; gcr arg pop 0 add w22, w0, w22 tst w20, #255
- beq G_M52160_IG10 - b G_M52160_IG14
+ beq G_M52160_IG09 + b G_M52160_IG13
;; size=56 bbWeight=0 PerfScore 0.00
-G_M52160_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M52160_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #1 mov x0, x19 ; gcrRegs +[x0] @@ -139,32 +125,32 @@ G_M52160_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w22, w0, w22 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M52160_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M52160_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w22
- ble G_M52160_IG10
+ ble G_M52160_IG09
cmp w22, w21
- bhs G_M52160_IG15
+ bhs G_M52160_IG14
add x0, x19, #12 ; byrRegs +[x0] ldrh w0, [x0, w22, UXTW #2] ; byrRegs -[x0] cmp w0, #44
- beq G_M52160_IG13 - b G_M52160_IG10
+ beq G_M52160_IG12 + b G_M52160_IG09
;; size=36 bbWeight=0 PerfScore 0.00
-G_M52160_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52160_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52160_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
+G_M52160_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
; gcrRegs +[x19] ; byrRegs +[x3] sub w2, w21, w1
- b G_M52160_IG08
+ b G_M52160_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 336, prolog size 24, PerfScore 26.01, instruction count 84, allocated bytes for code 336 (MethodHash=17d3343f) for method System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
+Total bytes of code 296, prolog size 24, PerfScore 26.27, instruction count 74, allocated bytes for code 296 (MethodHash=17d3343f) for method System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
; ============================================================ Unwind Info: @@ -175,7 +161,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-4.72%) : 296629.dasm - System.Linq.Parallel.SortHelper2[int,System.Linq.Parallel.Pair2[int,int]]:Dispose():this (Tier1)

@@ -13,9 +13,9 @@ ; V01 loc0 [V01,T08] ( 8, 8.01) int -> x20 ; V02 loc1 [V02,T04] ( 6, 15.39) int -> x21 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 13, 36.82) ref -> x24 class-hnd "dup spill" <System.Threading.Barrier>
+; V04 tmp1 [V04,T00] ( 12, 43.81) ref -> x24 class-hnd "dup spill" <System.Threading.Barrier>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref
-; V06 tmp3 [V06,T10] ( 3, 0 ) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V06 tmp3 [V06,T10] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Barrier> ; V08 tmp5 [V08,T05] ( 4, 14.44) ref -> x22 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> ; V09 tmp6 [V09,T06] ( 4, 14.44) ref -> x22 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> @@ -64,7 +64,7 @@ G_M38639_IG05: ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x22] ldr w0, [x22, #0x08] cmp w20, w0
- bhs G_M38639_IG13
+ bhs G_M38639_IG14
add x0, x22, #16 ; byrRegs +[x0] ubfiz x23, x20, #3, #32 @@ -82,7 +82,7 @@ G_M38639_IG06: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w20, w1
- bhs G_M38639_IG13
+ bhs G_M38639_IG14
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -91,7 +91,7 @@ G_M38639_IG06: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; byrRegs -[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M38639_IG13
+ bhs G_M38639_IG14
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -102,18 +102,18 @@ G_M38639_IG06: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M38639_IG07: ; bbWeight=1.75, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] ldr w0, [x24, #0x3C]
- cbnz w0, G_M38639_IG14
+ cbnz w0, G_M38639_IG15 + ;; size=8 bbWeight=1.75 PerfScore 6.99 +G_M38639_IG08: ; bbWeight=1.75, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- bne G_M38639_IG15 - ;; size=32 bbWeight=1.75 PerfScore 17.47 -G_M38639_IG08: ; bbWeight=1.75, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
+ bne G_M38639_IG13
ldrb w0, [x24, #0x40] cbnz w0, G_M38639_IG10
- ;; size=8 bbWeight=1.75 PerfScore 6.99
+ ;; size=32 bbWeight=1.75 PerfScore 17.47
G_M38639_IG09: ; bbWeight=1.80, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref ldr x22, [x24, #0x08] ; gcrRegs +[x22] @@ -163,7 +163,7 @@ G_M38639_IG11: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x22] ldr w0, [x22, #0x08] cmp w20, w0
- bhs G_M38639_IG13
+ bhs G_M38639_IG14
add x0, x22, #16 ; byrRegs +[x0] ldr x0, [x0, x23] @@ -185,26 +185,8 @@ G_M38639_IG12: ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, bgt G_M38639_IG05 b G_M38639_IG03 ;; size=24 bbWeight=0.38 PerfScore 3.38
-G_M38639_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M38639_IG14: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19 x24] - bl <unknown method> - ; gcr arg pop 0 - ldr w1, [x24, #0x3C] - cmp w0, w1 - beq G_M38639_IG16 - ldr x0, [x24] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - cmp x0, x1 - beq G_M38639_IG08 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M38639_IG15: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
+G_M38639_IG13: ; bbWeight=1.75, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref + ; gcrRegs +[x24]
mov x0, x24 ; gcrRegs +[x0] mov w1, #1 @@ -215,17 +197,27 @@ G_M38639_IG15: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 ; gcrRegs -[x0] ; gcr arg pop 0 b G_M38639_IG10
- ;; size=28 bbWeight=0 PerfScore 0.00 -G_M38639_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=1.75 PerfScore 20.97 +G_M38639_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x24]
+ bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M38639_IG15: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x19 x24] + bl <unknown method> + ; gcr arg pop 0 + ldr w1, [x24, #0x3C] + cmp w0, w1 + bne G_M38639_IG08
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
+ ; gcrRegs -[x19 x24] +[x0]
; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x19, x0 + ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -236,7 +228,7 @@ G_M38639_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov x1, x0 ; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -244,15 +236,15 @@ G_M38639_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- mov x0, x24
+ mov x0, x19
; gcrRegs +[x0] bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x24]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0 brk_unix #0
- ;; size=80 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
-Total bytes of code 508, prolog size 24, PerfScore 218.62, instruction count 127, allocated bytes for code 508 (MethodHash=cbf96910) for method System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:Dispose():this (Tier1)
+Total bytes of code 484, prolog size 24, PerfScore 239.59, instruction count 121, allocated bytes for code 484 (MethodHash=cbf96910) for method System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:Dispose():this (Tier1)
; ============================================================ Unwind Info: @@ -263,7 +255,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 127 (0x0007f) Actual length = 508 (0x0001fc)
+ Function Length : 121 (0x00079) Actual length = 484 (0x0001e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+4.52%) : 280952.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -23,22 +23,23 @@ ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp" ; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M10785_IG13 cmp x20, x19 @@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov w0, #1 ;; size=16 bbWeight=1 PerfScore 3.00 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- 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=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ldr x0, [x19, #0x30] cmn x0, #1 @@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x19, #0x18] cmp x0, x1 bne G_M10785_IG13
+ ldr x0, [x20, #0x20] + ldr x1, [x19, #0x20] + cmp x0, x1 + cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x20 ; gcrRegs +[x0] @@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2, #0x10] ;; size=40 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x0, [x20, #0x28] @@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00 G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00 -G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - ldr x0, [x20, #0x20] - ldr x1, [x19, #0x20] - cmp x0, x1 - cset x0, eq - uxtb w0, w0 - ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + uxtb w0, w21 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20] ldr x1, [x19] cmp x0, x1 @@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M10785_IG02 ;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -273,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -296,10 +303,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

+36 (+4.55%) : 628841.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span1[uint],int) (Tier1)

@@ -5,16 +5,16 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 13
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 13
; 8 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]> ; V01 arg1 [V01,T02] ( 7, 7.69) int -> x19
-; V02 loc0 [V02,T01] ( 15, 14.23) int -> x22
+; V02 loc0 [V02,T01] ( 16, 15.15) int -> x22
; V03 loc1 [V03,T09] ( 3, 3.77) int -> x23 ; V04 loc2 [V04,T17] ( 9, 0 ) byref -> x20 single-def
-; V05 loc3 [V05,T18] ( 9, 0 ) byref -> x19 single-def
+; V05 loc3 [V05,T18] ( 9, 0 ) byref -> x22 single-def
;* V06 loc4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def ; V07 loc5 [V07,T10] ( 4, 3.69) int -> x0 ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -72,7 +72,7 @@ ; V60 tmp52 [V60,T13] ( 2, 1.85) int -> x1 "field V36._length (fldOffset=0x8)" P-INDEP ; V61 tmp53 [V61,T07] ( 2, 3.85) byref -> x0 "field V41._reference (fldOffset=0x0)" P-INDEP ; V62 tmp54 [V62,T08] ( 2, 3.85) int -> x1 "field V41._length (fldOffset=0x8)" P-INDEP
-; V63 cse0 [V63,T00] ( 12, 19.85) ref -> x1 multi-def "CSE - aggressive"
+; V63 cse0 [V63,T00] ( 15, 30.92) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -118,17 +118,68 @@ G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b G_M26918_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz sxtw w22, w20 cmp w20, #1
- ble G_M26918_IG14
+ ble G_M26918_IG17
;; size=12 bbWeight=1 PerfScore 2.00 G_M26918_IG05: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz cmp w22, #16
- ble G_M26918_IG10
+ bgt G_M26918_IG09
;; size=8 bbWeight=1.92 PerfScore 2.88
-G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz - cbz w19, G_M26918_IG20
+G_M26918_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz + cmp w22, #2 + beq G_M26918_IG15 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M26918_IG07: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz + cmp w22, #3 + beq G_M26918_IG19 + cmp w22, w20 + bhi G_M26918_IG23 + tbz w22, #31, G_M26918_IG08 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + mov x0, x1 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0] + ;; size=56 bbWeight=0.92 PerfScore 10.62 +G_M26918_IG08: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + mov x0, x21 + ; byrRegs +[x0] + mov w1, w22 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; byrRegs -[x0 x21] + b G_M26918_IG17 + ;; size=32 bbWeight=0.92 PerfScore 6.92 +G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz + ; byrRegs +[x21] + cbz w19, G_M26918_IG22
sub w19, w19, #1 cmp w22, w20
- bhi G_M26918_IG21
+ bhi G_M26918_IG23 + tbz w22, #31, G_M26918_IG11 + ;; size=20 bbWeight=0.92 PerfScore 3.69 +G_M26918_IG10: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + mov x0, x1 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0] + ;; size=36 bbWeight=3.69 PerfScore 27.69 +G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
sxtw w1, w22 mov x0, x21 ; byrRegs +[x0] @@ -145,13 +196,13 @@ G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21} add x1, x1, w22, UXTW mov w2, w20 cmp x1, x2
- bhi G_M26918_IG21
+ bhi G_M26918_IG23
ubfiz x0, x0, #2, #32 add x24, x21, x0 ; byrRegs +[x24]
- tbz w22, #31, G_M26918_IG08 - ;; size=88 bbWeight=0.92 PerfScore 15.69 -G_M26918_IG07: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 x24}, byref
+ tbz w22, #31, G_M26918_IG13 + ;; size=72 bbWeight=0.92 PerfScore 12.92 +G_M26918_IG12: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 x24}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -164,7 +215,7 @@ G_M26918_IG07: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=3.69 PerfScore 27.69
-G_M26918_IG08: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 x24}, byref, isz
+G_M26918_IG13: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 x24}, byref, isz
mov x0, x24 ; byrRegs +[x0] sxtw w1, w22 @@ -177,67 +228,21 @@ G_M26918_IG08: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 ; byrRegs -[x0 x24] sxtw w22, w23 cmp w22, #1
- bgt G_M26918_IG05
+ ble G_M26918_IG17
;; size=44 bbWeight=1.92 PerfScore 17.31
-G_M26918_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x21] - b G_M26918_IG14 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M26918_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz - ; byrRegs +[x21] - cmp w22, #2 - beq G_M26918_IG13 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz - cmp w22, #3 - beq G_M26918_IG17 - cmp w22, w20 - bhi G_M26918_IG21 - tbz w22, #31, G_M26918_IG12 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - mov x0, x1 - ; gcrRegs +[x0] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0] - ;; size=56 bbWeight=0.92 PerfScore 10.62 -G_M26918_IG12: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - mov x0, x21 - ; byrRegs +[x0] - mov w1, w22 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; byrRegs -[x0 x21] - b G_M26918_IG14 - ;; size=32 bbWeight=0.92 PerfScore 6.92 -G_M26918_IG13: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz - ; byrRegs +[x21]
+G_M26918_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + b G_M26918_IG05 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M26918_IG15: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
add x22, x21, #4 ; byrRegs +[x22] ldr wzr, [x21] ldr w0, [x21] ldr w1, [x22] cmp w0, w1
- bhi G_M26918_IG15
+ bls G_M26918_IG17
;; size=24 bbWeight=0.08 PerfScore 0.85
-G_M26918_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x21-x22] - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x40 - ret lr - ;; size=20 bbWeight=1 PerfScore 5.00 -G_M26918_IG15: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, gcvars, byref - ; byrRegs +[x21-x22]
+G_M26918_IG16: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
cmp x21, x22 cset x0, ne movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) @@ -249,26 +254,32 @@ G_M26918_IG15: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=000 ldr w1, [x22] str w1, [x21] str w0, [x22]
- b G_M26918_IG14 - ;; size=48 bbWeight=0.04 PerfScore 0.65 -G_M26918_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=44 bbWeight=0.04 PerfScore 0.61 +G_M26918_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21-x22]
+ ldp x23, x24, [sp, #0x30] + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x40 + ret lr + ;; size=20 bbWeight=1 PerfScore 5.00 +G_M26918_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M26918_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M26918_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
; byrRegs +[x21] cmp w20, #2
- bls G_M26918_IG16
+ bls G_M26918_IG18
add x20, x21, #8 ; byrRegs +[x20]
- add x19, x21, #4 - ; byrRegs +[x19]
+ add x22, x21, #4 + ; byrRegs +[x22]
ldr wzr, [x21] ldr w0, [x21]
- ldr w1, [x19]
+ ldr w1, [x22]
cmp w0, w1
- bls G_M26918_IG18 - cmp x21, x19
+ bls G_M26918_IG20 + cmp x21, x22
cset x0, ne movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) movk x1, #0xD1FFAB1E LSL #16 @@ -276,15 +287,15 @@ G_M26918_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b ldr x1, [x1] ...

+28 (+4.64%) : 395309.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -21,24 +21,25 @@ ; V09 tmp5 [V09,T07] ( 3, 0 ) ubyte -> x1 "Inline stloc first use temp" ;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V12 tmp8 [V12,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V12 tmp8 [V12,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V13 tmp9 [V13,T11] ( 2, 0 ) int -> x0 "argument with side effect" ; V14 tmp10 [V14,T08] ( 2, 0 ) ref -> x19 single-def "arg temp" ; V15 tmp11 [V15,T03] ( 3, 0 ) ref -> x0 "argument with side effect" ; V16 tmp12 [V16,T12] ( 2, 0 ) int -> x0 "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M10785_IG12 cmp x20, x19 @@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov w0, #1 ;; size=16 bbWeight=1 PerfScore 3.00 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- 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=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ldr x0, [x19, #0x30] cmn x0, #1 @@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x19, #0x18] cmp x0, x1 bne G_M10785_IG12
+ ldr x0, [x20, #0x20] + ldr x1, [x19, #0x20] + cmp x0, x1 + cset x21, eq
b G_M10785_IG14
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x20 ; gcrRegs +[x0] @@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2, #0x10] ;; size=40 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -126,10 +134,11 @@ G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2] ;; size=84 bbWeight=0 PerfScore 0.00 G_M10785_IG10: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x0, [x20, #0x28] @@ -148,24 +157,22 @@ G_M10785_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00 G_M10785_IG13: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00 -G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - ldr x0, [x20, #0x20] - ldr x1, [x19, #0x20] - cmp x0, x1 - cset x0, eq - uxtb w0, w0 - ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + uxtb w0, w21 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG15: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20] ldr x1, [x19] cmp x0, x1 @@ -254,7 +261,7 @@ G_M10785_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M10785_IG02 ;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 604, prolog size 12, PerfScore 9.50, instruction count 151, allocated bytes for code 604 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 632, prolog size 16, PerfScore 12.50, instruction count 158, allocated bytes for code 632 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -265,7 +272,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
+ Function Length : 158 (0x0009e) Actual length = 632 (0x000278)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -288,10 +295,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.osx.arm64.Release.mch

-40 (-27.03%) : 19575.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-40 (-27.03%) : 145484.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-20 (-3.65%) : 82007.dasm - System.ComponentModel.Composition.CompositionResultOfTTest:ValueSingleValueAsErrorsArgumentShouldThrowComposition():this (FullOpts)

@@ -10,43 +10,41 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.ComponentModel.Composition.CompositionResultOfTTest> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.ComponentModel.Composition.Expectations+<GetEnumValues>d__24`1[int]>
-; V02 loc1 [V02,T11] ( 7, 10 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>> -; V03 loc2 [V03,T09] ( 3, 12 ) int -> x22 -; V04 loc3 [V04,T03] ( 4, 16 ) ref -> x23 class-hnd exact <System.ComponentModel.Composition.CompositionResultOfTTest+<>c__DisplayClass32_0>
+; V02 loc1 [V02,T10] ( 7, 10 ) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>> +; V03 loc2 [V03,T08] ( 3, 12 ) int -> x21 +; V04 loc3 [V04,T03] ( 4, 16 ) ref -> x22 class-hnd exact <System.ComponentModel.Composition.CompositionResultOfTTest+<>c__DisplayClass32_0>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ComponentModel.Composition.CompositionResultOfTTest+<>c__DisplayClass32_0>
-; V07 tmp2 [V07,T02] ( 3, 24 ) ref -> x24 class-hnd exact "dup spill" <int[]> -; V08 tmp3 [V08,T01] ( 4, 32 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Action> -; V09 tmp4 [V09,T12] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.Expectations+<GetEnumValues>d__24`1[int]> -; V10 tmp5 [V10,T06] ( 2, 16 ) ref -> x2 class-hnd "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T01] ( 3, 24 ) ref -> x23 class-hnd exact "dup spill" <int[]> +; V08 tmp3 [V08,T00] ( 4, 32 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Action> +; V09 tmp4 [V09,T11] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.Expectations+<GetEnumValues>d__24`1[int]> +; V10 tmp5 [V10,T04] ( 2, 16 ) ref -> x2 class-hnd "dup spill" <<unknown class>>
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref
-; V12 tmp7 [V12,T04] ( 4, 16 ) ref -> x2
+; V12 tmp7 [V12,T06] ( 4, 14 ) ref -> x2
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ComponentModel.Composition.CompositionResult`1[System.String]>
-; V14 tmp9 [V14,T00] ( 5, 40 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V15 tmp10 [V15,T07] ( 2, 16 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
+; V14 tmp9 [V14,T02] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V15 tmp10 [V15,T12] ( 2, 8 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.String>
-; V17 tmp12 [V17,T08] ( 2, 16 ) ref -> x15 class-hnd "Inlining Arg" <<unknown class>>
+; V17 tmp12 [V17,T05] ( 2, 16 ) ref -> x15 class-hnd "Inlining Arg" <<unknown class>>
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ; V19 tmp14 [V19,T13] ( 2, 8 ) ref -> x15 "field V13._errors (fldOffset=0x0)" P-INDEP
-;* V20 tmp15 [V20,T16] ( 0, 0 ) ref -> zero-ref "field V13._value (fldOffset=0x8)" P-INDEP -; V21 PSPSym [V21,T17] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V22 cse0 [V22,T10] ( 7, 11 ) long -> x19 multi-def "CSE - aggressive"
+;* V20 tmp15 [V20,T15] ( 0, 0 ) ref -> zero-ref "field V13._value (fldOffset=0x8)" P-INDEP +; V21 PSPSym [V21,T16] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" +; V22 cse0 [V22,T09] ( 7, 11 ) long -> x19 multi-def "CSE - aggressive"
; V23 cse1 [V23,T14] ( 2, 5 ) long -> x20 hoist "CSE - aggressive"
-; V24 cse2 [V24,T15] ( 2, 5 ) long -> x21 hoist "CSE - aggressive" -; V25 cse3 [V25,T05] ( 4, 16 ) long -> x25 "CSE - aggressive"
+; V24 cse2 [V24,T07] ( 4, 12 ) long -> x24 "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M16899_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40]
mov fp, sp
- add x1, sp, #96 - str x1, [fp, #0x20] // [V21 PSPSym] - ;; size=32 bbWeight=1 PerfScore 7.00
+ add x1, sp, #80 + str x1, [fp, #0x18] // [V21 PSPSym] + ;; size=28 bbWeight=1 PerfScore 6.00
G_M16899_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -71,10 +69,10 @@ G_M16899_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x1 ; gcrRegs -[x19] ; gcr arg pop 0
- str x0, [fp, #0x18] // [V02 loc1]
+ str x0, [fp, #0x10] // [V02 loc1]
; GC ptr vars +{V02} ;; size=64 bbWeight=1 PerfScore 13.50
-G_M16899_IG03: ; bbWeight=1, gcVars=0000000000000800 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16899_IG03: ; bbWeight=1, gcVars=0000000000000400 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 movk x19, #1 LSL #32 @@ -83,54 +81,55 @@ G_M16899_IG03: ; bbWeight=1, gcVars=0000000000000800 {V02}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M16899_IG06
+ cbz w0, G_M16899_IG07
movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #1 LSL #32
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #1 LSL #32 - ;; size=52 bbWeight=1 PerfScore 10.00
+ ;; size=40 bbWeight=1 PerfScore 8.50
G_M16899_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V02 loc1]
+ ldr x0, [fp, #0x10] // [V02 loc1]
; gcrRegs +[x0] add x11, x19, #8 ldr x1, [x11] blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w22, w0
+ sxtw w21, w0
mov x0, x20 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x23, x0 - ; gcrRegs +[x23] - mov x0, x21 - ; gcrRegs -[x0] - mov x1, #1 - bl CORINFO_HELP_NEWARR_1_VC - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x24, x0 - ; gcrRegs +[x24] - str w22, [x24, #0x10] - movz x25, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x25, #0xD1FFAB1E LSL #16 - movk x25, #1 LSL #32 - ldr x2, [x25] - ; gcrRegs +[x2] - cbnz x2, G_M16899_IG05
+ mov x22, x0 + ; gcrRegs +[x22]
movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
+ mov x1, #1 + bl CORINFO_HELP_NEWARR_1_VC + ; gcrRegs +[x0] + ; gcr arg pop 0 + mov x23, x0 + ; gcrRegs +[x23] + str w21, [x23, #0x10] + movz x24, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x24, #0xD1FFAB1E LSL #16 + movk x24, #1 LSL #32 + ldr x2, [x24] + ; gcrRegs +[x2] + cbnz x2, G_M16899_IG06 + ;; size=80 bbWeight=4 PerfScore 76.00 +G_M16899_IG05: ; bbWeight=2, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x2] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x2] +[x0]
+ ; gcrRegs +[x0]
; gcr arg pop 0 mov x2, x0 ; gcrRegs +[x2]
- ldr x15, [x25, #-0x08]
+ ldr x15, [x24, #-0x08]
; gcrRegs +[x15] add x14, x2, #8 ; byrRegs +[x14] @@ -141,14 +140,14 @@ G_M16899_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x14, #0xD1FFAB1E LSL #16 movk x14, #1 LSL #32 str x14, [x2, #0x18]
- mov x14, x25
+ mov x14, x24
mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=132 bbWeight=4 PerfScore 120.00 -G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=0000 {}, byref, isz - mov x1, x24
+ ;; size=60 bbWeight=2 PerfScore 24.00 +G_M16899_IG06: ; bbWeight=4, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=0000 {}, byref, isz + mov x1, x23
; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -158,16 +157,16 @@ G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=00 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x1-x2 x24] +[x0]
+ ; gcrRegs -[x1-x2 x23] +[x0]
; gcr arg pop 0 mov x15, x0 ; gcrRegs +[x15]
- add x14, x23, #8
+ add x14, x22, #8
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- str xzr, [x23, #0x10]
+ str xzr, [x22, #0x10]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -178,16 +177,16 @@ G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=00 ; gcrRegs +[x1] add x14, x1, #8 ; byrRegs +[x14]
- mov x15, x23
+ mov x15, x22
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x23]
+ ; gcrRegs -[x0 x15 x22]
; byrRegs -[x14] movz x0, #0xD1FFAB1E // code for <unknown method> movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 str x0, [x1, #0x18]
- mov w0, w22
+ mov w0, w21
movz x2, #0xD1FFAB1E // code for System.UnitTesting.CompositionAssert:ThrowsError(int,System.Action) movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -195,7 +194,7 @@ G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=00 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V02 loc1]
+ ldr x0, [fp, #0x10] // [V02 loc1]
; gcrRegs +[x0] mov x11, x19 ldr x1, [x11] @@ -204,8 +203,8 @@ G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=00 ; gcr arg pop 0 cbnz w0, G_M16899_IG04 ;; size=144 bbWeight=4 PerfScore 126.00
-G_M16899_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V02 loc1]
+G_M16899_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x10] // [V02 loc1]
; gcrRegs +[x0] add x11, x19, #16 ldr x1, [x11] @@ -214,59 +213,56 @@ G_M16899_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 6.50
-G_M16899_IG07: ; bbWeight=1, epilog, nogc, extend - ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28]
...

+40 (+3.65%) : 35913.dasm - System.Collections.Generic.GenericArraySortHelper1[DryIoc.ServiceRegistrationInfo]:IntroSort(System.Span1[DryIoc.ServiceRegistrationInfo],int) (FullOpts)

@@ -9,8 +9,8 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[DryIoc.ServiceRegistrationInfo]>
-; V01 arg1 [V01,T03] ( 7, 19 ) int -> x20 -; V02 loc0 [V02,T01] ( 15, 29 ) int -> x22
+; V01 arg1 [V01,T04] ( 7, 19 ) int -> x20 +; V02 loc0 [V02,T00] ( 16, 33 ) int -> x22
; V03 loc1 [V03,T07] ( 3, 12 ) int -> x23 ; V04 loc2 [V04,T14] ( 13, 6.50) byref -> x21 single-def ; V05 loc3 [V05,T15] ( 13, 6.50) byref -> x22 single-def @@ -72,7 +72,7 @@ ;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V62 tmp54 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V64 tmp56 [V64,T00] ( 4, 32 ) int -> x22 "Inlining Arg"
+; V64 tmp56 [V64,T01] ( 4, 32 ) int -> x22 "Inlining Arg"
;* V65 tmp57 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[DryIoc.ServiceRegistrationInfo]> ; V66 tmp58 [V66,T05] ( 2, 16 ) byref -> x24 "Inlining Arg" ;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -131,7 +131,7 @@ ; V120 tmp112 [V120,T11] ( 2, 8 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP ; V121 tmp113 [V121,T10] ( 2, 8 ) byref -> x0 "field V65._reference (fldOffset=0x0)" P-INDEP ; V122 tmp114 [V122,T12] ( 2, 8 ) int -> x1 "field V65._length (fldOffset=0x8)" P-INDEP
-; V123 cse0 [V123,T04] ( 24, 16.50) ref -> x1 multi-def "CSE - aggressive"
+; V123 cse0 [V123,T03] ( 27, 22.50) ref -> x1 multi-def "CSE - aggressive"
; V124 cse1 [V124,T09] ( 3, 12 ) long -> x0 "CSE - aggressive" ; ; Lcl frame size = 0 @@ -182,15 +182,31 @@ G_M32486_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, G_M32486_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz sxtw w22, w21 cmp w21, #1
- ble G_M32486_IG22
+ ble G_M32486_IG24
;; size=12 bbWeight=1 PerfScore 2.00 G_M32486_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w22, #16
- ble G_M32486_IG11 - cbz w20, G_M32486_IG21
+ ble G_M32486_IG13 + cbz w20, G_M32486_IG23
sub w20, w20, #1 cmp w22, w21
- bhi G_M32486_IG24
+ bhi G_M32486_IG26 + tbz w22, #31, G_M32486_IG09 + ;; size=28 bbWeight=4 PerfScore 22.00 +G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + movz x1, #8 + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + mov x0, x1 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0] + ;; size=36 bbWeight=2 PerfScore 15.00 +G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w1, w22 mov x0, x19 ; byrRegs +[x0] @@ -207,14 +223,14 @@ G_M32486_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by add x1, x0, w22, UXTW mov w2, w21 cmp x1, x2
- bhi G_M32486_IG24
+ bhi G_M32486_IG26
mov x1, #24 mul x0, x0, x1 add x24, x19, x0 ; byrRegs +[x24]
- tbz w22, #31, G_M32486_IG09 - ;; size=100 bbWeight=4 PerfScore 80.00 -G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ tbz w22, #31, G_M32486_IG11 + ;; size=76 bbWeight=4 PerfScore 62.00 +G_M32486_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -227,7 +243,7 @@ G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=2 PerfScore 15.00
-G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M32486_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
mov x0, x24 ; byrRegs +[x0] sxtw w1, w22 @@ -242,14 +258,14 @@ G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 cmp w22, #1 bgt G_M32486_IG07 ;; size=44 bbWeight=4 PerfScore 36.00
-G_M32486_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32486_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19] cmp w22, #2
- bne G_M32486_IG13
+ bne G_M32486_IG15
add x22, x19, #24 ; byrRegs +[x22] ldrsb wzr, [x19] @@ -263,9 +279,9 @@ G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] sub w0, w1, w0 cmp w0, #0
- ble G_M32486_IG22
+ ble G_M32486_IG24
cmp x19, x22
- bne G_M32486_IG12
+ bne G_M32486_IG14
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -278,7 +294,7 @@ G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, blr x2 ; gcrRegs -[x0] ;; size=88 bbWeight=0.50 PerfScore 14.00
-G_M32486_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
+G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
ldp x0, x1, [x19] ; gcrRegs +[x0-x1] ldr x2, [x19, #0x10] @@ -311,14 +327,14 @@ G_M32486_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14 x22]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19] cmp w22, #3
- bne G_M32486_IG19
+ bne G_M32486_IG21
cmp w21, #2
- bls G_M32486_IG23
+ bls G_M32486_IG25
add x21, x19, #48 ; byrRegs +[x21] add x22, x19, #24 @@ -334,9 +350,9 @@ G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] sub w0, w1, w0 cmp w0, #0
- ble G_M32486_IG15
+ ble G_M32486_IG17
cmp x19, x22
- bne G_M32486_IG14
+ bne G_M32486_IG16
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -349,7 +365,7 @@ G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, blr x2 ; gcrRegs -[x0] ;; size=100 bbWeight=0.50 PerfScore 15.00
-G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp x0, x1, [x19] ; gcrRegs +[x0-x1] ldr x2, [x19, #0x10] @@ -382,7 +398,7 @@ G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 ; gcrRegs -[x2 x15] ; byrRegs -[x14] ;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
+G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
ldr x0, [x21] ; gcrRegs +[x0] ldr x1, [x19] @@ -393,9 +409,9 @@ G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 ; gcrRegs -[x0] sub w0, w1, w0 cmp w0, #0
- ble G_M32486_IG17
+ ble G_M32486_IG19
cmp x19, x21
- bne G_M32486_IG16
+ bne G_M32486_IG18
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -408,7 +424,7 @@ G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 blr x2 ; gcrRegs -[x0] ;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp x0, x1, [x19] ; gcrRegs +[x0-x1] ldr x2, [x19, #0x10] @@ -442,7 +458,7 @@ G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 ; gcrRegs -[x2 x15] ; byrRegs -[x14] ;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M32486_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
ldr x0, [x21] ; gcrRegs +[x0] ldr x1, [x22] @@ -453,9 +469,9 @@ G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 ; gcrRegs -[x0] sub w0, w1, w0 cmp w0, #0
- ble G_M32486_IG22
+ ble G_M32486_IG24
cmp x22, x21
- bne G_M32486_IG18
+ bne G_M32486_IG20
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -468,7 +484,7 @@ G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 blr x2 ; gcrRegs -[x0] ;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
+G_M32486_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
ldp x0, x1, [x22] ; gcrRegs +[x0-x1] ldr x2, [x22, #0x10] @@ -501,13 +517,13 @@ G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14 x21]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M32486_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19] cmp w22, w21
- bhi G_M32486_IG24 - tbz w22, #31, G_M32486_IG20
+ bhi G_M32486_IG26 + tbz w22, #31, G_M32486_IG22
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 ...

+32 (+4.08%) : 10107.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -97,95 +97,73 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=84 bbWeight=0.50 PerfScore 12.25 -G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=88 bbWeight=0.50 PerfScore 12.50 +G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M10501_IG11
+ ble G_M10501_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M10501_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M10501_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M10501_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M10501_IG10
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M10501_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M10501_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M10501_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M10501_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M10501_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M10501_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #1 LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -198,28 +176,32 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M10501_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M10501_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #1 LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -229,22 +211,38 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M10501_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M10501_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M10501_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M10501_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M10501_IG17
...

+36 (+4.64%) : 97812.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)

@@ -12,41 +12,43 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V02 loc1 [V02,T03] ( 3, 9 ) ref -> x19 class-hnd exact single-def <<unknown class>> ; V03 loc2 [V03 ] ( 8, 14 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x21 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
+; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x23 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 7, 14 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp2 [V07,T07] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp5 [V10,T09] ( 4, 3.50) ref -> x2
+; V10 tmp5 [V10,T11] ( 4, 3.50) ref -> x2
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0> ; V12 tmp7 [V12,T00] ( 4, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>> ; V13 tmp8 [V13,T05] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T12] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V18 tmp13 [V18,T08] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> -; V19 tmp14 [V19,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V18 tmp13 [V18,T10] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> +; V19 tmp14 [V19,T15] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "V18.[000..008)"
-; V22 tmp17 [V22,T13] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
+; V22 tmp17 [V22,T14] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "V18.[012..016)" ;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "V18.[016..020)" ;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V27 tmp22 [V27,T15] ( 2, 0 ) ref -> x0 "argument with side effect" -; V28 tmp23 [V28,T16] ( 2, 0 ) ref -> x1 "argument with side effect" -; V29 cse0 [V29,T04] ( 3, 6 ) long -> x20 "CSE - aggressive" -; V30 cse1 [V30,T10] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive" -; V31 cse2 [V31,T11] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V27 tmp22 [V27,T16] ( 2, 0 ) ref -> x0 "argument with side effect" +; V28 tmp23 [V28,T17] ( 2, 0 ) ref -> x1 "argument with side effect" +; V29 cse0 [V29,T07] ( 2, 5 ) long -> x21 hoist "CSE - aggressive" +; V30 cse1 [V30,T08] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" +; V31 cse2 [V31,T04] ( 3, 6 ) long -> x20 "CSE - aggressive" +; V32 cse3 [V32,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 88 G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x68]
- str x21, [sp, #0x78]
+ stp x21, x22, [sp, #0x78] + str x23, [sp, #0x88]
mov fp, sp add x9, fp, #24 movi v16.16b, #0 @@ -55,7 +57,7 @@ G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, xzr, [x9, #0x40] mov x19, x0 ; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M64326_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -139,10 +141,10 @@ G_M64326_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs -[x0] ;; size=36 bbWeight=0.50 PerfScore 3.75 G_M64326_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #1 LSL #32 - ldr x2, [x21]
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldr x2, [x0]
; gcrRegs +[x2] cbnz x2, G_M64326_IG08 ;; size=20 bbWeight=1 PerfScore 5.50 @@ -155,7 +157,10 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- ldr x15, [x21, #-0x68]
+ movz x14, #0xD1FFAB1E + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #1 LSL #32 + ldr x15, [x14]
; gcrRegs +[x15] add x14, x2, #8 ; byrRegs +[x14] @@ -166,12 +171,14 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 movk x14, #0xD1FFAB1E LSL #16 movk x14, #1 LSL #32 str x14, [x2, #0x18]
- mov x14, x21
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #1 LSL #32
mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=80 bbWeight=0.50 PerfScore 7.25
G_M64326_IG08: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref mov x0, x19 ; gcrRegs +[x0] @@ -213,34 +220,36 @@ G_M64326_IG10: ; bbWeight=1, isz, extend ldr x2, [x2] blr x2 cbz w0, G_M64326_IG12
- ;; size=60 bbWeight=1 PerfScore 12.50
+ movz x21, #0xD1FFAB1E + movk x21, #0xD1FFAB1E LSL #16 + movk x21, #1 LSL #32 + movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #1 LSL #32 + ;; size=84 bbWeight=1 PerfScore 15.50
G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32
+ mov x0, x21
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #8
+ mov x23, x0 + ; gcrRegs +[x23] + add x14, x23, #8
; byrRegs +[x14] add x13, fp, #88 // [V03 loc2+0x18] ; byrRegs +[x13] bl CORINFO_HELP_ASSIGN_BYREF ; gcrRegs -[x0] bl CORINFO_HELP_ASSIGN_BYREF
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32
+ mov x0, x22
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; byrRegs -[x13-x14] add x14, x0, #8 ; byrRegs +[x14]
- mov x15, x21
+ mov x15, x23
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x21]
+ ; gcrRegs -[x15 x23]
; byrRegs -[x14] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -273,14 +282,15 @@ G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x2, [x2] blr x2 cbnz w0, G_M64326_IG11
- ;; size=168 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 116.00
G_M64326_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ldr x21, [sp, #0x78]
+ ldr x23, [sp, #0x88] + ldp x21, x22, [sp, #0x78]
ldp x19, x20, [sp, #0x68]
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -318,7 +328,7 @@ G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=104 bbWeight=0 PerfScore 0.00
-Total bytes of code 776, prolog size 36, PerfScore 223.00, instruction count 194, allocated bytes for code 776 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
+Total bytes of code 812, prolog size 40, PerfScore 221.25, instruction count 203, allocated bytes for code 812 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
; ============================================================ Unwind Info: @@ -329,7 +339,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 194 (0x000c2) Actual length = 776 (0x000308)
+ Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -337,9 +347,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ D1 11 save_reg X#4 Z#17 (0x11); str x23, [sp, #136] + E6 save_next
C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! - E4 end
+ 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
E4 end

realworld.run.osx.arm64.checked.mch

-8 (-0.77%) : 19300.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)

@@ -74,7 +74,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b cmp w1, #1 beq G_M39186_IG23 mov w19, wzr
- b G_M39186_IG35
+ b G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.50 G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz movn w1, #0 @@ -290,7 +290,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov w21, wzr ldr w11, [x0, #0x30] cmp w11, #0
- ble G_M39186_IG29
+ ble G_M39186_IG37
;; size=28 bbWeight=0.50 PerfScore 3.50 G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -300,11 +300,11 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs +[x11] ldr w1, [x11, #0x10] cmp w21, w1
- bhs G_M39186_IG30
+ bhs G_M39186_IG27
ldr x11, [x11, #0x08] ldr w1, [x11, #0x08] cmp w21, w1
- bhs G_M39186_IG31
+ bhs G_M39186_IG26
add x11, x11, #16 ; gcrRegs -[x11] ; byrRegs +[x11] @@ -320,10 +320,40 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M39186_IG34 - cbnz x20, G_M39186_IG27 - ;; size=80 bbWeight=4 PerfScore 116.00 -G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M39186_IG28 + ;; size=76 bbWeight=4 PerfScore 112.00 +G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20 x22] + mov w19, wzr + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + b G_M39186_IG38 + ;; size=32 bbWeight=0.50 PerfScore 4.50 +G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + brk_unix #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M39186_IG28: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x20 x22] + cbnz x20, G_M39186_IG33 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M39186_IG29: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] @@ -331,10 +361,22 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b ldr x2, [x1, #0x38] ldr x2, [x2] ldr x2, [x2, #0x38]
- cbz x2, G_M39186_IG32
+ cbz x2, G_M39186_IG31
;; size=24 bbWeight=2 PerfScore 30.00
-G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ b G_M39186_IG32 + ;; size=4 bbWeight=1.60 PerfScore 1.60 +G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref + mov x0, x1 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov x2, x0 + ;; size=24 bbWeight=0.40 PerfScore 1.40 +G_M39186_IG32: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x2 ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -345,7 +387,7 @@ G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b mov x20, x0 ; gcrRegs +[x20] ;; size=20 bbWeight=2 PerfScore 14.00
-G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19] ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -353,9 +395,20 @@ G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 { ldr x1, [x0, #0x38] ldr x1, [x1] ldr x11, [x1, #0x30]
- cbz x11, G_M39186_IG33
+ cbz x11, G_M39186_IG35
;; size=24 bbWeight=4 PerfScore 60.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref + b G_M39186_IG36 + ;; size=4 bbWeight=3.20 PerfScore 3.20 +G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov x11, x0 + ;; size=20 bbWeight=0.80 PerfScore 2.40 +G_M39186_IG36: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22 ; gcrRegs +[x0] ldr x1, [x11] @@ -374,7 +427,7 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 cmp w21, w14 blt G_M39186_IG24 ;; size=44 bbWeight=4 PerfScore 48.00
-G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -390,68 +443,17 @@ G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} sxtw w20, w0 mov w19, w20 ; gcrRegs -[x19]
- b G_M39186_IG35 - ;; size=36 bbWeight=0.50 PerfScore 3.75 -G_M39186_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - brk_unix #0 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M39186_IG32: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x22] - mov x0, x1 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov x2, x0 - b G_M39186_IG26 - ;; size=28 bbWeight=0.40 PerfScore 1.80 -G_M39186_IG33: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov x11, x0 - b G_M39186_IG28 - ;; size=24 bbWeight=0.80 PerfScore 3.20 -G_M39186_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20 x22] - ldr x19, [fp, #0x18] // [V00 this] - ; gcrRegs +[x19] - mov w20, wzr - mov x0, x19 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0 x19] - ; gcr arg pop 0 - mov w19, w20 - ;; size=36 bbWeight=0.50 PerfScore 4.50 -G_M39186_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.25 +G_M39186_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w19 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M39186_IG36: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V03 V24} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -459,10 +461,10 @@ G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs add x3, fp, #80 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V03 loc2] ; gcrRegs +[x0]
- cbz x0, G_M39186_IG39
+ cbz x0, G_M39186_IG42
movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 movk x19, #1 LSL #32 @@ -473,20 +475,20 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] add x3, fp, #80 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG44: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...

-4 (-0.15%) : 2215.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -23,24 +23,24 @@ ; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String> ; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28 ; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3 ; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]> ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1 ;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt" ;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg" ;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -67,13 +67,13 @@ ;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" ;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> -; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg" -; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> +; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg" +; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]> ; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg" ; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]> @@ -90,14 +90,14 @@ ;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> -; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> +; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP ;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP @@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2 bhi G_M4730_IG74
- cmp w1, #0 - cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w3, [x1, #0x08] cmp w3, w0 bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref ; byrRegs -[x27] add x1, x1, #16 @@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {}, beq G_M4730_IG67 b G_M4730_IG27 ;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89} str w1, [fp, #0x60] // [V10 loc6] mov w28, w2 @@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; GC ptr vars +{V89} ldr w28, [fp, #0x68] // [V07 loc3] ;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3] ; GC ptr vars -{V57} cmp w25, w26 @@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89} ; GC ptr vars +{V13} cbz x24, G_M4730_IG39 ;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26] ldr w26, [fp, #0x44] // [V90 tmp68] cbz w26, G_M4730_IG32 @@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g str w0, [x19, #0x18] b G_M4730_IG41 ;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27] ; GC ptr vars +{V13 V16 V89} b G_M4730_IG42 @@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; gcrRegs -[x26] b G_M4730_IG47 ;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26] ; GC ptr vars +{V13 V16 V89} ldr x2, [fp, #0x30] // [V13 loc9] @@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ; gcr arg pop 0 b G_M4730_IG06 ;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27] ; GC ptr vars +{V13 V16 V89} ldr x1, [fp, #0x30] // [V13 loc9] @@ -1212,7 +1211,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2688, prolog size 48, PerfScore 6977.50, instruction count 672, allocated bytes for code 2688 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2684, prolog size 48, PerfScore 6975.50, instruction count 671, allocated bytes for code 2684 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -1223,7 +1222,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 672 (0x002a0) Actual length = 2688 (0x000a80)
+ Function Length : 671 (0x0029f) Actual length = 2684 (0x000a7c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.13%) : 16555.dasm - Microsoft.CodeAnalysis.CommonReferenceManager2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager2+BoundInputAssembly[System.Canon,System.Canon][],System.Canon[],System.Collections.Immutable.ImmutableArray`1[System.Canon],int):this (FullOpts)

@@ -17,7 +17,7 @@ ; V06 loc1 [V06,T15] ( 16, 610 ) ref -> [fp+0x70] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]> ; V07 loc2 [V07,T65] ( 8, 28 ) int -> x26 single-def ; V08 loc3 [V08,T64] ( 8, 31 ) int -> x27
-; V09 loc4 [V09,T66] ( 6, 28 ) ref -> [fp+0x68] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V09 loc4 [V09,T66] ( 6, 44 ) ref -> [fp+0x68] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V10 loc5 [V10,T71] ( 2, 16 ) ref -> [fp+0x60] class-hnd spill-single-def <System.__Canon> ; V11 loc6 [V11,T37] ( 4, 112 ) ubyte -> [fp+0xDC] ;* V12 loc7 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -66,8 +66,8 @@ ; V55 tmp33 [V55,T02] ( 6, 768 ) byref -> x7 "Inlining Arg" ; V56 tmp34 [V56,T16] ( 8, 512 ) int -> registers "Inline stloc first use temp" ;* V57 tmp35 [V57 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
-; V58 tmp36 [V58,T48] ( 3, 48 ) byref -> x14 "Inlining Arg" -; V59 tmp37 [V59,T62] ( 4, 32 ) int -> x15 "Inline stloc first use temp"
+; V58 tmp36 [V58,T48] ( 3, 48 ) byref -> x4 "Inlining Arg" +; V59 tmp37 [V59,T62] ( 4, 32 ) int -> x6 "Inline stloc first use temp"
; V60 tmp38 [V60,T84] ( 3, 4 ) ref -> x22 single-def "field V03.array (fldOffset=0x0)" P-INDEP ; V61 tmp39 [V61,T29] ( 6, 192 ) ref -> [fp+0x40] "field V12.AssemblySymbol (fldOffset=0x0)" P-INDEP ; V62 tmp40 [V62,T23] ( 8, 256 ) int -> [fp+0xC4] "field V12.DefinitionIndex (fldOffset=0x8)" P-INDEP @@ -101,7 +101,7 @@ ; V90 tmp68 [V90,T51] ( 3, 48 ) ref -> x6 "argument with side effect" ; V91 tmp69 [V91,T52] ( 3, 48 ) ref -> x14 "arr expr" ; V92 tmp70 [V92,T55] ( 3, 48 ) int -> x15 "index expr"
-; V93 tmp71 [V93,T53] ( 3, 48 ) byref -> x1 "BlockOp address local"
+; V93 tmp71 [V93,T53] ( 3, 48 ) byref -> x6 "BlockOp address local"
; V94 tmp72 [V94,T106] ( 2, 0 ) ref -> x0 single-def "argument with side effect" ; V95 tmp73 [V95,T107] ( 2, 0 ) ref -> x0 single-def "argument with side effect" ; V96 tmp74 [V96,T93] ( 2, 4 ) ref -> x0 single-def "argument with side effect" @@ -123,7 +123,7 @@ ; V112 cse13 [V112,T69] ( 3, 24 ) int -> x1 "CSE - moderate" ; V113 cse14 [V113,T67] ( 3, 24 ) ref -> x1 "CSE - moderate" ; V114 cse15 [V114,T70] ( 3, 24 ) int -> x1 "CSE - moderate"
-; V115 cse16 [V115,T68] ( 3, 24 ) ref -> x11 "CSE - moderate"
+; V115 cse16 [V115,T68] ( 3, 24 ) ref -> x1 "CSE - moderate"
; V116 cse17 [V116,T88] ( 4, 5.12) long -> [fp+0x98] spill-single-def "CSE - moderate" ; V117 cse18 [V117,T85] ( 3, 6 ) long -> [fp+0x90] spill-single-def "CSE - moderate" ; V118 cse19 [V118,T97] ( 3, 3.84) int -> x1 "CSE - conservative" @@ -320,7 +320,7 @@ G_M32652_IG12: ; bbWeight=0.40, gcVars=00000000000000000000000010048002 { ;; size=28 bbWeight=0.40 PerfScore 2.00 G_M32652_IG13: ; bbWeight=2, gcVars=00000000000000040000000010048002 {V00 V05 V06 V09 V122}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref ; GC ptr vars -{V18} +{V09 V66}
- b G_M32652_IG23
+ b G_M32652_IG58
;; size=4 bbWeight=2 PerfScore 2.00 G_M32652_IG14: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz ldr x0, [x23, #0x38] @@ -386,7 +386,7 @@ G_M32652_IG17: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=10 ldr w4, [x4, #0x08] ; gcrRegs -[x4] cmp w1, w4
- bne G_M32652_IG25
+ bne G_M32652_IG28
add w1, w1, #1 movz x4, #0xD1FFAB1E // code for System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]:Grow(int):this movk x4, #0xD1FFAB1E LSL #16 @@ -409,7 +409,7 @@ G_M32652_IG18: ; bbWeight=8, gcrefRegs=580009 {x0 x3 x19 x20 x22}, byrefR ldr w15, [x0, #0x14] ldr w12, [x14, #0x08] cmp w15, w12
- bhs G_M32652_IG27
+ bhs G_M32652_IG29
ubfiz x15, x15, #4, #32 add x15, x15, #16 add x4, x14, x15 @@ -457,41 +457,64 @@ G_M32652_IG21: ; bbWeight=64, gcrefRegs=580001 {x0 x19 x20 x22}, byrefReg cbz w1, G_M32652_IG22 ldr w3, [x0, #0x18] cmp w3, #0
- bgt G_M32652_IG28
+ bgt G_M32652_IG31
;; size=20 bbWeight=64 PerfScore 480.00 G_M32652_IG22: ; bbWeight=8, gcVars=00000000000000040000000010048002 {V00 V05 V06 V09 V122}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref, isz ; GC ptr vars -{V123} ldr w1, [fp, #0xDC] // [V11 loc6]
- cbnz w1, G_M32652_IG55
+ cbz w1, G_M32652_IG58
;; size=8 bbWeight=8 PerfScore 24.00
-G_M32652_IG23: ; bbWeight=16, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M32652_IG23: ; bbWeight=2, gcVars=00000000000000040000000010008002 {V00 V05 V06 V09}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x0, [fp, #0x68] // [V09 loc4] - ; gcrRegs +[x0] - movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #1 LSL #32 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbnz w0, G_M32652_IG14 - ;; size=28 bbWeight=16 PerfScore 136.00 -G_M32652_IG24: ; bbWeight=2, gcVars=00000000000000040000000010008002 {V00 V05 V06 V09}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref
; GC ptr vars -{V122}
+ ldr w1, [fp, #0x8C] // [V125 cse26] + mov w11, wzr + cmp w26, #0 + ble G_M32652_IG63 + cmp w1, w26 + ccmp w28, w26, nc, ge + blt G_M32652_IG60 + ;; size=28 bbWeight=2 PerfScore 12.00 +G_M32652_IG24: ; bbWeight=15.84, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz + add x14, x19, #16 + ; byrRegs +[x14] + ldr x15, [x14, w11, UXTW #3] + ; gcrRegs +[x15] + cbz x15, G_M32652_IG26 + ;; size=12 bbWeight=15.84 PerfScore 71.28 +G_M32652_IG25: ; bbWeight=7.92, gcrefRegs=588000 {x15 x19 x20 x22}, byrefRegs=1000000 {x24}, byref + ; byrRegs -[x14] + ubfiz x14, x11, #4, #32 + add x14, x14, #16 + add x14, x20, x14 + ; byrRegs +[x14] + bl CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[x15] + ; byrRegs -[x14] + ;; size=16 bbWeight=7.92 PerfScore 23.76 +G_M32652_IG26: ; bbWeight=15.84, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz + add w11, w11, #1 + cmp w11, w26 + blt G_M32652_IG24 + ;; size=12 bbWeight=15.84 PerfScore 31.68 +G_M32652_IG27: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref
b G_M32652_IG63 ;; size=4 bbWeight=2 PerfScore 2.00
-G_M32652_IG25: ; bbWeight=4, gcVars=00000000000001040000000010048002 {V00 V05 V06 V09 V63 V122}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref
+G_M32652_IG28: ; bbWeight=4, gcVars=00000000000001040000000010048002 {V00 V05 V06 V09 V63 V122}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref
; gcrRegs +[x0] ; GC ptr vars +{V18 V63 V122} ldr x3, [fp, #0x38] // [V63 tmp41] ; gcrRegs +[x3] b G_M32652_IG18 ;; size=8 bbWeight=4 PerfScore 12.00
-G_M32652_IG26: ; bbWeight=0, gcVars=00000000000000040000000010008002 {V00 V05 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32652_IG29: ; bbWeight=0, gcVars=00000000000000040000000010008002 {V00 V05 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x3 x19-x20 x22] ; byrRegs -[x24] ; GC ptr vars -{V18 V63 V122}
+ bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M32652_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -500,11 +523,7 @@ G_M32652_IG26: ; bbWeight=0, gcVars=00000000000000040000000010008002 {V00 ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M32652_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M32652_IG28: ; bbWeight=32, gcVars=00000000000000040000000810048002 {V00 V05 V06 V09 V122 V123}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref, isz
+G_M32652_IG31: ; bbWeight=32, gcVars=00000000000000040000000810048002 {V00 V05 V06 V09 V122 V123}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref, isz
; gcrRegs +[x0 x19-x20 x22] ; byrRegs +[x24] ; GC ptr vars +{V18 V122 V123} @@ -518,17 +537,17 @@ G_M32652_IG28: ; bbWeight=32, gcVars=00000000000000040000000810048002 {V0 ; gcrRegs +[x2] mov w3, w1 cmp w3, w28
- bhs G_M32652_IG27
+ bhs G_M32652_IG29
ubfiz x0, x3, #4, #32 ; gcrRegs -[x0] add x4, x0, #16 str x4, [fp, #0xA8] // [V108 cse9] ldr x0, [x20, x4] ; gcrRegs +[x0]
- cbnz x0, G_M32652_IG29
+ cbnz x0, G_M32652_IG32
ldr w5, [fp, #0x8C] // [V125 cse26] cmp w3, w5
- bhs G_M32652_IG27
+ bhs G_M32652_IG29
add x0, x19, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -538,14 +557,14 @@ G_M32652_IG28: ; bbWeight=32, gcVars=00000000000000040000000810048002 {V0 ; byrRegs -[x0] ldr w3, [fp, #0xC4] // [V62 tmp40] ;; size=84 bbWeight=32 PerfScore 784.00
-G_M32652_IG29: ; bbWeight=32, gcrefRegs=580005 {x0 x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz - cbz x0, G_M32652_IG30
+G_M32652_IG32: ; bbWeight=32, gcrefRegs=580005 {x0 x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz + cbz x0, G_M32652_IG33
cmp x0, x2 ldr x0, [fp, #0x78] // [V05 loc0] beq G_M32652_IG21
- b G_M32652_IG23
+ b G_M32652_IG58
;; size=20 bbWeight=32 PerfScore 176.00
-G_M32652_IG30: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M32652_IG33: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
; gcrRegs -[x0] str w3, [fp, #0xC4] // [V62 tmp40] ldr x0, [fp, #0x80] // [V00 this] @@ -564,7 +583,7 @@ G_M32652_IG30: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefReg str w0, [fp, #0x14] // [TEMP_01] ldr w1, [fp, #0xC4] // [V62 tmp40] cmp w1, w25
- bhs G_M32652_IG27
+ bhs G_M32652_IG29
ldr x2, [fp, #0x20] // [V122 cse23] ; byrRegs +[x2] str w1, [fp, #0xC4] // [V62 tmp40] @@ -582,7 +601,7 @@ G_M32652_IG30: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefReg ; gcr arg pop 0 ldr w1, [fp, #0x14] // [TEMP_01] cmp w1, w0
- bne G_M32652_IG23
+ bne G_M32652_IG58
ldr w1, [fp, #0xC4] // [V62 tmp40] ldr x4, [fp, #0x40] // [V61 tmp39] ; gcrRegs +[x4] @@ -630,73 +649,73 @@ G_M32652_IG30: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefReg str w3, [fp, #0xD8] // [V16 loc11] mov w4, wzr cmp w3, #0
- ble G_M32652_IG50
+ ble G_M32652_IG53
ldr x5, [fp, #0x58] // [V15 loc10] ; gcrRegs +[x5]
- cbz x5, G_M32652_IG41
+ cbz x5, G_M32652_IG44
ldr w0, [x5, #0x08] cmp w0, w3
- blt G_M32652_IG34
+ blt G_M32652_IG37
;; size=232 bbWeight=32 PerfScore 2848.00
-G_M32652_IG31: ; bbWeight=253.44, gcrefRegs=580024 {x2 x5 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M32652_IG34: ; bbWeight=253.44, gcrefRegs=580024 {x2 x5 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
mov w0, w4 lsl x1, x0, #4 add x1, x1, #16 add x1, x5, x1 ; byrRegs +[x1] ldr w6, [x1, #0x08]
- tbz w6, #31, G_M32652_IG35
+ tbz w6, #31, G_M32652_IG38
;; size=24 bbWeight=253.44 PerfScore 1647.36
-G_M32652_IG32: ; bbWeight=126.72, gcrefRegs=580004 {x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M32652_IG35: ; bbWeight=126.72, gcrefRegs=580004 {x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
; gcrRegs -[x5] ; byrRegs -[x1] ldr w6, [x2, #0x10] cmp w4, w6 ...

+36 (+0.97%) : 19540.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)

@@ -16,26 +16,26 @@ ; V05 loc0 [V05,T35] ( 3, 5 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> ; V06 loc1 [V06,T07] ( 6, 13.50) ubyte -> x25 ; V07 loc2 [V07,T17] ( 5, 7.50) ubyte -> x26
-; V08 loc3 [V08 ] ( 13, 6.50) ref -> [fp+0x188] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V08 loc3 [V08 ] ( 13, 6.50) ref -> [fp+0x198] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V09 loc4 [V09,T25] ( 5, 6 ) ref -> x27 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V10 loc5 [V10,T30] ( 4, 5.50) ubyte -> [fp+0x184] spill-single-def -; V11 loc6 [V11,T16] ( 5, 7.50) ref -> [fp+0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V12 loc7 [V12,T31] ( 6, 5 ) ubyte -> [fp+0x180] -; V13 loc8 [V13,T20] ( 11, 6.50) ref -> [fp+0x30] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> -; V14 loc9 [V14 ] ( 12, 18.50) struct (32) [fp+0x160] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> -; V15 loc10 [V15,T64] ( 4, 2 ) ubyte -> x24 -; V16 loc11 [V16,T57] ( 5, 2.50) ref -> x26 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol> -; V17 loc12 [V17,T00] ( 17, 45.50) ref -> [fp+0x28] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V10 loc5 [V10,T30] ( 4, 5.50) ubyte -> [fp+0x194] spill-single-def +; V11 loc6 [V11,T16] ( 5, 7.50) ref -> [fp+0x48] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V12 loc7 [V12,T31] ( 6, 5 ) ubyte -> [fp+0x190] +; V13 loc8 [V13,T20] ( 11, 6.50) ref -> [fp+0x40] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> +; V14 loc9 [V14 ] ( 12, 18.50) struct (32) [fp+0x170] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> +; V15 loc10 [V15,T64] ( 4, 2 ) ubyte -> [fp+0x16C] +; V16 loc11 [V16,T57] ( 5, 2.50) ref -> [fp+0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol> +; V17 loc12 [V17,T00] ( 17, 45.50) ref -> [fp+0x30] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V18 loc13 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <Roslyn.Utilities.MultiDictionary`2+ValueSet[Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol]>
-; V19 loc14 [V19,T12] ( 3, 12 ) ubyte -> [fp+0x15C] spill-single-def -; V20 loc15 [V20,T26] ( 3, 6 ) ref -> [fp+0x20] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V21 loc16 [V21 ] ( 2, 4.50) ref -> [fp+0x150] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V19 loc14 [V19,T12] ( 3, 12 ) ubyte -> [fp+0x168] spill-single-def +; V20 loc15 [V20,T26] ( 3, 6 ) ref -> [fp+0x28] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V21 loc16 [V21 ] ( 2, 4.50) ref -> [fp+0x160] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V22 loc17 [V22,T38] ( 3, 4.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V23 loc18 [V23 ] ( 3, 4.50) ref -> [fp+0x148] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol> -; V24 loc19 [V24 ] ( 2, 4 ) ref -> [fp+0x140] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V23 loc18 [V23 ] ( 3, 4.50) ref -> [fp+0x158] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol> +; V24 loc19 [V24 ] ( 2, 4 ) ref -> [fp+0x150] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V25 loc20 [V25,T89] ( 3, 1.50) ubyte -> x27
-; V26 loc21 [V26 ] ( 6, 3 ) struct (32) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> -; V27 loc22 [V27,T58] ( 5, 2.50) ref -> x22 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V26 loc21 [V26 ] ( 6, 3 ) struct (32) [fp+0x130] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> +; V27 loc22 [V27,T58] ( 5, 2.50) ref -> x25 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V28 loc23 [V28,T90] ( 3, 1.50) int -> x28 single-def ;* V29 loc24 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]> ;* V30 loc25 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]> @@ -46,16 +46,16 @@ ; V35 tmp4 [V35,T14] ( 3, 8 ) int -> registers ; V36 tmp5 [V36,T15] ( 2, 8 ) ref -> x0 "CASTCLASS eval op1" ; V37 tmp6 [V37,T05] ( 5, 15 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V38 tmp7 [V38,T43] ( 3, 3 ) ref -> x25 class-hnd exact "dup spill" <System.Object[]>
+; V38 tmp7 [V38,T43] ( 3, 3 ) ref -> x23 class-hnd exact "dup spill" <System.Object[]>
; V39 tmp8 [V39,T70] ( 2, 2 ) ref -> x20 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.Location> ;* V40 tmp9 [V40 ] ( 0, 0 ) ref -> zero-ref single-def ;* V41 tmp10 [V41 ] ( 0, 0 ) ref -> zero-ref
-; V42 tmp11 [V42,T84] ( 3, 1.50) ref -> x22 -; V43 tmp12 [V43,T82] ( 2, 2 ) struct (32) [fp+0x100] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> -; V44 tmp13 [V44,T91] ( 3, 1.50) struct (32) [fp+0xE0] do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V42 tmp11 [V42,T84] ( 3, 1.50) ref -> x25 +; V43 tmp12 [V43,T82] ( 2, 2 ) struct (32) [fp+0x110] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> +; V44 tmp13 [V44,T91] ( 3, 1.50) struct (32) [fp+0xF0] do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
;* V45 tmp14 [V45 ] ( 0, 0 ) ref -> zero-ref ;* V46 tmp15 [V46 ] ( 0, 0 ) ref -> zero-ref single-def
-; V47 tmp16 [V47,T85] ( 3, 1.50) ref -> x22
+; V47 tmp16 [V47,T85] ( 3, 1.50) ref -> x23
; V48 tmp17 [V48,T44] ( 3, 3 ) ref -> x0 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> ;* V49 tmp18 [V49 ] ( 0, 0 ) ref -> zero-ref single-def ;* V50 tmp19 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> @@ -67,7 +67,7 @@ ; V56 tmp25 [V56,T45] ( 3, 3 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSharpRequiredLanguageVersion> ; V57 tmp26 [V57,T32] ( 5, 5 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Object[]> ; V58 tmp27 [V58,T73] ( 2, 2 ) ref -> x27 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Location>
-; V59 tmp28 [V59,T74] ( 2, 2 ) ref -> [fp+0x18] class-hnd spill-single-def "bubbling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V59 tmp28 [V59,T74] ( 2, 2 ) ref -> [fp+0x20] class-hnd spill-single-def "bubbling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbol>
; V60 tmp29 [V60,T60] ( 3, 2.25) long -> x1 "fgMakeTemp is creating a new local variable" ; V61 tmp30 [V61,T59] ( 2, 2 ) ref -> x0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> ;* V62 tmp31 [V62 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> @@ -79,27 +79,27 @@ ;* V68 tmp37 [V68 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" ; V69 tmp38 [V69,T61] ( 3, 2.25) long -> x3 "fgMakeTemp is creating a new local variable" ; V70 tmp39 [V70,T42] ( 4, 3.25) ref -> x0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V71 tmp40 [V71,T28] ( 2, 8 ) int -> x0 "Inline return value spill temp"
+; V71 tmp40 [V71,T28] ( 2, 4 ) int -> x0 "Inline return value spill temp"
;* V72 tmp41 [V72 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" ;* V73 tmp42 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> ;* V74 tmp43 [V74,T83] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> ;* V75 tmp44 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo> ; V76 tmp45 [V76,T46] ( 3, 3 ) ref -> x19 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo> ;* V77 tmp46 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V78 tmp47 [V78,T47] ( 3, 3 ) ref -> x23 class-hnd "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
+; V78 tmp47 [V78,T47] ( 3, 3 ) ref -> x21 class-hnd "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
;* V79 tmp48 [V79 ] ( 0, 0 ) ref -> zero-ref
-; V80 tmp49 [V80,T21] ( 6, 6 ) ref -> x21 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
+; V80 tmp49 [V80,T21] ( 6, 6 ) ref -> x23 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
;* V81 tmp50 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
-; V82 tmp51 [V82,T48] ( 3, 3 ) ref -> x24 class-hnd "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
+; V82 tmp51 [V82,T48] ( 3, 3 ) ref -> x19 class-hnd "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
;* V83 tmp52 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V84 tmp53 [V84,T09] ( 3, 12 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]]> ;* V85 tmp54 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V86 tmp55 [V86,T10] ( 3, 12 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]]> ;* V87 tmp56 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V88 tmp57 [V88,T03] ( 5, 16 ) ref -> [fp+0x10] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V88 tmp57 [V88,T03] ( 5, 16 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V89 tmp58 [V89,T04] ( 4, 16 ) ref -> x0 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V90 tmp59 [V90 ] ( 4, 8 ) struct (24) [fp+0xC8] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> -; V91 tmp60 [V91,T55] ( 3, 3 ) struct (32) [fp+0xA8] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V90 tmp59 [V90 ] ( 4, 8 ) struct (24) [fp+0xD8] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> +; V91 tmp60 [V91,T55] ( 3, 3 ) struct (32) [fp+0xB8] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
; V92 tmp61 [V92,T76] ( 2, 2 ) ref -> x3 class-hnd single-def "dup spill" <<unknown class>> ;* V93 tmp62 [V93 ] ( 0, 0 ) ref -> zero-ref single-def ;* V94 tmp63 [V94 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> @@ -110,25 +110,25 @@ ;* V99 tmp68 [V99 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> ;* V100 tmp69 [V100 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> ; V101 tmp70 [V101,T78] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V102 tmp71 [V102 ] ( 1, 0.50) ubyte -> [fp+0xA0] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V102 tmp71 [V102 ] ( 1, 0.50) ubyte -> [fp+0xB0] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V103 tmp72 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo> ; V104 tmp73 [V104,T49] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo> ;* V105 tmp74 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V106 tmp75 [V106,T50] ( 3, 3 ) ref -> x22 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
+; V106 tmp75 [V106,T50] ( 3, 3 ) ref -> x23 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
;* V107 tmp76 [V107 ] ( 0, 0 ) ref -> zero-ref single-def ; V108 tmp77 [V108,T22] ( 6, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic> ;* V109 tmp78 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
-; V110 tmp79 [V110,T51] ( 3, 3 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
+; V110 tmp79 [V110,T51] ( 3, 3 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
;* V111 tmp80 [V111 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V112 tmp81 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V113 tmp82 [V113,T52] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
+; V113 tmp82 [V113,T52] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
;* V114 tmp83 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo> ; V115 tmp84 [V115,T53] ( 3, 3 ) ref -> x25 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag> ;* V116 tmp85 [V116 ] ( 0, 0 ) ref -> zero-ref single-def ; V117 tmp86 [V117,T23] ( 6, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic> ;* V118 tmp87 [V118 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
-; V119 tmp88 [V119,T54] ( 3, 3 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]> -; V120 tmp89 [V120,T56] ( 3, 3 ) struct (32) [fp+0x80] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V119 tmp88 [V119,T54] ( 3, 3 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]> +; V120 tmp89 [V120,T56] ( 3, 3 ) struct (32) [fp+0x90] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
; V121 tmp90 [V121,T79] ( 2, 2 ) ref -> x3 class-hnd single-def "dup spill" <<unknown class>> ;* V122 tmp91 [V122 ] ( 0, 0 ) ref -> zero-ref single-def ;* V123 tmp92 [V123 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> @@ -145,16 +145,16 @@ ;* V134 tmp103 [V134 ] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP ;* V135 tmp104 [V135 ] ( 0, 0 ) int -> zero-ref "field V30.value (fldOffset=0x4)" P-INDEP ;* V136 tmp105 [V136,T98] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.hasValue (fldOffset=0x0)" P-INDEP
-; V137 tmp106 [V137,T97] ( 2, 1 ) int -> x22 single-def "field V50.value (fldOffset=0x4)" P-INDEP
+; V137 tmp106 [V137,T97] ( 2, 1 ) int -> x23 single-def "field V50.value (fldOffset=0x4)" P-INDEP
; V138 tmp107 [V138,T92] ( 3, 1.50) ubyte -> x1 "field V51.hasValue (fldOffset=0x0)" P-INDEP
-; V139 tmp108 [V139,T65] ( 4, 2 ) int -> x22 "field V51.value (fldOffset=0x4)" P-INDEP -; V140 tmp109 [V140 ] ( 4, 8 ) ref -> [fp+0xC8] do-not-enreg[X] addr-exposed "field V90.DiagnosticInfo (fldOffset=0x0)" P-DEP -; V141 tmp110 [V141 ] ( 4, 8 ) ref -> [fp+0xD0] do-not-enreg[X] addr-exposed "field V90.PrimaryDependency (fldOffset=0x8)" P-DEP -; V142 tmp111 [V142 ] ( 4, 8 ) ref -> [fp+0xD8] do-not-enreg[X] addr-exposed "field V90.SecondaryDependencies (fldOffset=0x10)" P-DEP
+; V139 tmp108 [V139,T65] ( 4, 2 ) int -> x23 "field V51.value (fldOffset=0x4)" P-INDEP +; V140 tmp109 [V140 ] ( 4, 8 ) ref -> [fp+0xD8] do-not-enreg[X] addr-exposed "field V90.DiagnosticInfo (fldOffset=0x0)" P-DEP +; V141 tmp110 [V141 ] ( 4, 8 ) ref -> [fp+0xE0] do-not-enreg[X] addr-exposed "field V90.PrimaryDependency (fldOffset=0x8)" P-DEP +; V142 tmp111 [V142 ] ( 4, 8 ) ref -> [fp+0xE8] do-not-enreg[X] addr-exposed "field V90.SecondaryDependencies (fldOffset=0x10)" P-DEP
; V143 tmp112 [V143,T86] ( 3, 1.50) ref -> x3 "V33.[016..024)" ; V144 tmp113 [V144,T66] ( 4, 2 ) ubyte -> x4 "V33.[025..026)"
-; V145 tmp114 [V145,T87] ( 3, 1.50) ref -> x24 "V43.[016..024)" -; V146 tmp115 [V146,T93] ( 3, 1.50) ubyte -> x25 "V43.[025..026)"
+; V145 tmp114 [V145,T87] ( 3, 1.50) ref -> x23 "V43.[016..024)" +; V146 tmp115 [V146,T93] ( 3, 1.50) ubyte -> x24 "V43.[025..026)"
;* V147 tmp116 [V147 ] ( 0, 0 ) ref -> zero-ref single-def "V62.[016..024)" ;* V148 tmp117 [V148 ] ( 0, 0 ) ubyte -> zero-ref "V62.[025..026)" ; V149 tmp118 [V149,T95] ( 2, 1 ) ref -> x1 single-def "V99.[008..016)" @@ -163,18 +163,18 @@ ; V152 tmp121 [V152,T96] ( 2, 1 ) ref -> x1 single-def "V128.[008..016)" ; V153 tmp122 [V153,T67] ( 3, 2 ) ref -> x3 "V34.[016..024)" ; V154 tmp123 [V154,T69] ( 3, 2 ) ubyte -> x4 "V34.[025..026)"
-; V155 tmp124 [V155,T88] ( 3, 1.50) ref -> x24 "V44.[016..024)" -; V156 tmp125 [V156,T94] ( 3, 1.50) ubyte -> x25 "V44.[025..026)"
+; V155 tmp124 [V155,T88] ( 3, 1.50) ref -> x23 "V44.[016..024)" +; V156 tmp125 [V156,T94] ( 3, 1.50) ubyte -> x24 "V44.[025..026)"
; V157 tmp126 [V157,T11] ( 3, 12 ) ref -> x0 "argument with side effect"
-; V158 tmp127 [V158 ] ( 4, 16 ) struct (24) [fp+0x68] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> -; V159 tmp128 [V159 ] ( 4, 4 ) struct (32) [fp+0x48] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]>
+; V158 tmp127 [V158 ] ( 4, 16 ) struct (24) [fp+0x78] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> +; V159 tmp128 [V159 ] ( 4, 4 ) struct (32) [fp+0x58] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]>
; V160 tmp129 [V160,T81] ( 2, 2 ) ref -> x4 single-def "argument with side effect" ; V161 cse0 [V161,T36] ( 4, 4.50) long -> x28 "CSE - moderate"
-; V162 cse1 [V162,T29] ( 3, 8 ) int -> x0 "CSE - moderate" -; V163 cse2 [V163,T41] ( 7, 3.50) long -> x23 "CSE - moderate" -; V164 cse3 [V164,T37] ( 4, 4.50) long -> [fp+0x40] spill-single-def "CSE - moderate"
+; V162 cse1 [V162,T29] ( 3, 6 ) int -> x0 "CSE - moderate" +; V163 cse2 [V163,T41] ( 7, 3.50) long -> x22 "CSE - moderate" +; V164 cse3 [V164,T37] ( 4, 4.50) long -> [fp+0x50] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 384
+; Lcl frame size = 400
G_M7707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #0xD1FFAB1E]! @@ -185,7 +185,7 @@ G_M7707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x27, x28, [sp, #0xD1FFAB1E] mov fp, sp movi v16.16b, #0
- add x9, fp, #136
+ add x9, fp, #152
add x10, fp, #0xD1FFAB1E stp q16, q16, [x9, #-0x40] stp q16, q16, [x9, #-0x20] @@ -247,19 +247,19 @@ G_M7707_IG04: ; bbWeight=0.50, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, b G_M7707_IG05: ; bbWeight=1, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref, isz uxtb w1, w0 str w1, [fp, #0xD1FFAB1E] // [V10 loc5]
- str xzr, [fp, #0x38] // [V11 loc6]
+ str xzr, [fp, #0x48] // [V11 loc6]
; GC ptr vars +{V11} str wzr, [fp, #0xD1FFAB1E] // [V12 loc7] mov x0, x20 ; gcrRegs +[x0] ldr x4, [x20]
- str x4, [fp, #0x40] // [V164 cse3]
+ str x4, [fp, #0x50] // [V164 cse3]
ldr x5, [x4, #0x58] ldr x5, [x5, #0x28] blr x5 mov x2, x0 ; gcrRegs +[x2]
- str x2, [fp, #0x30] // [V13 loc8]
+ str x2, [fp, #0x40] // [V13 loc8]
; GC ptr vars +{V13} cbnz x2, G_M7707_IG07 ;; size=52 bbWeight=1 PerfScore 17.50 @@ -285,7 +285,7 @@ G_M7707_IG07: ; bbWeight=0.50, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27} ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2]
- ldr x2, [fp, #0x30] // [V13 loc8]
+ ldr x2, [fp, #0x40] // [V13 loc8]
; gcrRegs +[x2] ;; size=44 bbWeight=0.50 PerfScore 9.00 G_M7707_IG08: ; bbWeight=0.50, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref, isz @@ -314,7 +314,7 @@ G_M7707_IG10: ; bbWeight=0.50, gcrefRegs=9380001 {x0 x19 x20 x21 x24 x27} ;; size=8 bbWeight=0.50 PerfScore 0.50 G_M7707_IG11: ; bbWeight=0.50, gcrefRegs=9380008 {x3 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref ; gcrRegs -[x0]
- ldr x2, [fp, #0x30] // [V13 loc8]
+ ldr x2, [fp, #0x40] // [V13 loc8]
; gcrRegs +[x2] ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M7707_IG12: ; bbWeight=1, gcrefRegs=938000C {x2 x3 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref @@ -326,7 +326,7 @@ G_M7707_IG12: ; bbWeight=1, gcrefRegs=938000C {x2 x3 x19 x20 x21 x24 x27} ;; size=20 bbWeight=1 PerfScore 4.50 G_M7707_IG13: ; bbWeight=4, gcrefRegs=9380008 {x3 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x2]
- str x3, [fp, #0x28] // [V17 loc12]
+ str x3, [fp, #0x30] // [V17 loc12]
; GC ptr vars +{V17} mov x0, x3 ...

+4 (+1.56%) : 22693.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)

@@ -38,7 +38,7 @@ G_M17353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M17353_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz mov x20, x19 ; gcrRegs +[x20]
- cbz x19, G_M17353_IG09
+ cbz x19, G_M17353_IG08
;; size=8 bbWeight=1 PerfScore 1.50 G_M17353_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x0, x20 @@ -69,7 +69,7 @@ G_M17353_IG04: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x8, x0
- bne G_M17353_IG11
+ bne G_M17353_IG12
mov x21, x20 ; gcrRegs +[x21] add x8, fp, #16 // [V03 loc2] @@ -103,27 +103,31 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ;; size=12 bbWeight=2 PerfScore 9.00 G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20]
+ b G_M17353_IG10 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] + mov x0, xzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x40 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M17353_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
mov x0, x21 ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x21] - mov x0, xzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldr x21, [sp, #0x38] - ldp x19, x20, [sp, #0x28] - ldp fp, lr, [sp], #0x40 - ret lr - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x20]
+G_M17353_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x21] +[x20]
mov x1, x20 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -131,7 +135,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 brk_unix #0 ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 256, prolog size 24, PerfScore 152.00, instruction count 64, allocated bytes for code 256 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 260, prolog size 24, PerfScore 152.50, instruction count 65, allocated bytes for code 260 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
; ============================================================ Unwind Info: @@ -142,7 +146,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ 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)

+8 (+1.96%) : 23625.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int

@@ -10,15 +10,15 @@ ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T03] ( 6, 10 ) ref -> x20 class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]>
-; V04 loc0 [V04 ] ( 8, 13.50) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
+; V04 loc0 [V04 ] ( 9, 14 ) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
; V05 loc1 [V05,T06] ( 5, 8.50) ref -> x23 ld-addr-op class-hnd <System.__Canon> ;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]> ; V07 loc3 [V07,T00] ( 6, 18.50) int -> x24 ; V08 loc4 [V08,T04] ( 4, 12 ) ref -> x26 class-hnd <System.__Canon> ; V09 loc5 [V09,T09] ( 4, 8 ) int -> x0
-; V10 loc6 [V10,T02] ( 6, 12.50) int -> x24
+; V10 loc6 [V10,T01] ( 7, 17 ) int -> x24
; V11 loc7 [V11,T12] ( 3, 6 ) ref -> x25 class-hnd <System.__Canon> ; V12 loc8 [V12,T13] ( 3, 6 ) int -> x0 ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -28,7 +28,7 @@ ;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V18 tmp5 [V18,T11] ( 4, 4.50) ref -> x21 single-def "field V01.array (fldOffset=0x0)" P-INDEP ; V19 tmp6 [V19,T10] ( 6, 7.50) ubyte -> [fp+0x18] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp7 [V20,T05] ( 5, 9 ) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
+; V20 tmp7 [V20,T05] ( 6, 9.50) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP ;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP ; V23 cse0 [V23,T14] ( 2, 1 ) int -> x0 "CSE - moderate" @@ -143,13 +143,15 @@ G_M52223_IG12: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
mov w24, wzr
- b G_M52223_IG16 - ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ldr w1, [fp, #0x1C] // [V20 tmp7] + cmp w24, w1 + bge G_M52223_IG16 + ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz cmp w24, w22
- bhs G_M52223_IG21
+ bhs G_M52223_IG20
add x25, x21, #16 ; byrRegs +[x25] ldr x25, [x25, w24, UXTW #3] @@ -174,21 +176,19 @@ G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg ; gcrRegs -[x0-x2 x25] cbz w0, G_M52223_IG15 cmp w0, #3
- bne G_M52223_IG19
+ bne G_M52223_IG18
;; size=68 bbWeight=2 PerfScore 48.00
-G_M52223_IG15: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M52223_IG15: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
- ;; size=4 bbWeight=2 PerfScore 1.00 -G_M52223_IG16: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz - ldr w1, [fp, #0x1C] // [V20 tmp7] - cmp w24, w1
+ ldr w0, [fp, #0x1C] // [V20 tmp7] + cmp w24, w0
blt G_M52223_IG14
- ;; size=12 bbWeight=4 PerfScore 14.00 -G_M52223_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 16.00 +G_M52223_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21 x23] ldr x0, [fp, #0x18] // [V04 loc0] ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -196,10 +196,10 @@ G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG19: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -207,12 +207,12 @@ G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG20: ; 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 408, prolog size 28, PerfScore 189.00, instruction count 102, allocated bytes for code 408 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 416, prolog size 28, PerfScore 191.25, instruction count 104, allocated bytes for code 416 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +223,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 102 (0x00066) Actual length = 408 (0x000198)
+ Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 21 6 7 8 -228 +376
benchmarks.run_pgo.osx.arm64.checked.mch 222 89 76 57 -1,512 +3,096
benchmarks.run_tiered.osx.arm64.checked.mch 9 0 4 5 -0 +184
coreclr_tests.run.osx.arm64.checked.mch 290 51 131 108 -376 +1,392
libraries.crossgen2.osx.arm64.checked.mch 1 0 0 1 -0 +0
libraries.pmi.osx.arm64.checked.mch 125 39 33 53 -448 +424
libraries_tests.run.osx.arm64.Release.mch 890 447 207 236 -4,012 +2,064
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 218 62 59 97 -988 +1,176
realworld.run.osx.arm64.checked.mch 23 6 11 6 -28 +160
1,799 700 528 571 -7,592 +8,872

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,861 5 24,856 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.osx.arm64.checked.mch 84,163 48,254 35,909 13 (0.02%) 13 (0.02%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,057 37,339 10,718 0 (0.00%) 0 (0.00%)
coreclr_tests.run.osx.arm64.checked.mch 584,881 356,502 228,379 7 (0.00%) 7 (0.00%)
libraries.crossgen2.osx.arm64.checked.mch 1,881 0 1,881 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 316,291 18 316,273 3 (0.00%) 3 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 634,566 463,650 170,916 83 (0.01%) 83 (0.01%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 303,144 21,597 281,547 2 (0.00%) 2 (0.00%)
realworld.run.osx.arm64.checked.mch 31,542 3 31,539 1 (0.00%) 1 (0.00%)
2,029,386 927,368 1,102,018 109 (0.01%) 109 (0.01%)

jit-analyze output

benchmarks.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11185284 (overridden on cmd)
Total bytes of diff: 11185432 (overridden on cmd)
Total bytes of delta: 148 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


benchmarks.run_pgo.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34533064 (overridden on cmd)
Total bytes of diff: 34534648 (overridden on cmd)
Total bytes of delta: 1584 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


benchmarks.run_tiered.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15508464 (overridden on cmd)
Total bytes of diff: 15508648 (overridden on cmd)
Total bytes of delta: 184 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


coreclr_tests.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 483586020 (overridden on cmd)
Total bytes of diff: 483587036 (overridden on cmd)
Total bytes of delta: 1016 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.crossgen2.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 311684 (overridden on cmd)
Total bytes of diff: 311684 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


libraries.pmi.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 80207064 (overridden on cmd)
Total bytes of diff: 80207040 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries_tests.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 313700576 (overridden on cmd)
Total bytes of diff: 313698628 (overridden on cmd)
Total bytes of delta: -1948 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 163153084 (overridden on cmd)
Total bytes of diff: 163153272 (overridden on cmd)
Total bytes of delta: 188 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


realworld.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15075948 (overridden on cmd)
Total bytes of diff: 15076080 (overridden on cmd)
Total bytes of delta: 132 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



windows arm64

Diffs are based on 2,070,850 contexts (937,853 MinOpts, 1,132,997 FullOpts).

MISSED contexts: 139 (0.01%)

Overall (-4,972 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,966,596 +140
benchmarks.run_pgo.windows.arm64.checked.mch 46,609,220 -4,076
benchmarks.run_tiered.windows.arm64.checked.mch 15,506,140 +140
coreclr_tests.run.windows.arm64.checked.mch 496,298,628 +716
libraries.crossgen2.windows.arm64.checked.mch 338,836 +0
libraries.pmi.windows.arm64.checked.mch 79,834,280 +1,412
libraries_tests.run.windows.arm64.Release.mch 326,696,628 -3,704
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 171,564,828 +284
realworld.run.windows.arm64.checked.mch 15,891,320 +116

FullOpts (-4,972 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,966,060 +140
benchmarks.run_pgo.windows.arm64.checked.mch 30,351,028 -4,076
benchmarks.run_tiered.windows.arm64.checked.mch 4,328,392 +140
coreclr_tests.run.windows.arm64.checked.mch 156,624,224 +716
libraries.crossgen2.windows.arm64.checked.mch 338,836 +0
libraries.pmi.windows.arm64.checked.mch 79,714,296 +1,412
libraries_tests.run.windows.arm64.Release.mch 123,222,780 -3,704
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 158,411,116 +284
realworld.run.windows.arm64.checked.mch 15,327,340 +116

Example diffs

benchmarks.run.windows.arm64.checked.mch

-40 (-27.03%) : 10369.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-20 (-0.71%) : 15577.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)

@@ -8,19 +8,19 @@ ; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T43] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator> -; V01 arg1 [V01,T39] ( 5, 8 ) int -> x22 single-def
+; V00 this [V00,T44] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator> +; V01 arg1 [V01,T40] ( 5, 8 ) int -> x22 single-def
; V02 arg2 [V02,T36] ( 6, 9 ) ref -> x21 class-hnd single-def <System.String>
-; V03 arg3 [V03,T40] ( 5, 8 ) long -> x23 single-def -; V04 arg4 [V04,T41] ( 5, 8 ) int -> x24 single-def -; V05 arg5 [V05,T42] ( 5, 8 ) int -> x25 single-def
+; V03 arg3 [V03,T41] ( 5, 8 ) long -> x23 single-def +; V04 arg4 [V04,T42] ( 5, 8 ) int -> x24 single-def +; V05 arg5 [V05,T43] ( 5, 8 ) int -> x25 single-def
; V06 arg6 [V06,T32] ( 7, 10 ) int -> x20 single-def
-; V07 arg7 [V07,T26] ( 12, 12 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]> -; V08 loc0 [V08,T44] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]> -; V09 loc1 [V09,T45] ( 5, 5 ) ubyte -> registers -; V10 loc2 [V10,T16] ( 8, 22 ) int -> [fp+0x114] -; V11 loc3 [V11,T17] ( 8, 22 ) int -> [fp+0x110] -; V12 loc4 [V12,T53] ( 3, 3 ) int -> [fp+0x10C] spill-single-def
+; V07 arg7 [V07,T21] ( 12, 15 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]> +; V08 loc0 [V08,T46] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]> +; V09 loc1 [V09,T37] ( 5, 8 ) ubyte -> registers +; V10 loc2 [V10,T15] ( 8, 25 ) int -> [fp+0x114] +; V11 loc3 [V11,T16] ( 8, 25 ) int -> [fp+0x110] +; V12 loc4 [V12,T45] ( 3, 6 ) int -> [fp+0x10C] spill-single-def
;* V13 loc5 [V13 ] ( 0, 0 ) int -> zero-ref ;* V14 loc6 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref @@ -41,7 +41,7 @@ ; V30 loc22 [V30,T34] ( 2, 9 ) ref -> [fp+0x30] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V31 loc23 [V31,T11] ( 5, 33 ) int -> [fp+0xB4] ; V32 loc24 [V32 ] ( 2, 16 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V33 loc25 [V33,T52] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
+; V33 loc25 [V33,T53] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
; V34 loc26 [V34,T35] ( 2, 9 ) ref -> x19 class-hnd exact single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V35 loc27 [V35,T12] ( 5, 33 ) int -> [fp+0x94] ;* V36 loc28 [V36 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo> @@ -54,20 +54,20 @@ ;* V43 tmp6 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> ; V45 tmp8 [V45 ] ( 2, 16 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V46 tmp9 [V46,T48] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
+; V46 tmp9 [V46,T49] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
;* V47 tmp10 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp11 [V48,T49] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
+; V48 tmp11 [V48,T50] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
; V49 tmp12 [V49,T27] ( 2, 8 ) ubyte -> x3 "Inline return value spill temp" ; V50 tmp13 [V50,T28] ( 3, 12 ) ubyte -> x3 "Inline return value spill temp" ;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V52 tmp15 [V52,T15] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> -; V53 tmp16 [V53,T21] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
+; V52 tmp15 [V52,T17] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> +; V53 tmp16 [V53,T22] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
; V54 tmp17 [V54 ] ( 4, 16 ) byref -> [fp+0x70] must-init pinned "Inline stloc first use temp"
-; V55 tmp18 [V55,T37] ( 2, 8 ) long -> x2
+; V55 tmp18 [V55,T38] ( 2, 8 ) long -> x2
; V56 tmp19 [V56,T08] ( 2, 36 ) long -> [fp+0x68] spill-single-def "Inline stloc first use temp" ;* V57 tmp20 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp21 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V59 tmp22 [V59,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp22 [V59,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp23 [V60 ] ( 2, 8 ) int -> [fp+0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V62 tmp25 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -77,22 +77,22 @@ ; V66 tmp29 [V66 ] ( 2, 16 ) ref -> [fp+0xE8] do-not-enreg[X] addr-exposed "field V19.ParameterName (fldOffset=0x0)" P-DEP ; V67 tmp30 [V67 ] ( 2, 16 ) ref -> [fp+0xF0] do-not-enreg[X] addr-exposed "field V19.ParameterType (fldOffset=0x8)" P-DEP ; V68 tmp31 [V68 ] ( 2, 16 ) ref -> [fp+0xF8] do-not-enreg[X] addr-exposed "field V19.TypeInfo (fldOffset=0x10)" P-DEP
-; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
+; V69 tmp32 [V69,T24] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref "field V23.ParameterType (fldOffset=0x8)" P-INDEP
-; V71 tmp34 [V71,T24] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
+; V71 tmp34 [V71,T25] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
; V72 tmp35 [V72 ] ( 2, 16 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V32.ParameterName (fldOffset=0x0)" P-DEP ; V73 tmp36 [V73 ] ( 2, 16 ) ref -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V32.ParameterType (fldOffset=0x8)" P-DEP ; V74 tmp37 [V74 ] ( 2, 16 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed "field V32.TypeInfo (fldOffset=0x10)" P-DEP
-; V75 tmp38 [V75,T22] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
+; V75 tmp38 [V75,T23] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
;* V76 tmp39 [V76 ] ( 0, 0 ) ref -> zero-ref "field V36.ParameterType (fldOffset=0x8)" P-INDEP ; V77 tmp40 [V77,T19] ( 3, 20 ) ref -> x5 "field V36.TypeInfo (fldOffset=0x10)" P-INDEP ; V78 tmp41 [V78,T03] ( 3, 48 ) byref -> x1 "BlockOp address local"
-; V79 tmp42 [V79,T50] ( 2, 4 ) long -> x2 "Cast away GC" -; V80 tmp43 [V80,T51] ( 2, 4 ) long -> x3 "Cast away GC" -; V81 tmp44 [V81,T46] ( 2, 4 ) ref -> x7 "argument with side effect"
+; V79 tmp42 [V79,T51] ( 2, 4 ) long -> x1 "Cast away GC" +; V80 tmp43 [V80,T52] ( 2, 4 ) long -> x3 "Cast away GC" +; V81 tmp44 [V81,T47] ( 2, 4 ) ref -> x7 "argument with side effect"
; V82 tmp45 [V82,T04] ( 3, 48 ) byref -> x0 "BlockOp address local"
-; V83 tmp46 [V83,T25] ( 2, 16 ) long -> x2 "Cast away GC" -; V84 tmp47 [V84,T47] ( 2, 16 ) ref -> x7 "argument with side effect"
+; V83 tmp46 [V83,T26] ( 2, 16 ) long -> x2 "Cast away GC" +; V84 tmp47 [V84,T48] ( 2, 16 ) ref -> x7 "argument with side effect"
; V85 PSPSym [V85,T60] ( 1, 1 ) long -> [fp+0x118] do-not-enreg[V] "PSPSym" ; V86 cse0 [V86,T29] ( 3, 12 ) int -> [fp+0x58] spill-single-def "CSE - moderate" ; V87 cse1 [V87,T54] ( 3, 3 ) int -> x28 "CSE - moderate" @@ -137,8 +137,8 @@ G_M27295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov x19, x7 ; gcrRegs +[x19] ;; size=104 bbWeight=1 PerfScore 19.00
-G_M27295_IG02: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V33 V52}
+G_M27295_IG02: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V33 V53}
mov w27, wzr ;; size=4 bbWeight=1 PerfScore 0.50 G_M27295_IG03: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref, isz @@ -184,10 +184,10 @@ G_M27295_IG04: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0 ldr w7, [x5, #0x08] str w7, [fp, #0x50] // [V89 cse3] cmp w7, #0
- ble G_M27295_IG10
+ ble G_M27295_IG11
;; size=28 bbWeight=1 PerfScore 7.50
-G_M27295_IG05: ; bbWeight=8, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V52}
+G_M27295_IG05: ; bbWeight=8, gcVars=0020000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V53}
mov w0, #24 mov x1, #16 str w6, [fp, #0xD1FFAB1E] // [V18 loc10] @@ -212,70 +212,22 @@ G_M27295_IG07: ; bbWeight=8, isz, extend blr x8 ; gcrRegs -[x5] ; gcr arg pop 0
- cbz w0, G_M27295_IG11 - ldr w1, [fp, #0xE0] // [V20 loc12] - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - add w2, w2, w1 - ldr w1, [fp, #0xD1FFAB1E] // [V18 loc10] - add w1, w1, #1 - ldr w3, [fp, #0x50] // [V89 cse3] - cmp w3, w1 - mov w6, w1 - ldr x5, [fp, #0x40] // [V17 loc9] - ; gcrRegs +[x5] - bgt G_M27295_IG09 - ;; size=72 bbWeight=8 PerfScore 164.00 -G_M27295_IG08: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5]
+ cbnz w0, G_M27295_IG12 + ;; size=32 bbWeight=8 PerfScore 60.00 +G_M27295_IG08: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- mov w1, #6 - cmp w20, #0 - csel w1, wzr, w1, eq - ldr w4, [fp, #0xD1FFAB1E] // [V11 loc3] - add w0, w4, #5 - str w4, [fp, #0xD1FFAB1E] // [V11 loc3] - cmp w4, #0 - csel w0, wzr, w0, eq - str w2, [fp, #0xD1FFAB1E] // [V10 loc2] - add w0, w2, w0 - add w5, w0, w1 - str w5, [fp, #0xD1FFAB1E] // [V16 loc8] - sxtw x1, w5 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWARR_1_VC - ; gcrRegs +[x0] - ; gcr arg pop 0 - str x0, [fp, #0x48] // [V08 loc0] - ; GC ptr vars +{V08} - b G_M27295_IG15 - ;; size=76 bbWeight=1 PerfScore 14.00 -G_M27295_IG09: ; bbWeight=4, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x5] - ; GC ptr vars -{V08} +{V17 V31} - str w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG05 - ;; size=8 bbWeight=4 PerfScore 8.00 -G_M27295_IG10: ; bbWeight=0.50, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5] - ; GC ptr vars -{V17 V31} - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG08 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M27295_IG11: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref
mov w27, #1 ldr w2, [fp, #0xD1FFAB1E] // [V12 loc4] str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- mov w4, #4 - str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
+ mov w1, #4 + str w1, [fp, #0xD1FFAB1E] // [V11 loc3]
mov x5, x19 ; gcrRegs +[x5] str x5, [fp, #0x38] // [V21 loc13] ; GC ptr vars +{V21} mov w6, wzr ;; size=32 bbWeight=1 PerfScore 7.00
-G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27295_IG09: ; bbWeight=8, gcVars=0020000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
mov w1, #24 mov x0, #16 str w6, [fp, #0xDC] // [V22 loc14] @@ -301,30 +253,11 @@ G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs blr x7 ; gcrRegs -[x0 x5] ; gcr arg pop 0
- cbz w0, G_M27295_IG14 - ldr w0, [fp, #0x88] // [V45 tmp8] - ldr w1, [fp, #0xD8] // [V24 loc16] - add w1, w1, w0 - ldr w2, [fp, #0xD1FFAB1E] // [V11 loc3] - add w2, w2, w1 - ldr w0, [fp, #0xDC] // [V22 loc14] - add w0, w0, #1 - ldr w1, [fp, #0x50] // [V89 cse3] - cmp w1, w0 - str w2, [fp, #0xD1FFAB1E] // [V11 loc3] - mov w6, w0 - ldr x5, [fp, #0x38] // [V21 loc13] - ; gcrRegs +[x5] - bgt G_M27295_IG12 - ;; size=128 bbWeight=8 PerfScore 344.00 -G_M27295_IG13: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x5] - ; GC ptr vars -{V21 V33} - ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2] - b G_M27295_IG08 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M27295_IG14 + ;; size=76 bbWeight=8 PerfScore 212.00 +G_M27295_IG10: ; bbWeight=4, gcVars=0020000000000000 {V33}, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
+ ; GC ptr vars -{V21 V33}
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -337,47 +270,112 @@ G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 ldr x19, [x0] ; gcrRegs +[x19] ldr w27, [fp, #0xD1FFAB1E] // [V12 loc4]
- str wzr, [fp, #0xD1FFAB1E] // [V11 loc3] - mov w2, wzr - mov w0, w2 - mov w2, w27
+ mov w4, wzr + mov w0, wzr + str w27, [fp, #0xD1FFAB1E] // [V10 loc2] + str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
mov w27, w0
- b G_M27295_IG08 - ;; size=64 bbWeight=1 PerfScore 13.50
...

-4 (-0.15%) : 4831.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -23,24 +23,24 @@ ; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String> ; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28 ; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3 ; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]> ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1 ;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt" ;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg" ;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -67,13 +67,13 @@ ;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" ;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> -; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg" -; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> +; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg" +; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]> ; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg" ; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]> @@ -90,14 +90,14 @@ ;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> -; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> +; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP ;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP @@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2 bhi G_M4730_IG74
- cmp w1, #0 - cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w3, [x1, #0x08] cmp w3, w0 bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref ; byrRegs -[x27] add x1, x1, #16 @@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {}, beq G_M4730_IG67 b G_M4730_IG27 ;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89} str w1, [fp, #0x60] // [V10 loc6] mov w28, w2 @@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; GC ptr vars +{V89} ldr w28, [fp, #0x68] // [V07 loc3] ;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3] ; GC ptr vars -{V57} cmp w25, w26 @@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89} ; GC ptr vars +{V13} cbz x24, G_M4730_IG39 ;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26] ldr w26, [fp, #0x44] // [V90 tmp68] cbz w26, G_M4730_IG32 @@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g str w0, [x19, #0x18] b G_M4730_IG41 ;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27] ; GC ptr vars +{V13 V16 V89} b G_M4730_IG42 @@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; gcrRegs -[x26] b G_M4730_IG47 ;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26] ; GC ptr vars +{V13 V16 V89} ldr x2, [fp, #0x30] // [V13 loc9] @@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ; gcr arg pop 0 b G_M4730_IG06 ;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27] ; GC ptr vars +{V13 V16 V89} ldr x1, [fp, #0x30] // [V13 loc9] @@ -1216,7 +1215,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2704, prolog size 48, PerfScore 6977.50, instruction count 676, allocated bytes for code 2704 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2700, prolog size 48, PerfScore 6975.50, instruction count 675, allocated bytes for code 2700 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -1227,7 +1226,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 676 (0x002a4) Actual length = 2704 (0x000a90)
+ Function Length : 675 (0x002a3) Actual length = 2700 (0x000a8c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.61%) : 4668.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)

@@ -76,7 +76,7 @@ G_M60940_IG02: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=800 G_M60940_IG03: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz cbnz x0, G_M60940_IG04 str xzr, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=12 bbWeight=1 PerfScore 3.00 G_M60940_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -128,7 +128,7 @@ G_M60940_IG05: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, ldr x0, [fp, #0x38] // [V07 loc3] ; gcrRegs +[x0] str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=52 bbWeight=1 PerfScore 14.00 G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -144,7 +144,7 @@ G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w2, wzr mov w3, wzr cmp w1, #0
- ble G_M60940_IG11
+ ble G_M60940_IG13
;; size=44 bbWeight=1 PerfScore 13.00 G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz mov w4, #24 @@ -159,21 +159,28 @@ G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w2, [fp, #0x28] // [V10 loc6+0x08] ; byrRegs -[x2] cmp w2, #17
- beq G_M60940_IG10
+ bne G_M60940_IG10 + ;; size=44 bbWeight=8 PerfScore 152.00 +G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + b G_M60940_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + b G_M60940_IG13 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M60940_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0]
add w2, w3, #1 sxtw w3, w2 cmp w1, w3 bgt G_M60940_IG07
- ;; size=60 bbWeight=8 PerfScore 172.00 -G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=8 PerfScore 20.00 +G_M60940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M60940_IG11
+ b G_M60940_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - b G_M60940_IG11 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, fp, #32 // [V10 loc6] ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0] @@ -184,9 +191,9 @@ G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x2 ; gcr arg pop 0 str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=36 bbWeight=1 PerfScore 10.00
-G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG13: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] ; GC ptr vars -{V05} ldr x0, [fp, #0x18] // [V04 loc0] @@ -199,36 +206,36 @@ G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M60940_IG16
+ b G_M60940_IG18
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG12: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04 V05} ldr x0, [fp, #0x48] // [V34 PSPSym]
- bl G_M60940_IG27
+ bl G_M60940_IG29
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60940_IG13: ; bbWeight=1, nogc, extend
+G_M60940_IG15: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05} ldr x0, [fp, #0x10] // [V05 loc1] ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M60940_IG15: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x50] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, xzr - ;; size=4 bbWeight=1 PerfScore 0.50
G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x60 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, xzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M60940_IG19: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x50] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M60940_IG20: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0] stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] @@ -236,7 +243,7 @@ G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre str x1, [sp, #0x18] sub fp, x1, #96 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG21: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05} mov x1, x0 ; gcrRegs +[x1] @@ -249,12 +256,12 @@ G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbnz x19, G_M60940_IG20
+ cbnz x19, G_M60940_IG22
mov w0, wzr ; gcrRegs -[x0]
- b G_M60940_IG23
+ b G_M60940_IG25
;; size=36 bbWeight=0 PerfScore 0.00
-G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -263,7 +270,7 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M60940_IG21
+ cbnz x0, G_M60940_IG23
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -276,44 +283,44 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by cmp x0, #0 cset x0, ne ; gcrRegs -[x0]
- b G_M60940_IG22
+ b G_M60940_IG24
;; size=56 bbWeight=0 PerfScore 0.00
-G_M60940_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0 cset x0, ne ;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #96 str x3, [sp, #0x18] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M60940_IG25: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG27: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
adr x0, [G_M60940_IG09] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M60940_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x20] add x3, fp, #96 str x3, [sp, #0x18] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG30: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0]
- cbz x0, G_M60940_IG29
+ cbz x0, G_M60940_IG31
movz x1, #0xD1FFAB1E // code for System.Reflection.PortableExecutable.PEReader:Dispose():this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -323,7 +330,7 @@ G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr @@ -331,7 +338,7 @@ G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, RWD00 dq 00007FF8BC13D218h, 00007FF8BE3D3B70h
-Total bytes of code 652, prolog size 32, PerfScore 283.00, instruction count 163, allocated bytes for code 652 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
+Total bytes of code 656, prolog size 32, PerfScore 284.00, instruction count 164, allocated bytes for code 656 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
; ============================================================ Unwind Info: @@ -342,7 +349,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -410,7 +417,7 @@ Unwind Info: *************** EH table for System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider 2 EH table entries, 1 duplicate clauses, 1 cloned finallys, 4 total EH entries reported to VM
-EH#0: try [G_M60940_IG10..G_M60940_IG11) handled by [G_M60940_IG24..G_M60940_IG27) filter at [G_M60940_IG18..G_M60940_IG24)
...

+16 (+0.67%) : 2830.dasm - System.Text.Json.Tests.Perf_Deep:WriteDeepUtf16():this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T00] ( 69,116.50) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Text.Json.Utf8JsonWriter> ; V02 loc1 [V02 ] ( 9, 7 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init ld-addr-op <System.Text.Json.JsonWriterOptions> ; V03 loc2 [V03,T09] ( 6, 21 ) int -> x21
-; V04 loc3 [V04,T02] ( 8, 29 ) int -> x24
+; V04 loc3 [V04,T02] ( 8, 29 ) int -> x21
; V05 loc4 [V05,T18] ( 4, 13 ) int -> x19 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T42] ( 3, 6 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Buffers.ArrayBufferWriter`1[ubyte]> @@ -86,8 +86,8 @@ ;* V75 tmp69 [V75 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V76 tmp70 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V77 tmp71 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x21 "Inlining Arg" -; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x22 "Inlining Arg" +; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x26 "Inlining Arg"
;* V80 tmp74 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V81 tmp75 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V82 tmp76 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -100,7 +100,7 @@ ; V89 tmp83 [V89,T33] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder> ; V90 tmp84 [V90,T24] ( 5, 10 ) ref -> x0 ;* V91 tmp85 [V91 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x22 "Inline stloc first use temp"
+; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x27 "Inline stloc first use temp"
;* V93 tmp87 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V94 tmp88 [V94 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V95 tmp89 [V95,T14] ( 2, 16 ) int -> x1 "Inlining Arg" @@ -145,10 +145,10 @@ ;* V134 tmp128 [V134 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP ;* V135 tmp129 [V135 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP ;* V136 tmp130 [V136 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x25 "field V75._reference (fldOffset=0x0)" P-INDEP -; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x21 "field V75._length (fldOffset=0x8)" P-INDEP -; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x25 "field V76._reference (fldOffset=0x0)" P-INDEP -; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x21 "field V76._length (fldOffset=0x8)" P-INDEP
+; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x26 "field V75._reference (fldOffset=0x0)" P-INDEP +; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x22 "field V75._length (fldOffset=0x8)" P-INDEP +; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x26 "field V76._reference (fldOffset=0x0)" P-INDEP +; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x22 "field V76._length (fldOffset=0x8)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP ;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP ;* V143 tmp137 [V143 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP @@ -159,7 +159,7 @@ ; V148 tmp142 [V148,T37] ( 2, 8 ) long -> x24 "Cast away GC" ; V149 tmp143 [V149,T51] ( 2, 4 ) long -> x25 "Cast away GC" ; V150 tmp144 [V150,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x22 "Cast away GC"
+; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x27 "Cast away GC"
; V152 tmp146 [V152,T07] ( 3, 24 ) ref -> x1 "arr expr" ; V153 PSPSym [V153,T61] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym" ; V154 cse0 [V154,T17] ( 4, 14 ) int -> x0 "CSE - moderate" @@ -170,21 +170,22 @@ ; Lcl frame size = 72 G_M54203_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0xA0]!
stp x19, x20, [sp, #0x58] stp x21, x22, [sp, #0x68] stp x23, x24, [sp, #0x78]
- str x25, [sp, #0x88]
+ stp x25, x26, [sp, #0x88] + str x27, [sp, #0x98]
mov fp, sp add x9, fp, #32 movi v16.16b, #0 stp q16, q16, [x9] stp xzr, xzr, [x9, #0x20]
- add x1, sp, #144
+ add x1, sp, #160
str x1, [fp, #0x50] // [V153 PSPSym] mov x19, x0 ; gcrRegs +[x19]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M54203_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20] @@ -485,18 +486,18 @@ G_M54203_IG28: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { str w0, [x20, #0x28] mov w0, #3 strb w0, [x20, #0x36]
- mov w24, wzr
+ mov w21, wzr
;; size=32 bbWeight=1 PerfScore 8.00 G_M54203_IG29: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x28] ; gcrRegs +[x0] ldr w1, [x0, #0x08]
- cmp w24, w1
+ cmp w21, w1
bhs G_M54203_IG47 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x22, [x0, w24, UXTW #3]
+ ldr x22, [x0, w21, UXTW #3]
; gcrRegs +[x22] cbnz x22, G_M54203_IG61 ;; size=28 bbWeight=4 PerfScore 48.00 @@ -517,12 +518,12 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x19, #0x20] ; gcrRegs +[x1] ldr w0, [x1, #0x08]
- cmp w24, w0
+ cmp w21, w0
bhs G_M54203_IG47 add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- ldr w1, [x1, w24, UXTW #2]
+ ldr w1, [x1, w21, UXTW #2]
; byrRegs -[x1] sxtw x1, w1 mov x0, x20 @@ -534,10 +535,10 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- add w24, w24, #1
+ add w21, w21, #1
movz w0, #0xD1FFAB1E movk w0, #1 LSL #16
- cmp w24, w0
+ cmp w21, w0
blt G_M54203_IG29 ;; size=72 bbWeight=4 PerfScore 82.00 G_M54203_IG32: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref @@ -631,7 +632,7 @@ G_M54203_IG39: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b b G_M54203_IG72 ;; size=64 bbWeight=1 PerfScore 15.00 G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov w0, w21
+ mov w0, w22
movz x1, #0xD1FFAB1E // code for System.Text.Json.ThrowHelper:ThrowArgumentException_ValueTooLarge(long) movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -640,9 +641,9 @@ G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
+G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
; gcrRegs +[x19]
- ; byrRegs +[x25]
+ ; byrRegs +[x26]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -653,7 +654,7 @@ G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ;; size=24 bbWeight=0 PerfScore 0.00 G_M54203_IG42: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]
- ; byrRegs -[x25]
+ ; byrRegs -[x26]
ldrb w4, [x20, #0x36] ldr w2, [x20, #0x68] mov w0, #31 @@ -915,27 +916,27 @@ G_M54203_IG60: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=100 ;; size=40 bbWeight=0.50 PerfScore 4.25 G_M54203_IG61: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x22]
- add x25, x22, #12 - ; byrRegs +[x25] - ldr w21, [x22, #0x08]
+ add x26, x22, #12 + ; byrRegs +[x26] + ldr w22, [x22, #0x08] + ; gcrRegs -[x22]
movz w0, #0xD1FFAB1E movk w0, #0xD1FFAB1E LSL #16
- cmp w21, w0
+ cmp w22, w0
bgt G_M54203_IG40 add x0, x20, #96 ; byrRegs +[x0] ldr x0, [x0] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbnz w21, G_M54203_IG62
+ cbnz w22, G_M54203_IG62
movn w3, #0 b G_M54203_IG65 ;; size=44 bbWeight=2 PerfScore 24.00
-G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref, isz - ; gcrRegs -[x22] - mov x22, x25 - ; byrRegs +[x22] - str x22, [fp, #0x20] // [V87 tmp81]
+G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref, isz + mov x27, x26 + ; byrRegs +[x27] + str x27, [fp, #0x20] // [V87 tmp81]
cbnz x0, G_M54203_IG64 movz x0, #0xD1FFAB1E ; gcrRegs -[x0] @@ -944,17 +945,17 @@ G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200 ldr w0, [x0] tbz w0, #0, G_M54203_IG41 ;; size=32 bbWeight=2 PerfScore 16.00
-G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref - ; byrRegs -[x22]
+G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref + ; byrRegs -[x27]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0] ;; size=16 bbWeight=2 PerfScore 9.00
-G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref - mov x1, x22 - mov w2, w21
+G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref + mov x1, x27 + mov w2, w22
ldr x3, [x0] ldr x3, [x3, #0x48] ldr x3, [x3, #0x28] @@ -963,13 +964,13 @@ G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200 ; gcr arg pop 0 sxtw w3, w0 ;; size=28 bbWeight=2 PerfScore 23.00
-G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
str xzr, [fp, #0x20] // [V87 tmp81] cmn w3, #1 beq G_M54203_IG66
- mov x1, x25
+ mov x1, x26
; byrRegs +[x1]
- mov w2, w21
+ mov w2, w22
mov x0, x20 ; gcrRegs +[x0] movz x4, #0xD1FFAB1E // code for <unknown method> @@ -978,12 +979,12 @@ G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 ldr x4, [x4] blr x4 ; gcrRegs -[x0]
- ; byrRegs -[x1 x25]
+ ; byrRegs -[x1 x26]
; gcr arg pop 0 b G_M54203_IG69 ;; size=48 bbWeight=2 PerfScore 21.00
-G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz - ; byrRegs +[x25]
+G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
...

+20 (+3.91%) : 21363.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -33,10 +33,10 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value" ; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG23 - cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25 + cbz w21, G_M46295_IG19
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG17 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG14 - cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16 + cbnz x23, G_M46295_IG12
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08] sub w0, w0, w24 cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12 ; byrRegs +[x2] sbfiz x0, x24, #1, #32 @@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -266,7 +277,7 @@ Unwind Info: E bit : 0 ...

benchmarks.run_pgo.windows.arm64.checked.mch

-16 (-3.54%) : 84373.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)

@@ -23,7 +23,7 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]> ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ; V12 tmp6 [V12,T05] ( 2,399.96) long -> x1 "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> x23 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> x23 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> x24 class-hnd "Inlining Arg" <System.__Canon> @@ -39,9 +39,9 @@ ; V26 tmp20 [V26,T03] ( 2,400 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon> ;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP ;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> x24 "V04.[000..008)" -; V30 tmp24 [V30,T14] ( 4,101.01) int -> x25 "V04.[008..012)" -; V31 tmp25 [V31,T07] ( 6,301.01) int -> registers "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> x24 "V04.[000..008)" +; V30 tmp24 [V30,T14] ( 3,101.01) int -> x25 "V04.[008..012)" +; V31 tmp25 [V31,T06] ( 6,301.01) int -> registers "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> x2 "V04.[024..032)" ; V33 tmp27 [V33,T11] ( 3,199.99) long -> x4 "V04.[032..040)" ;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)" @@ -80,15 +80,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ldp w25, w26, [fp, #0xF8] // [V04 loc2+0x08], [V04 loc2+0x0c] ;; size=12 bbWeight=1 PerfScore 4.50 G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- cbz w23, G_M19783_IG08
+ cbz w23, G_M19783_IG06
;; size=4 bbWeight=0.01 PerfScore 0.01 G_M19783_IG04: ; bbWeight=7.97, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
- b G_M19783_IG08
+ b G_M19783_IG06
;; size=4 bbWeight=7.97 PerfScore 7.97 G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x24] cmp w22, w0
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
add x0, x19, #16 ; byrRegs +[x0] ldr x0, [x0, w22, UXTW #3] @@ -107,11 +107,15 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs mov w26, wzr b G_M19783_IG03 ;; size=56 bbWeight=0.01 PerfScore 0.18
-G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ mov w23, #1 + ldr w0, [x24, #0x44] + cmp w25, w0 + bne G_M19783_IG18
ldr w27, [x24, #0x38]
- b G_M19783_IG10 - ;; size=8 bbWeight=100 PerfScore 400.00
+ b G_M19783_IG09 + ;; size=24 bbWeight=100 PerfScore 900.00
G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x2] sxtw x0, w22 @@ -127,23 +131,17 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, blr x4 ; gcrRegs -[x0 x2] ; gcr arg pop 0
- cbz w0, G_M19783_IG15 - ;; size=44 bbWeight=99.99 PerfScore 1199.88 -G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz - mov w23, #1 - ldr w0, [x24, #0x44] - cmp w25, w0 - bne G_M19783_IG19
+ cbz w0, G_M19783_IG14
b G_M19783_IG06
- ;; size=20 bbWeight=100 PerfScore 600.00 -G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=99.99 PerfScore 1299.87 +G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24, #0x10] ; gcrRegs +[x0] add w1, w26, #1 sxtw w28, w1 ldr w1, [x0, #0x08] cmp w26, w1
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
mov w1, #24 mov x2, #16 umaddl x1, w26, w1, x2 @@ -153,38 +151,38 @@ G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byref ldr w1, [x0, #0x14] cmn w1, #1 mov w26, w28
- bge G_M19783_IG11
+ bge G_M19783_IG10
;; size=56 bbWeight=100 PerfScore 2000.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cmp w26, w27
- bhs G_M19783_IG16 - b G_M19783_IG09
+ bhs G_M19783_IG15 + b G_M19783_IG08
;; size=12 bbWeight=100 PerfScore 250.00
-G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
+G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0] ldp x2, x4, [x0] ; gcrRegs +[x2] mov w28, #1 ;; size=8 bbWeight=100 PerfScore 450.00
-G_M19783_IG12: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cbnz w28, G_M19783_IG07 ;; size=4 bbWeight=100 PerfScore 100.00
-G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG12: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x24] add w22, w22, #1 ldr w0, [x19, #0x08] cmp w0, w22
- ble G_M19783_IG17
+ ble G_M19783_IG16
b G_M19783_IG05 ;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21 x24] movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 @@ -198,21 +196,17 @@ G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w23, #1 - ldr w1, [x24, #0x44] - cmp w25, w1 - beq G_M19783_IG06 - b G_M19783_IG19 - ;; size=64 bbWeight=0 PerfScore 0.00 -G_M19783_IG16: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+ b G_M19783_IG06 + ;; size=48 bbWeight=0 PerfScore 0.00 +G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
add w26, w27, #1 mov x2, xzr ; gcrRegs +[x2] mov x4, xzr mov w28, wzr
- b G_M19783_IG12
+ b G_M19783_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M19783_IG16: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x19 x24] ldr x2, [x20, #0x08] ; gcrRegs +[x2] @@ -226,7 +220,7 @@ G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcrRegs -[x1 x20-x21] ; gcr arg pop 0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG17: ; bbWeight=0, epilog, nogc, extend
ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] @@ -236,7 +230,7 @@ G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend add sp, sp, #224 ret lr ;; size=32 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() movk x0, #0xD1FFAB1E LSL #16 @@ -247,7 +241,7 @@ G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 452, prolog size 40, PerfScore 5026.10, instruction count 113, allocated bytes for code 452 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 436, prolog size 40, PerfScore 5026.09, instruction count 109, allocated bytes for code 436 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -258,7 +252,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-3.06%) : 8676.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)

@@ -8,8 +8,8 @@ ; 7 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T31] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128> -; V01 arg1 [V01,T32] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V00 arg0 [V00,T30] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128> +; V01 arg1 [V01,T31] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
; V02 loc0 [V02,T28] ( 6, 6 ) long -> x19 ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[uint]> ; V04 loc2 [V04,T29] ( 6, 6 ) long -> x21 @@ -23,8 +23,8 @@ ;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]> ;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ptr ; V14 loc12 [V14,T05] ( 13, 39 ) int -> [fp+0x64] ptr
-; V15 loc13 [V15,T11] ( 8, 18 ) int -> [fp+0x60] spill-single-def ptr -; V16 loc14 [V16,T18] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
+; V15 loc13 [V15,T11] ( 7, 18 ) int -> [fp+0x60] spill-single-def ptr +; V16 loc14 [V16,T17] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
; V17 loc15 [V17,T03] ( 6, 60 ) long -> [fp+0x50] ptr ; V18 loc16 [V18,T10] ( 3, 22 ) int -> [fp+0x4C] ptr ; V19 loc17 [V19,T02] ( 13,114 ) long -> [fp+0x40] ptr @@ -38,7 +38,7 @@ ; V27 tmp5 [V27,T33] ( 3, 6 ) int -> x0 "Span.get_Item index" ; V28 tmp6 [V28,T63] ( 2, 2 ) int -> x0 "Span.get_Item index" ; V29 tmp7 [V29,T59] ( 5, 3 ) int -> x0
-; V30 tmp8 [V30,T24] ( 3, 8 ) int -> x7
+; V30 tmp8 [V30,T23] ( 3, 8 ) int -> x7
; V31 tmp9 [V31,T16] ( 5, 12 ) int -> x0 ;* V32 tmp10 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[uint]> ;* V33 tmp11 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]> @@ -64,8 +64,8 @@ ;* V53 tmp31 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp33 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V56 tmp34 [V56,T19] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg" -; V57 tmp35 [V57,T25] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
+; V56 tmp34 [V56,T18] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg" +; V57 tmp35 [V57,T24] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V59 tmp37 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp38 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -77,8 +77,8 @@ ;* V66 tmp44 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V67 tmp45 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V69 tmp47 [V69,T17] ( 5, 12 ) int -> [fp+0x38] ptr "Inlining Arg" -; V70 tmp48 [V70,T23] ( 3, 8 ) byref -> [fp+0x18] ptr "Inlining Arg"
+; V69 tmp47 [V69,T19] ( 3, 12 ) int -> [fp+0x38] spill-single-def ptr "Inlining Arg" +; V70 tmp48 [V70,T25] ( 2, 8 ) byref -> [fp+0x18] spill-single-def ptr "Inlining Arg"
;* V71 tmp49 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V72 tmp50 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -92,7 +92,7 @@ ; V81 tmp59 [V81,T48] ( 2, 4 ) long -> x0 "Inlining Arg" ; V82 tmp60 [V82,T49] ( 2, 4 ) long -> x1 "Inlining Arg" ; V83 tmp61 [V83,T14] ( 7, 15 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp62 [V84,T09] ( 15, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V84 tmp62 [V84,T09] ( 14, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
; V85 tmp63 [V85,T13] ( 6, 7 ) byref -> x21 single-def "field V05._reference (fldOffset=0x0)" P-INDEP ; V86 tmp64 [V86,T08] ( 15, 21.50) int -> x22 "field V05._length (fldOffset=0x8)" P-INDEP ; V87 tmp65 [V87,T20] ( 7, 8 ) byref -> x23 single-def "field V06._reference (fldOffset=0x0)" P-INDEP @@ -132,7 +132,7 @@ ; V121 tmp99 [V121,T43] ( 4, 4 ) long -> x2 "V01.[000..008)" ; V122 tmp100 [V122,T40] ( 5, 5 ) long -> x3 "V01.[008..016)" ; V123 GsCookie [V123 ] ( 1, 1 ) long -> [fp+0xB8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V124 cse0 [V124,T30] ( 4, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V124 cse0 [V124,T32] ( 3, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V125 cse1 [V125,T12] ( 4, 16 ) int -> [fp+0x34] spill-single-def "CSE - aggressive" ; V126 cse2 [V126,T26] ( 6, 7.50) int -> x3 multi-def "CSE - moderate" ; V127 cse3 [V127,T37] ( 3, 6 ) int -> x0 "CSE - moderate" @@ -176,7 +176,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w0, w1, w0 neg w0, w0, ASR #5 add w20, w0, #4
- tbnz w20, #31, G_M55503_IG48
+ tbnz w20, #31, G_M55503_IG46
add x21, fp, #152 // [V24 tmp2] str w2, [x21] lsr x0, x2, #32 @@ -193,13 +193,13 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add w0, w1, w0 neg w0, w0, ASR #5 add w22, w0, #4
- tbnz w22, #31, G_M55503_IG48
+ tbnz w22, #31, G_M55503_IG46
add x23, fp, #136 // [V25 tmp3] stp xzr, xzr, [x23] sub w0, w20, w22 add w24, w0, #1 cmp w24, #4
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
cmp w24, #0 cset x0, ge movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) @@ -278,7 +278,7 @@ G_M55503_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 G_M55503_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz sxtw w5, w20 cmp w20, w22
- blt G_M55503_IG36
+ blt G_M55503_IG37
;; size=12 bbWeight=1 PerfScore 2.00 G_M55503_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz sub w6, w5, w22 @@ -383,11 +383,11 @@ G_M55503_IG25: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x2 bhi G_M55503_IG22 ;; size=20 bbWeight=16 PerfScore 56.00 G_M55503_IG26: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
- cbz x13, G_M55503_IG31
+ cbz x13, G_M55503_IG32
;; size=4 bbWeight=8 PerfScore 8.00 G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz cmp w6, w20
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
ubfiz x0, x6, #2, #32 add x9, x19, x0 ; byrRegs +[x9] @@ -402,7 +402,7 @@ G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 str w5, [fp, #0x64] // [V14 loc12] tbnz w1, #31, G_M55503_IG43 ;; size=44 bbWeight=2 PerfScore 18.00
-G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000101000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; byrRegs -[x9] mov x2, x21 ; byrRegs +[x2] @@ -417,60 +417,78 @@ G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 blr x10 ; byrRegs -[x0 x2] ; gcr arg pop 0
- ldr w4, [fp, #0x5C] // [V16 loc14] - cmp w0, w4
+ ldr w2, [fp, #0x5C] // [V16 loc14] + cmp w0, w2
beq G_M55503_IG39
- add w1, w4, #1
+ add w1, w2, #1
cmp w0, w1
- bne G_M55503_IG44
+ beq G_M55503_IG29 + 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 + ; gcr arg pop 0 + ;; size=104 bbWeight=2 PerfScore 44.00 +G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr x0, [fp, #0x10] // [V124 cse0] ; byrRegs +[x0]
- ldr w5, [fp, #0x60] // [V15 loc13] - sub w1, w20, w5 - tbnz w1, #31, G_M55503_IG38 - ;; size=76 bbWeight=2 PerfScore 38.00 -G_M55503_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V70 tmp48] + ; GC ptr vars +{V70} + ldr w4, [fp, #0x60] // [V15 loc13] + sub w1, w20, w4 + str w1, [fp, #0x38] // [V69 tmp47] + tbnz w1, #31, G_M55503_IG44 + ;; size=24 bbWeight=2 PerfScore 15.00 +G_M55503_IG30: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V70}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; GC ptr vars -{V124} mov x2, x21 ; byrRegs +[x2] mov w3, w22
- movz x4, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint - movk x4, #0xD1FFAB1E LSL #16 - movk x4, #0xD1FFAB1E LSL #32 - ldr x4, [x4] - blr x4
+ movz x5, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint + movk x5, #0xD1FFAB1E LSL #16 + movk x5, #0xD1FFAB1E LSL #32 + ldr x5, [x5] + ; GC ptr vars -{V70} + blr x5
; byrRegs -[x0 x2] ; gcr arg pop 0 ldr x2, [fp, #0x40] // [V19 loc17] sub x2, x2, #1 cmp w0, #1
- bne G_M55503_IG47
+ bne G_M55503_IG45
;; size=44 bbWeight=2 PerfScore 21.00
-G_M55503_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
mov x13, x2 ldp w6, w5, [fp, #0x60] // [V15 loc13], [V14 loc12] ;; size=8 bbWeight=1 PerfScore 2.50
-G_M55503_IG31: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w24
- bhs G_M55503_IG33
+ bhs G_M55503_IG34
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG32: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str w13, [x23, w6, UXTW #2] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w5, w20
- bhs G_M55503_IG35
+ bhs G_M55503_IG36
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str wzr, [x19, w5, UXTW #2] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr w8, [fp, #0x34] // [V125 cse1] sxtw w5, w8 cmp w5, w22 bge G_M55503_IG10 ;; size=16 bbWeight=4 PerfScore 16.00
-G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x19 x21] ldp w1, w0, [x23, #0x08] orr x1, x1, x0, LSL #32 @@ -482,12 +500,12 @@ G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b movk xip0, #0xD1FFAB1E LSL #48 ldr xip1, [fp, #0xB8] // [V123 GsCookie] cmp xip0, xip1
- beq G_M55503_IG37
+ beq G_M55503_IG38
bl CORINFO_HELP_FAIL_FAST ; byrRegs -[x23] ; gcr arg pop 0 ;; size=48 bbWeight=1 PerfScore 14.50
-G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x27, x28, [sp, #0xD1FFAB1E] ldp x25, x26, [sp, #0xF0] ldp x23, x24, [sp, #0xE0] @@ -496,19 +514,11 @@ G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0xD1FFAB1E ret lr ;; size=28 bbWeight=1 PerfScore 7.00 ...

-8 (-1.33%) : 82045.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueImmutableDictionary():ubyte:this (Tier1-OSR)

@@ -13,70 +13,68 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String> ; V01 loc0 [V01,T06] ( 9, 799.92) ubyte -> x20 ; V02 loc1 [V02,T11] ( 6, 299.97) ref -> x21 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T17] ( 3, 1.02) ref -> x22 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T14] ( 3, 100.00) ref -> x22 class-hnd exact <<unknown class>>
; V04 loc3 [V04,T05] ( 17,1300.89) int -> x19 ; V05 loc4 [V05 ] ( 5, 400.96) ref -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.String> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x25 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x24 class-hnd exact "Inlining Arg" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ; V10 tmp4 [V10,T07] ( 8, 799.92) ubyte -> x0 "Inline return value spill temp" ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> ; V12 tmp6 [V12,T03] ( 6,2506.37) int -> x0 "Inline stloc first use temp"
-; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
+; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> ;* V15 tmp9 [V15,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V17 tmp11 [V17,T00] ( 14,4759.65) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V17 tmp11 [V17,T00] ( 14,4759.65) ref -> x25 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V08._root (fldOffset=0x0)" P-INDEP ;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref "field V08._comparers (fldOffset=0x8)" P-INDEP
-; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x26 "field V09._root (fldOffset=0x0)" P-INDEP -; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x27 "field V09._comparers (fldOffset=0x8)" P-INDEP
+; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x25 "field V09._root (fldOffset=0x0)" P-INDEP +; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x26 "field V09._comparers (fldOffset=0x8)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref "field V11._root (fldOffset=0x0)" P-INDEP
-; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x27 "field V11._comparers (fldOffset=0x8)" P-INDEP
+; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x26 "field V11._comparers (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T01] ( 3,3622.96) int -> x2 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 3,3028.82) ref -> x4 "CSE - aggressive" ; V26 cse2 [V26,T15] ( 3, 36.60) int -> x2 "CSE - aggressive" ; V27 cse3 [V27,T16] ( 3, 30.59) ref -> x4 "CSE - aggressive" ; V28 cse4 [V28,T09] ( 7, 400.98) int -> x23 "CSE - aggressive"
-; V29 cse5 [V29,T14] ( 4, 101.00) byref -> x24 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M61968_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - stp x25, x26, [sp, #0x58] - str x27, [sp, #0x68]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V13 tmp7], [V13 tmp7+0x08] - str xzr, [fp, #0x20] // [V13 tmp7+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V13 tmp7], [V13 tmp7+0x08] + str xzr, [fp, #0x28] // [V13 tmp7+0x10]
ldr w20, [fp, #0xB4] ldp x22, x21, [fp, #0xA0] ; gcrRegs +[x21-x22] ldr w19, [fp, #0x9C]
- ;; size=48 bbWeight=0.01 PerfScore 0.15
+ ;; size=44 bbWeight=0.01 PerfScore 0.14
G_M61968_IG02: ; bbWeight=0.01, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz ldr w23, [x22, #0x08] cmp w23, w19 ble G_M61968_IG22 tbnz w19, #31, G_M61968_IG11
- add x24, x22, #16 - ; byrRegs +[x24] - ;; size=20 bbWeight=0.01 PerfScore 0.06 -G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref, isz - ; gcrRegs -[x22] - ldr x25, [x24, w19, UXTW #3] - ; gcrRegs +[x25]
+ ;; size=16 bbWeight=0.01 PerfScore 0.05 +G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz + add x0, x22, #16 + ; byrRegs +[x0] + ldr x24, [x0, w19, UXTW #3] + ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24 - ldp x26, x27, [x21, #0x08] - ; gcrRegs +[x26-x27] - ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24 + ldp x25, x26, [x21, #0x08] + ; gcrRegs +[x25-x26] + ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0] + mov x1, x24
; gcrRegs +[x1] movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 @@ -85,44 +83,44 @@ G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=100000 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ldrsb wzr, [x26] - ;; size=48 bbWeight=98.99 PerfScore 2276.77 -G_M61968_IG04: ; bbWeight=1240.65, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz - ldr x4, [x26, #0x08]
+ ldrsb wzr, [x25] + ;; size=52 bbWeight=98.99 PerfScore 2326.27 +G_M61968_IG04: ; bbWeight=1240.65, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz + ldr x4, [x25, #0x08]
; gcrRegs +[x4] cbz x4, G_M61968_IG20
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2 beq G_M61968_IG08 ;; size=20 bbWeight=1240.65 PerfScore 10545.53
-G_M61968_IG05: ; bbWeight=1141.66, gcrefRegs=E200010 {x4 x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M61968_IG05: ; bbWeight=1141.66, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2 ble G_M61968_IG07 ;; size=8 bbWeight=1141.66 PerfScore 1712.49
-G_M61968_IG06: ; bbWeight=594.14, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG06: ; bbWeight=594.14, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG04 ;; size=8 bbWeight=594.14 PerfScore 2376.55
-G_M61968_IG07: ; bbWeight=547.52, gcrefRegs=A200010 {x4 x21 x25 x27}, byrefRegs=1000000 {x24}, byref - ; gcrRegs -[x26] +[x4] - mov x26, x4 - ; gcrRegs +[x26]
+G_M61968_IG07: ; bbWeight=547.52, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x25] +[x4] + mov x25, x4 + ; gcrRegs +[x25]
b G_M61968_IG04 ;; size=8 bbWeight=547.52 PerfScore 821.28
-G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, nogc
+G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x4]
- ldp x0, x2, [x26, #0x20] - stp x0, x2, [fp, #0x10] - ldr x0, [x26, #0x30] - str x0, [fp, #0x20]
+ ldp x0, x2, [x25, #0x20] + stp x0, x2, [fp, #0x18] + ldr x0, [x25, #0x30] + str x0, [fp, #0x28]
;; size=16 bbWeight=395.96 PerfScore 3563.64 G_M61968_IG09: ; bbWeight=395.96, isz, extend
- add x0, fp, #16 // [V13 tmp7]
+ add x0, fp, #24 // [V13 tmp7]
add x4, fp, #144 // [V05 loc4]
- mov x2, x25
+ mov x2, x24
; gcrRegs +[x2]
- mov x3, x27
+ mov x3, x26
; gcrRegs +[x3] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -132,7 +130,7 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend movk x5, #0xD1FFAB1E LSL #32 ldr x5, [x5] blr x5
- ; gcrRegs -[x2-x3 x25-x27]
+ ; gcrRegs -[x2-x3 x24-x26]
; gcr arg pop 0 eor w0, w20, w0 uxtb w20, w0 @@ -140,25 +138,24 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend cmp w23, w19 ble G_M61968_IG22 ;; size=68 bbWeight=395.96 PerfScore 4751.53
-G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
b G_M61968_IG03 ;; size=4 bbWeight=98.99 PerfScore 98.99 G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x22] - ; byrRegs -[x24]
cmp w19, w23 bhs G_M61968_IG19
- add x24, x22, #16 - ; byrRegs +[x24] - ldr x25, [x24, w19, UXTW #3] - ; gcrRegs +[x25]
+ add x0, x22, #16 + ; byrRegs +[x0] + ldr x24, [x0, w19, UXTW #3] + ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24 - ldp x26, x27, [x21, #0x08] - ; gcrRegs +[x26-x27] - ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24 + ldp x25, x26, [x21, #0x08] + ; gcrRegs +[x25-x26] + ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0] + mov x1, x24
; gcrRegs +[x1] movz x11, #0xD1FFAB1E movk x11, #0xD1FFAB1E LSL #16 @@ -166,46 +163,45 @@ G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=000 ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- ; byrRegs -[x24]
; gcr arg pop 0
- ldrsb wzr, [x26]
+ ldrsb wzr, [x25]
;; size=60 bbWeight=1.00 PerfScore 25.00
-G_M61968_IG12: ; bbWeight=12.53, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz - ldr x4, [x26, #0x08]
+G_M61968_IG12: ; bbWeight=12.53, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz + ldr x4, [x25, #0x08]
; gcrRegs +[x4] cbz x4, G_M61968_IG21
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2 beq G_M61968_IG16 ;; size=20 bbWeight=12.53 PerfScore 106.52
-G_M61968_IG13: ; bbWeight=11.53, gcrefRegs=E600010 {x4 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M61968_IG13: ; bbWeight=11.53, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2 ble G_M61968_IG15 ;; size=8 bbWeight=11.53 PerfScore 17.30
-G_M61968_IG14: ; bbWeight=6.00, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M61968_IG14: ; bbWeight=6.00, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG12 ;; size=8 bbWeight=6.00 PerfScore 24.01
-G_M61968_IG15: ; bbWeight=5.53, gcrefRegs=A600010 {x4 x21 x22 x25 x27}, byrefRegs=0000 {}, byref - ; gcrRegs -[x26] +[x4] - mov x26, x4 - ; gcrRegs +[x26]
+G_M61968_IG15: ; bbWeight=5.53, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x25] +[x4] + mov x25, x4 + ; gcrRegs +[x25]
b G_M61968_IG12 ...

+20 (+3.76%) : 42823.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T09] ( 4, 3.02) byref -> x22 single-def ; V03 arg3 [V03,T07] ( 4, 4.03) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.04) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.04) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=101.01 PerfScore 2323.22
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0 beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x0, x23, x28 lsl x0, x0, #1 @@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 sxtw w3, w0 ;; size=28 bbWeight=0.51 PerfScore 3.30 G_M3489_IG12: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.02 PerfScore 1.02
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - sub w0, w27, #1 - and w0, w27, w0 - sub w1, w0, #1 - and w27, w0, w1 - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - cbnz w27, G_M3489_IG09 - b G_M3489_IG05 - ;; size=28 bbWeight=0.01 PerfScore 0.04 -G_M3489_IG14: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22] str x23, [fp, #0xD1FFAB1E] // [V05 loc1] ;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M3489_IG15: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add w0, w23, w28 ;; size=8 bbWeight=1.01 PerfScore 2.52
-G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.01, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=1.01 PerfScore 9.59
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22] + sub w0, w27, #1 + and w0, w27, w0 + sub w1, w0, #1 + and w27, w0, w1 + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + cbnz w27, G_M3489_IG09 + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG06 + ;; size=48 bbWeight=0.01 PerfScore 0.08 +G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend @@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3895.80, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3895.79, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -278,7 +285,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+3.88%) : 96582.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T08] ( 4, 2.03) byref -> x22 single-def ; V03 arg3 [V03,T07] ( 4, 2.10) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,600.20) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,600.20) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -121,14 +121,14 @@ G_M3489_IG04: ; bbWeight=100.06, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=100.06 PerfScore 2301.33
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0 beq G_M3489_IG18
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -157,7 +157,7 @@ G_M3489_IG09: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG16
+ beq G_M3489_IG15
;; size=24 bbWeight=0.07 PerfScore 0.30 G_M3489_IG10: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] @@ -191,26 +191,17 @@ G_M3489_IG12: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 sxtw w3, w0 ;; size=28 bbWeight=0.02 PerfScore 0.11 G_M3489_IG13: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG15
+ cbz w3, G_M3489_IG17
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M3489_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - sub w0, w27, #1 - and w0, w27, w0 - sub w1, w0, #1 - and w27, w0, w1 - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - cbnz w27, G_M3489_IG09 - b G_M3489_IG05 - ;; size=28 bbWeight=0.01 PerfScore 0.04 -G_M3489_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22] str x23, [fp, #0xD1FFAB1E] // [V05 loc1] ;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M3489_IG16: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG15: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add w0, w23, w28 ;; size=8 bbWeight=0.06 PerfScore 0.14
-G_M3489_IG17: ; bbWeight=0.06, epilog, nogc, extend
+G_M3489_IG16: ; bbWeight=0.06, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -222,7 +213,23 @@ G_M3489_IG17: ; bbWeight=0.06, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=0.06 PerfScore 0.55
-G_M3489_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG17: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22] + sub w0, w27, #1 + and w0, w27, w0 + sub w1, w0, #1 + and w27, w0, w1 + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + cbnz w27, G_M3489_IG09 + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG06 + ;; size=48 bbWeight=0.01 PerfScore 0.08 +G_M3489_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M3489_IG19: ; bbWeight=0.00, epilog, nogc, extend @@ -257,7 +264,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 516, prolog size 52, PerfScore 3821.62, instruction count 129, allocated bytes for code 516 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 536, prolog size 52, PerfScore 3821.61, instruction count 134, allocated bytes for code 536 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -268,7 +275,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 129 (0x00081) Actual length = 516 (0x000204)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+3.88%) : 42015.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)

@@ -15,9 +15,9 @@ ; V02 arg2 [V02,T08] ( 4, 2.04) byref -> x22 single-def ; V03 arg3 [V03,T07] ( 4, 2.10) int -> x21 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,600.21) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,600.21) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref @@ -121,14 +121,14 @@ G_M3489_IG04: ; bbWeight=100.06, gcrefRegs=0000 {}, byrefRegs=480000 {x19 stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30] bne G_M3489_IG08 ;; size=72 bbWeight=100.06 PerfScore 2301.37
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add x23, x23, #8 ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] sxtw x0, w24 cmp x23, x0 beq G_M3489_IG18
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32] cmp x23, x25 @@ -157,7 +157,7 @@ G_M3489_IG09: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x lsr w0, w0, #1 mov w28, w0 cmp w21, #2
- beq G_M3489_IG16
+ beq G_M3489_IG15
;; size=24 bbWeight=0.07 PerfScore 0.30 G_M3489_IG10: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] @@ -191,26 +191,17 @@ G_M3489_IG12: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1 sxtw w3, w0 ;; size=28 bbWeight=0.02 PerfScore 0.12 G_M3489_IG13: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG15
+ cbz w3, G_M3489_IG17
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M3489_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz - sub w0, w27, #1 - and w0, w27, w0 - sub w1, w0, #1 - and w27, w0, w1 - str x23, [fp, #0xD1FFAB1E] // [V05 loc1] - cbnz w27, G_M3489_IG09 - b G_M3489_IG05 - ;; size=28 bbWeight=0.01 PerfScore 0.04 -G_M3489_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22] str x23, [fp, #0xD1FFAB1E] // [V05 loc1] ;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M3489_IG16: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG15: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] add w0, w23, w28 ;; size=8 bbWeight=0.06 PerfScore 0.15
-G_M3489_IG17: ; bbWeight=0.06, epilog, nogc, extend
+G_M3489_IG16: ; bbWeight=0.06, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -222,7 +213,23 @@ G_M3489_IG17: ; bbWeight=0.06, epilog, nogc, extend add sp, sp, #0xD1FFAB1E ret lr ;; size=40 bbWeight=0.06 PerfScore 0.56
-G_M3489_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG17: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz + ; byrRegs +[x19 x22] + sub w0, w27, #1 + and w0, w27, w0 + sub w1, w0, #1 + and w27, w0, w1 + str x23, [fp, #0xD1FFAB1E] // [V05 loc1] + cbnz w27, G_M3489_IG09 + ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1] + add x23, x23, #8 + ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3] + sxtw x0, w24 + cmp x23, x0 + bne G_M3489_IG06 + ;; size=48 bbWeight=0.01 PerfScore 0.08 +G_M3489_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19 x22]
movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M3489_IG19: ; bbWeight=0.00, epilog, nogc, extend @@ -257,7 +264,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 516, prolog size 52, PerfScore 3821.72, instruction count 129, allocated bytes for code 516 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 536, prolog size 52, PerfScore 3821.72, instruction count 134, allocated bytes for code 536 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================ Unwind Info: @@ -268,7 +275,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 129 (0x00081) Actual length = 516 (0x000204)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- 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

+0 (0.00%) : 9127.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> x19 class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate> ; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [fp+0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V03 loc2 [V03,T21] ( 13, 43 ) ref -> [fp+0x38] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>> @@ -21,7 +21,7 @@ ; V10 loc9 [V10,T14] ( 9, 53 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain> ; V11 loc10 [V11,T11] ( 4, 72 ) ubyte -> x22 ; V12 loc11 [V12,T23] ( 3, 40 ) int -> x21
-; V13 loc12 [V13,T02] ( 5,132 ) int -> x23
+; V13 loc12 [V13,T03] ( 5,132 ) int -> x23
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V15 loc14 [V15,T54] ( 3, 10 ) int -> x19 ; V16 loc15 [V16,T25] ( 5, 33 ) int -> x20 @@ -33,7 +33,7 @@ ;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V23 tmp5 [V23,T44] ( 2, 16 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Net.NetEventSource> ; V24 tmp6 [V24,T12] ( 8, 64 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T37] ( 3, 24 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]> ; V27 tmp9 [V27,T38] ( 3, 24 ) ref -> x21 class-hnd exact "dup spill" <System.Object[]> ;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback> @@ -144,10 +144,10 @@ ;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement> ;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 5,288 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> -; V137 tmp119 [V137,T03] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String> -; V138 tmp120 [V138,T01] ( 6,132 ) ref -> x25 -; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 5,320 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> +; V137 tmp119 [V137,T04] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String> +; V138 tmp120 [V138,T02] ( 6,148 ) ref -> x25 +; V139 tmp121 [V139,T01] ( 3,192 ) ref -> x25 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String> ;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource> @@ -165,8 +165,8 @@ ;* V154 tmp136 [V154,T107] ( 0, 0 ) ref -> zero-ref ;* V155 tmp137 [V155 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V156 tmp138 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
-; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x25 class-hnd "Inlining Arg" <System.FormattableString> -; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x24
+; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x24 class-hnd "Inlining Arg" <System.FormattableString> +; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x25
; V159 tmp141 [V159,T31] ( 2, 32 ) ref -> x26 ;* V160 tmp142 [V160 ] ( 0, 0 ) ref -> zero-ref ;* V161 tmp143 [V161 ] ( 0, 0 ) ref -> zero-ref @@ -235,7 +235,7 @@ ; V224 tmp206 [V224,T76] ( 3, 6 ) ref -> x1 single-def "argument with side effect" ; V225 tmp207 [V225,T77] ( 3, 6 ) ref -> x1 single-def "argument with side effect" ; V226 tmp208 [V226,T13] ( 6, 54 ) ref -> x1 "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> x0 "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> x0 "argument with side effect"
; V228 tmp210 [V228,T34] ( 2, 32 ) ref -> x0 "argument with side effect" ; V229 tmp211 [V229,T19] ( 3, 48 ) ref -> x0 "argument with side effect" ; V230 tmp212 [V230,T104] ( 2, 4 ) long -> x2 "argument with side effect" @@ -247,13 +247,13 @@ ; V236 cse1 [V236,T115] ( 3, 3 ) ref -> x1 "CSE - conservative" ; V237 cse2 [V237,T116] ( 3, 3 ) ref -> x1 "CSE - conservative" ; V238 cse3 [V238,T117] ( 3, 3 ) ref -> x1 "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
; V240 cse5 [V240,T118] ( 3, 3 ) ref -> x0 "CSE - conservative" ; V241 cse6 [V241,T82] ( 4, 4 ) ref -> x19 "CSE - conservative" ; V242 cse7 [V242,T80] ( 5, 5 ) ref -> x19 "CSE - conservative" ; V243 cse8 [V243,T119] ( 3, 3 ) int -> x21 "CSE - conservative" ; V244 cse9 [V244,T22] ( 6, 43 ) int -> x19 multi-def "CSE - moderate"
-; V245 cse10 [V245,T10] ( 3, 80 ) byref -> x24 "CSE - aggressive"
+; V245 cse10 [V245,T10] ( 3, 96 ) byref -> x24 "CSE - aggressive"
; V246 rat0 [V246,T79] ( 3, 6 ) ref -> x6 "delegate invoke call" ; ; Lcl frame size = 80 @@ -272,7 +272,7 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x48] // [V00 this] ; GC ptr vars +{V00} ;; size=44 bbWeight=1 PerfScore 10.00
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] stp xzr, xzr, [fp, #0x38] // [V03 loc2], [V02 loc1] ; GC ptr vars +{V02 V03} @@ -418,7 +418,7 @@ G_M34773_IG07: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0xA0 ret lr ;; size=24 bbWeight=1 PerfScore 6.00
-G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200020 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200040 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] ; GC ptr vars +{V02 V03 V21 V41} ldr x1, [x19, #0x30] @@ -475,7 +475,7 @@ G_M34773_IG09: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {} str xzr, [fp, #0x28] // [V05 loc4] ; GC ptr vars +{V05} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200020 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200040 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V21 V41} movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this movk x1, #0xD1FFAB1E LSL #16 @@ -494,7 +494,7 @@ G_M34773_IG10: ; bbWeight=1, gcVars=0000000000000000000000000000001000000 ldr w2, [x2] tbnz w2, #0, G_M34773_IG12 ;; size=52 bbWeight=1 PerfScore 17.00
-G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208020 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208040 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -681,7 +681,7 @@ G_M34773_IG16: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000 ;; size=24 bbWeight=1 PerfScore 6.00 G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -701,7 +701,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20] @@ -724,7 +724,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=44 bbWeight=1 PerfScore 23.50 G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -744,12 +744,12 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x20] ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] ldr x1, [x0] @@ -769,7 +769,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0 x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00 G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0 x19] @@ -810,7 +810,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ; gcrRegs +[x19] cbz x19, G_M34773_IG26 ;; size=104 bbWeight=1 PerfScore 42.50
-G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000020 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000040 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ; GC ptr vars -{V03} ldr x0, [x19] @@ -897,7 +897,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x20, [x0] ; gcrRegs +[x20] ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -911,7 +911,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x3 ; gcrRegs -[x0-x2 x19-x20] ; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=60 bbWeight=1 PerfScore 18.00 G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x48] // [V00 this] @@ -919,7 +919,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x1, [x0, #0x38] ; gcrRegs +[x1] ldr x1, [x1, #0x10]
- cbz x1, G_M34773_IG57
+ cbz x1, G_M34773_IG58
ldr x1, [x1, #0x08] mov x0, x1 ldr x1, [x1] @@ -930,7 +930,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] ; gcr arg pop 0 cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this @@ -956,7 +956,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [x0, #0x08] cbnz w19, G_M34773_IG29 ;; size=120 bbWeight=1 PerfScore 50.00
-G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208020 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208040 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x19, x20 ; gcrRegs +[x19] @@ -1021,23 +1021,23 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] ; gcr arg pop 0 cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
;; size=48 bbWeight=1 PerfScore 24.00 G_M34773_IG31: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x30] // [V04 loc3] ; gcrRegs +[x0]
- cbz x0, G_M34773_IG50
+ cbz x0, G_M34773_IG51
;; size=8 bbWeight=8 PerfScore 24.00 G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr x0, [fp, #0x30] // [V04 loc3] ; gcrRegs +[x0] ldr w19, [x0, #0x08]
- cbz w19, G_M34773_IG50
+ cbz w19, G_M34773_IG51
stp xzr, xzr, [fp, #0x18] // [V10 loc9], [V09 loc8] ; GC ptr vars +{V09 V10} ;; size=16 bbWeight=4 PerfScore 28.00
-G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x0, [fp, #0x48] // [V00 this] ; gcrRegs +[x0] @@ -1061,7 +1061,7 @@ G_M34773_IG33: ; bbWeight=4, gcVars=0000000000000000000000000000000000000 ; gcr arg pop 0 str x0, [fp, #0x20] // [V09 loc8] ...

+0 (0.00%) : 19071.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)

@@ -87,7 +87,7 @@ G_M30796_IG02: ; bbWeight=8, gcVars=0000000001800000 {V04 V06}, gcrefRegs ldr w1, [x20, #0x08] ldr w2, [x0, #0x08] cmp w1, w2
- bhs G_M30796_IG13
+ bhs G_M30796_IG06
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -100,14 +100,26 @@ G_M30796_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x2 str w0, [fp, #0x88] // [V14 loc4] ;; size=8 bbWeight=2 PerfScore 6.00 G_M30796_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
- tbnz w25, #1, G_M30796_IG18
+ tbz w25, #1, G_M30796_IG07
;; size=4 bbWeight=8 PerfScore 8.00
-G_M30796_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M30796_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + ; byrRegs -[x20 x24] + mov w0, #1 + b G_M30796_IG22 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M30796_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M30796_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz + ; gcrRegs +[x19] + ; byrRegs +[x20 x24]
ldr w0, [fp, #0x98] // [V10 loc0] cmp w0, w22
- bhs G_M30796_IG15
+ bhs G_M30796_IG11
;; size=12 bbWeight=4 PerfScore 14.00
-G_M30796_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M30796_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
ldr x0, [x19, #0x50] ; gcrRegs +[x0] ldr w1, [fp, #0x98] // [V10 loc0] @@ -116,7 +128,7 @@ G_M30796_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x2 ; gcrRegs +[x26] ldr w2, [x26, #0x08] cmp w2, w1
- bhi G_M30796_IG14
+ bhi G_M30796_IG09
ldr x0, [x0, #0x10] movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this movk x2, #0xD1FFAB1E LSL #16 @@ -127,23 +139,38 @@ G_M30796_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x2 ; gcrRegs -[x0 x26] ; gcr arg pop 0 sxtw w2, w0
- ;; size=60 bbWeight=2 PerfScore 55.00 -G_M30796_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz - tbz w25, #2, G_M30796_IG09
+ b G_M30796_IG10 + ;; size=64 bbWeight=2 PerfScore 57.00 +G_M30796_IG09: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1100000 {x20 x24}, byref + ; gcrRegs +[x26] + add x2, x26, #16 + ; byrRegs +[x2] + ldr w2, [x2, w1, UXTW #2] + ; byrRegs -[x2] + ;; size=8 bbWeight=2 PerfScore 7.00 +G_M30796_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref + ; gcrRegs -[x26] + b G_M30796_IG12 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M30796_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref + movn w2, #0 + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M30796_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz + tbz w25, #2, G_M30796_IG14
;; size=4 bbWeight=4 PerfScore 4.00
-G_M30796_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M30796_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
ldr w1, [fp, #0x98] // [V10 loc0] str w1, [fp, #0x94] // [V11 loc1] ldr w1, [x20, #0x08] str w1, [fp, #0x90] // [V12 loc2] ldr w1, [fp, #0x88] // [V14 loc4] str w1, [fp, #0x8C] // [V13 loc3]
- cbz w23, G_M30796_IG19
+ cbz w23, G_M30796_IG20
;; size=28 bbWeight=2 PerfScore 22.00
-G_M30796_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M30796_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
ldr w1, [fp, #0x98] // [V10 loc0] cmp w1, w21
- bge G_M30796_IG20
+ bge G_M30796_IG21
ldr w1, [x20, #0x08] ldr w0, [x19, #0xA4] lsl w0, w1, w0 @@ -152,55 +179,28 @@ G_M30796_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x2 ; gcrRegs +[x0] ldr w4, [x0, #0x08] cmp w3, w4
- bhs G_M30796_IG13
+ bhs G_M30796_IG06
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr w0, [x0, w3, UXTW #2] ; byrRegs -[x0] cmp w0, #0
- ble G_M30796_IG16
+ ble G_M30796_IG17
;; size=60 bbWeight=4 PerfScore 92.00
-G_M30796_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
+G_M30796_IG15: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
str w0, [x20, #0x08] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M30796_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
+G_M30796_IG16: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
mov w25, #1
- ;; size=4 bbWeight=8 PerfScore 4.00 -G_M30796_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz - str xzr, [fp, #0x10] // [V30 tmp12] - cbz w25, G_M30796_IG20 - ldr w0, [fp, #0x98] // [V10 loc0] - add w0, w0, #1 - str w0, [fp, #0x98] // [V10 loc0] - b G_M30796_IG02 - ;; size=24 bbWeight=4 PerfScore 26.00 -G_M30796_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ; byrRegs -[x20 x24] - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M30796_IG14: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1100000 {x20 x24}, byref - ; gcrRegs +[x19 x26] - ; byrRegs +[x20 x24] - add x2, x26, #16 - ; byrRegs +[x2] - ldr w2, [x2, w1, UXTW #2] - ; byrRegs -[x2] - b G_M30796_IG07 - ;; size=12 bbWeight=2 PerfScore 9.00 -G_M30796_IG15: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref - ; gcrRegs -[x26] - movn w2, #0 - b G_M30796_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M30796_IG16: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+ b G_M30796_IG19 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M30796_IG17: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
ldr x0, [x19, #0x10] ; gcrRegs +[x0] ldr w4, [x0, #0x08] cmp w1, w4
- bhs G_M30796_IG13
+ bhs G_M30796_IG06
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -218,32 +218,35 @@ G_M30796_IG16: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x blr x6 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbz w0, G_M30796_IG17
+ cbz w0, G_M30796_IG18
ldr x0, [fp, #0x10] // [V30 tmp12] ; gcrRegs +[x0] ldr w0, [x0, #0x14] ; gcrRegs -[x0] str w0, [x20, #0x08]
- b G_M30796_IG11
+ b G_M30796_IG16
;; size=76 bbWeight=16 PerfScore 416.00
-G_M30796_IG17: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
+G_M30796_IG18: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
mov w25, wzr
- b G_M30796_IG12 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M30796_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M30796_IG19: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz + str xzr, [fp, #0x10] // [V30 tmp12] + cbz w25, G_M30796_IG21 + ldr w0, [fp, #0x98] // [V10 loc0] + add w0, w0, #1 + str w0, [fp, #0x98] // [V10 loc0] + b G_M30796_IG02 + ;; size=24 bbWeight=4 PerfScore 26.00 +G_M30796_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ; byrRegs -[x20 x24] mov w0, #1
- b G_M30796_IG21
+ b G_M30796_IG22
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30796_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #1 - b G_M30796_IG21 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M30796_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30796_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M30796_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30796_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr w1, [fp, #0x98] // [V10 loc0] ldr x5, [fp, #0xB0] // [V04 arg4] ; byrRegs +[x5] @@ -269,7 +272,7 @@ G_M30796_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs +[x1] str w2, [x1] ;; size=60 bbWeight=1 PerfScore 25.00
-G_M30796_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M30796_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -278,7 +281,7 @@ G_M30796_IG22: ; bbWeight=1, epilog, nogc, extend add sp, sp, #128 ret lr ;; size=28 bbWeight=1 PerfScore 6.50
-G_M30796_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M30796_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; byrRegs -[x1] sub sp, sp, #224 stp fp, lr, [sp] @@ -289,7 +292,7 @@ G_M30796_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x3, fp, #224 str x3, [sp, #0x18] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M30796_IG24: ; bbWeight=0, gcVars=0000000001800000 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30796_IG25: ; bbWeight=0, gcVars=0000000001800000 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr w0, [fp, #0x98] // [V10 loc0] ldr x5, [fp, #0xB0] // [V04 arg4] ; byrRegs +[x5] @@ -310,7 +313,7 @@ G_M30796_IG24: ; bbWeight=0, gcVars=0000000001800000 {V04 V06}, gcrefRegs ldr x1, [fp, #0xF0] // [V09 arg9] str w0, [x1] ;; size=60 bbWeight=0 PerfScore 0.00
-G_M30796_IG25: ; bbWeight=0, funclet epilog, nogc, extend
+G_M30796_IG26: ; bbWeight=0, funclet epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -320,7 +323,7 @@ G_M30796_IG25: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 632, prolog size 56, PerfScore 961.25, instruction count 158, allocated bytes for code 632 (MethodHash=365a87b3) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)
+Total bytes of code 632, prolog size 56, PerfScore 967.25, instruction count 158, allocated bytes for code 632 (MethodHash=365a87b3) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)
...

+0 (0.00%) : 7468.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)

@@ -79,12 +79,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b ldr x1, [x1] blr x1 ; gcr arg pop 0
- cbz w0, G_M44603_IG12
+ cbnz w0, G_M44603_IG10
;; size=24 bbWeight=2 PerfScore 13.00
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - b G_M44603_IG10 - ;; size=4 bbWeight=4 PerfScore 4.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21] + b G_M44603_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -110,7 +112,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-Total bytes of code 156, prolog size 16, PerfScore 67.25, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 156, prolog size 16, PerfScore 63.75, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 42124.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)

@@ -42,7 +42,7 @@ ;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp26 [V32,T36] ( 3, 6 ) int -> x26 "Inline return value spill temp" ; V33 tmp27 [V33,T37] ( 4, 8 ) int -> x0 "Inline stloc first use temp"
-; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
+; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x22 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp30 [V36,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -66,7 +66,7 @@ ; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> x28 class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount> ;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount> ;* V57 tmp51 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 "Inlining Arg"
+; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V60 tmp54 [V60,T60] ( 2, 2 ) int -> x21 "Single return block return value" ; V61 tmp55 [V61,T25] ( 6, 13 ) int -> x20 "V01.[000..004)" @@ -110,7 +110,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w20, [fp, #0x38] // [V01 arg1] ldrb w0, [x19, #0x4F]
- cbnz w0, G_M55237_IG91
+ cbnz w0, G_M55237_IG92
bl <unknown method> ; gcr arg pop 0 sxtw w21, w0 @@ -120,7 +120,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x44] cmp w21, w0
- beq G_M55237_IG92
+ beq G_M55237_IG93
add x22, x19, #80 ; byrRegs +[x22] mov x0, x22 @@ -143,10 +143,10 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 { ldr x0, [x0, #0x10] ldr w1, [x0, #0xD0] cmp w1, #3
- blt G_M55237_IG93
+ blt G_M55237_IG94
ldr x0, [x0, #0xD8] ldr x0, [x0, #0x18]
- cbz x0, G_M55237_IG93
+ cbz x0, G_M55237_IG94
ldr x0, [x0] ; byrRegs +[x0] add x23, x0, #16 @@ -234,7 +234,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=2080000 {x19 x25}, byrefRegs=C0 ; gcrRegs +[x24] ldr w0, [x24, #0x18] cmp w0, #0
- bgt G_M55237_IG94
+ bgt G_M55237_IG95
ldr w1, [x19, #0x40] cmp w21, w1 bne G_M55237_IG35 @@ -289,10 +289,10 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 { ldr x0, [x0, #0x10] ldr w1, [x0, #0xD0] cmp w1, #3
- blt G_M55237_IG95
+ blt G_M55237_IG96
ldr x0, [x0, #0xD8] ldr x0, [x0, #0x18]
- cbz x0, G_M55237_IG95
+ cbz x0, G_M55237_IG96
ldr x0, [x0] ; byrRegs +[x0] add x23, x0, #16 @@ -514,7 +514,7 @@ G_M55237_IG36: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 ldr w0, [x19, #0x48] mov w1, #0xD1FFAB1E cmp w0, w1
- blo G_M55237_IG88
+ blo G_M55237_IG84
cmn w20, #1 beq G_M55237_IG38 ;; size=24 bbWeight=4 PerfScore 26.00 @@ -532,11 +532,11 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 sub w0, w0, w1 cmp w0, w20 ccmp w0, #0, nc, lt
- blt G_M55237_IG84
+ blt G_M55237_IG85
sub w26, w20, w0 ;; size=28 bbWeight=2 PerfScore 12.00 G_M55237_IG40: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
- cbz w26, G_M55237_IG84
+ cbz w26, G_M55237_IG85
;; size=4 bbWeight=2 PerfScore 2.00 G_M55237_IG41: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz cmp w25, #20 @@ -885,7 +885,7 @@ G_M55237_IG74: ; bbWeight=4, gcrefRegs=1080002 {x1 x19 x24}, byrefRegs=C0 ; byrRegs -[x2] ; gcr arg pop 0 sxtw w21, w0
- cbz w21, G_M55237_IG86
+ cbz w21, G_M55237_IG87
ldr x0, [x24, #0x10] ldr x26, [x19, #0x28] cmp x0, x26 @@ -966,13 +966,55 @@ G_M55237_IG83: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000 ; gcrRegs -[x28] b G_M55237_IG36 ;; size=4 bbWeight=4 PerfScore 4.00
-G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x19 x24]
+G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x23]
+ ldr w0, [x19, #0x48] + add w0, w0, #1 + str w0, [x19, #0x48] + ldr w0, [x24, #0x18] + add w0, w0, #1 + str w0, [x24, #0x18] + b G_M55237_IG89 + ;; size=28 bbWeight=0.50 PerfScore 5.00 +G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs -[x19 x24] + ldr w0, [x22] + cbnz w0, G_M55237_IG86 + movz x0, #0xD1FFAB1E + 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 + ; gcr arg pop 0 + ;; size=52 bbWeight=0.50 PerfScore 6.25 +G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref + stlr wzr, [x22] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M55237_IG87: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x22] + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M55237_IG88: ; bbWeight=0.50, epilog, nogc, extend + ldp x27, x28, [sp, #0x80] + ldp x25, x26, [sp, #0x70] + ldp x23, x24, [sp, #0x60] + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x90 + ret lr + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M55237_IG89: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; byrRegs +[x22]
mov x19, x22 ; byrRegs +[x19] ldr w0, [x19]
- cbnz w0, G_M55237_IG85
+ cbnz w0, G_M55237_IG90
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -987,56 +1029,11 @@ G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22} ; byrRegs -[x22] ; gcr arg pop 0 ;; size=56 bbWeight=0.50 PerfScore 6.50
-G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - stlr wzr, [x19] - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19] - mov w0, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M55237_IG87: ; bbWeight=0.50, epilog, nogc, extend - ldp x27, x28, [sp, #0x80] - ldp x25, x26, [sp, #0x70] - ldp x23, x24, [sp, #0x60] - ldp x21, x22, [sp, #0x50] - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x90 - ret lr - ;; size=28 bbWeight=0.50 PerfScore 3.50 -G_M55237_IG88: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs +[x19 x24] - ; byrRegs +[x22] - ldr w0, [x19, #0x48] - add w0, w0, #1 - str w0, [x19, #0x48] - ldr w0, [x24, #0x18] - add w0, w0, #1 - str w0, [x24, #0x18] - mov x19, x22 - ; gcrRegs -[x19] - ; byrRegs +[x19] - ldr w0, [x19] - cbnz w0, G_M55237_IG89 - movz x0, #0xD1FFAB1E - 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 -[x24] - ; byrRegs -[x22] - ; gcr arg pop 0 - ;; size=80 bbWeight=0.50 PerfScore 11.00 -G_M55237_IG89: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stlr wzr, [x19] uxtb w0, w21 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG91: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x80] ldp x25, x26, [sp, #0x70] ldp x23, x24, [sp, #0x60] @@ -1045,7 +1042,7 @@ G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x90 ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] ; byrRegs -[x19] mov x0, x19 @@ -1059,7 +1056,7 @@ G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -1099,7 +1096,7 @@ G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] ; gcr arg pop 0 ;; size=88 bbWeight=0 PerfScore 0.00
-G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M55237_IG94: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x19] ; byrRegs +[x22] mov w0, #3 @@ -1110,7 +1107,7 @@ G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; byrRegs +[x23] ...

+20 (+3.91%) : 44123.dasm - System.String:Concat(System.String[]):System.String (Tier1)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -33,10 +33,10 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value" ; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG23 - cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25 + cbz w21, G_M46295_IG19
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG17 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG14 - cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16 + cbnz x23, G_M46295_IG12
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08] sub w0, w0, w24 cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12 ; byrRegs +[x2] sbfiz x0, x24, #1, #32 @@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================ Unwind Info: @@ -266,7 +277,7 @@ Unwind Info: E bit : 0 ...

+40 (+4.29%) : 47252.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.BigStruct]:IntroSort(System.Span1[System.Collections.BigStruct],int) (Tier1)

@@ -9,8 +9,8 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.BigStruct]>
-; V01 arg1 [V01,T03] ( 7, 19 ) int -> x20 -; V02 loc0 [V02,T01] ( 15, 29 ) int -> x22
+; V01 arg1 [V01,T04] ( 7, 19 ) int -> x20 +; V02 loc0 [V02,T00] ( 16, 33 ) int -> x22
; V03 loc1 [V03,T07] ( 3, 12 ) int -> x23 ; V04 loc2 [V04,T14] ( 9, 4.50) byref -> x21 single-def ; V05 loc3 [V05,T15] ( 9, 4.50) byref -> x22 single-def @@ -72,7 +72,7 @@ ;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V62 tmp54 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V64 tmp56 [V64,T00] ( 4, 32 ) int -> x22 "Inlining Arg"
+; V64 tmp56 [V64,T01] ( 4, 32 ) int -> x22 "Inlining Arg"
;* V65 tmp57 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Collections.BigStruct]> ; V66 tmp58 [V66,T05] ( 2, 16 ) byref -> x24 "Inlining Arg" ;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -99,7 +99,7 @@ ; V88 tmp80 [V88,T27] ( 3, 1.50) int -> x0 "V29.[012..016)" ; V89 tmp81 [V89,T28] ( 3, 1.50) int -> x0 "V38.[012..016)" ; V90 tmp82 [V90,T29] ( 3, 1.50) int -> x0 "V47.[012..016)"
-; V91 cse0 [V91,T04] ( 24, 16.50) ref -> x1 multi-def "CSE - aggressive"
+; V91 cse0 [V91,T03] ( 27, 22.50) ref -> x1 multi-def "CSE - aggressive"
; V92 cse1 [V92,T17] ( 6, 3 ) int -> x20 multi-def "CSE - moderate" ; V93 cse2 [V93,T30] ( 3, 1.50) int -> x1 "CSE - moderate" ; V94 cse3 [V94,T31] ( 3, 1.50) int -> x1 "CSE - moderate" @@ -153,15 +153,31 @@ G_M52646_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, G_M52646_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz sxtw w22, w21 cmp w21, #1
- ble G_M52646_IG22
+ ble G_M52646_IG24
;; size=12 bbWeight=1 PerfScore 2.00 G_M52646_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w22, #16
- ble G_M52646_IG11 - cbz w20, G_M52646_IG21
+ ble G_M52646_IG13 + cbz w20, G_M52646_IG23
sub w20, w20, #1 cmp w22, w21
- bhi G_M52646_IG24
+ bhi G_M52646_IG26 + tbz w22, #31, G_M52646_IG09 + ;; size=28 bbWeight=4 PerfScore 22.00 +G_M52646_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + movz x1, #8 + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + mov x0, x1 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #191 LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0] + ;; size=36 bbWeight=2 PerfScore 15.00 +G_M52646_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w1, w22 mov x0, x19 ; byrRegs +[x0] @@ -178,13 +194,13 @@ G_M52646_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by add x1, x0, w22, UXTW mov w2, w21 cmp x1, x2
- bhi G_M52646_IG24
+ bhi G_M52646_IG26
lsl x0, x0, #5 add x24, x19, x0 ; byrRegs +[x24]
- tbz w22, #31, G_M52646_IG09 - ;; size=96 bbWeight=4 PerfScore 74.00 -G_M52646_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ tbz w22, #31, G_M52646_IG11 + ;; size=72 bbWeight=4 PerfScore 56.00 +G_M52646_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -197,7 +213,7 @@ G_M52646_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=2 PerfScore 15.00
-G_M52646_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M52646_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
mov x0, x24 ; byrRegs +[x0] sxtw w1, w22 @@ -212,14 +228,14 @@ G_M52646_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 cmp w22, #1 bgt G_M52646_IG07 ;; size=44 bbWeight=4 PerfScore 36.00
-G_M52646_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52646_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M52646_IG22
+ b G_M52646_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M52646_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M52646_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19] cmp w22, #2
- bne G_M52646_IG13
+ bne G_M52646_IG15
add x22, x19, #32 ; byrRegs +[x22] ldrsb wzr, [x19] @@ -228,52 +244,9 @@ G_M52646_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; byrRegs +[x1] ldr w20, [x1] cmp w20, w0
- blt G_M52646_IG22
+ blt G_M52646_IG24
cmp w20, w0
- ble G_M52646_IG22 - cmp x19, x22 - bne G_M52646_IG12 - movz x1, #8 - ; byrRegs -[x1] - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1 - ; gcrRegs +[x0] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #191 LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0] - ;; size=88 bbWeight=0.50 PerfScore 11.75 -G_M52646_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref - ldp q16, q17, [x19] - stp q16, q17, [fp, #0x70] - ldp q16, q17, [x22] - stp q16, q17, [x19] - ldp q16, q17, [fp, #0x70] - stp q16, q17, [x22] - b G_M52646_IG22 - ;; size=28 bbWeight=0.50 PerfScore 6.00 -G_M52646_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; byrRegs -[x22] - cmp w22, #3 - bne G_M52646_IG19 - cmp w21, #2 - bls G_M52646_IG23 - add x21, x19, #64 - ; byrRegs +[x21] - add x22, x19, #32 - ; byrRegs +[x22] - ldrsb wzr, [x19] - ldr w0, [x22, #0x0C] - add x1, x19, #12 - ; byrRegs +[x1] - ldr w20, [x1] - cmp w20, w0 - blt G_M52646_IG15 - cmp w20, w0 - ble G_M52646_IG15
+ ble G_M52646_IG24
cmp x19, x22 bne G_M52646_IG14 movz x1, #8 @@ -288,28 +261,39 @@ G_M52646_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ldr x2, [x2] blr x2 ; gcrRegs -[x0]
- ;; size=100 bbWeight=0.50 PerfScore 12.75 -G_M52646_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+ ;; size=88 bbWeight=0.50 PerfScore 11.75 +G_M52646_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
ldp q16, q17, [x19]
- stp q16, q17, [fp, #0x50]
+ stp q16, q17, [fp, #0x70]
ldp q16, q17, [x22] stp q16, q17, [x19]
- ldp q16, q17, [fp, #0x50]
+ ldp q16, q17, [fp, #0x70]
stp q16, q17, [x22]
- ;; size=24 bbWeight=0.50 PerfScore 5.50 -G_M52646_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz - ldr w0, [x21, #0x0C]
+ b G_M52646_IG24 + ;; size=28 bbWeight=0.50 PerfScore 6.00 +G_M52646_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ; byrRegs -[x22] + cmp w22, #3 + bne G_M52646_IG21 + cmp w21, #2 + bls G_M52646_IG25 + add x21, x19, #64 + ; byrRegs +[x21] + add x22, x19, #32 + ; byrRegs +[x22] + ldrsb wzr, [x19] + ldr w0, [x22, #0x0C]
add x1, x19, #12 ; byrRegs +[x1]
- ldr w1, [x1] - ; byrRegs -[x1] - cmp w1, w0
+ ldr w20, [x1] + cmp w20, w0
blt G_M52646_IG17
- cmp w1, w0
+ cmp w20, w0
ble G_M52646_IG17
- cmp x19, x21
+ cmp x19, x22
bne G_M52646_IG16 movz x1, #8
+ ; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 mov x0, x1 @@ -320,27 +304,26 @@ G_M52646_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 ldr x2, [x2] blr x2 ; gcrRegs -[x0]
- ;; size=72 bbWeight=0.50 PerfScore 9.25
+ ;; size=100 bbWeight=0.50 PerfScore 12.75
G_M52646_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref ldp q16, q17, [x19]
- stp q16, q17, [fp, #0x30] - ldp q16, q17, [x21]
+ stp q16, q17, [fp, #0x50] + ldp q16, q17, [x22]
stp q16, q17, [x19]
- ldp q16, q17, [fp, #0x30] - stp q16, q17, [x21]
+ ldp q16, q17, [fp, #0x50] + stp q16, q17, [x22]
;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M52646_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz - ; byrRegs -[x19]
+G_M52646_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
ldr w0, [x21, #0x0C]
- add x1, x22, #12
+ add x1, x19, #12
; byrRegs +[x1] ldr w1, [x1] ; byrRegs -[x1] cmp w1, w0
- blt G_M52646_IG22
+ blt G_M52646_IG19
cmp w1, w0
- ble G_M52646_IG22
...

coreclr_tests.run.windows.arm64.checked.mch

-28 (-2.82%) : 526241.dasm - Test_arrayDim:TestEntryPoint() (FullOpts)

@@ -16,7 +16,7 @@ ; V05 tmp2 [V05,T01] ( 11, 94.52) ref -> x25 class-hnd exact "Inlining Arg" <System.String> ; V06 tmp3 [V06,T06] ( 8, 30.36) int -> x27 "Inline stloc first use temp" ; V07 tmp4 [V07,T14] ( 6, 22.77) int -> x0 "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 12, 38.10) ref -> [fp+0x18] class-hnd exact "Inline stloc first use temp" <System.String>
+; V08 tmp5 [V08,T04] ( 12, 38.10) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.String>
;* V09 tmp6 [V09,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -25,20 +25,20 @@ ;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp14 [V17,T07] ( 4, 30.36) byref -> registers "Inlining Arg" -; V18 tmp15 [V18,T08] ( 4, 30.36) byref -> registers "Inlining Arg"
+; V17 tmp14 [V17,T07] ( 4, 30.36) byref -> x0 "Inlining Arg" +; V18 tmp15 [V18,T08] ( 4, 30.36) byref -> x1 "Inlining Arg"
; V19 tmp16 [V19,T11] ( 4, 30.36) long -> x26 "Inlining Arg" ;* V20 tmp17 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V24 tmp21 [V24,T09] ( 4, 30.36) byref -> x25 "Inlining Arg" -; V25 tmp22 [V25,T10] ( 4, 30.36) byref -> x28 "Inlining Arg"
+; V24 tmp21 [V24,T09] ( 4, 30.36) byref -> registers "Inlining Arg" +; V25 tmp22 [V25,T10] ( 4, 30.36) byref -> x25 "Inlining Arg"
; V26 tmp23 [V26,T17] ( 2, 16 ) ref -> x1 "argument with side effect" ; V27 cse0 [V27,T02] ( 18, 68.32) ref -> x1 multi-def "CSE - aggressive" ; V28 cse1 [V28,T05] ( 5, 37.28) int -> x26 "CSE - aggressive"
-; V29 cse2 [V29,T16] ( 3, 22.54) int -> x28 "CSE - aggressive" -; V30 cse3 [V30,T15] ( 3, 22.54) byref -> [fp+0x10] spill-single-def "CSE - aggressive"
+; V29 cse2 [V29,T16] ( 3, 22.54) int -> x23 "CSE - aggressive" +; V30 cse3 [V30,T15] ( 3, 22.54) byref -> [fp+0x18] spill-single-def "CSE - aggressive"
; V31 cse4 [V31,T20] ( 2, 5 ) ref -> x20 hoist "CSE - aggressive" ; V32 cse5 [V32,T21] ( 2, 5 ) long -> x21 hoist "CSE - aggressive" ; V33 cse6 [V33,T18] ( 4, 10.16) int -> x23 "CSE - aggressive" @@ -130,36 +130,37 @@ G_M49663_IG07: ; bbWeight=7.51, gcrefRegs=2500000 {x20 x22 x25}, byrefReg sxtw w27, w26 add w0, w27, #1 tbnz w0, #31, G_M49663_IG27
+ bl <unknown method> + ; gcrRegs +[x0] + mov x28, x0 + ; gcrRegs +[x28] + cbnz x28, G_M49663_IG10
b G_M49663_IG09
- ;; size=16 bbWeight=7.51 PerfScore 22.54
+ ;; size=28 bbWeight=7.51 PerfScore 41.33
G_M49663_IG08: ; bbWeight=7.92, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x0 x25 x28]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 b G_M49663_IG13 ;; size=16 bbWeight=7.92 PerfScore 19.80
-G_M49663_IG09: ; bbWeight=7.51, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x25] - bl <unknown method> - ; gcrRegs +[x0] - mov x23, x0 - ; gcrRegs +[x23] - cbnz x23, G_M49663_IG10
+G_M49663_IG09: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref + ; gcrRegs +[x25 x28]
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 mov x0, x1
+ ; gcrRegs +[x0]
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=48 bbWeight=7.51 PerfScore 75.15 -G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byrefRegs=0000 {}, byref, isz - ldr w28, [x23, #0x08] - cmp w28, w26
+ ;; size=36 bbWeight=7.51 PerfScore 56.36 +G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz + ldr w23, [x28, #0x08] + cmp w23, w26
bge G_M49663_IG11 movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 @@ -173,10 +174,10 @@ G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre blr x2 ; gcrRegs -[x0] ;; size=48 bbWeight=7.51 PerfScore 90.18
-G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byrefRegs=0000 {}, byref, isz - add x3, x23, #12
+G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz + add x3, x28, #12
; byrRegs +[x3]
- str x3, [fp, #0x10] // [V30 cse3]
+ str x3, [fp, #0x18] // [V30 cse3]
; GC ptr vars +{V30} mov x0, x3 ; byrRegs +[x0] @@ -191,7 +192,7 @@ G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre blr x4 ; gcrRegs -[x25] ; byrRegs -[x0-x1 x3]
- sub w0, w28, w27
+ sub w0, w23, w27
cmp w0, #0 bgt G_M49663_IG12 movz x1, #8 @@ -206,22 +207,24 @@ G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre blr x2 ; gcrRegs -[x0] ;; size=92 bbWeight=7.51 PerfScore 142.78
-G_M49663_IG12: ; bbWeight=7.51, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
+G_M49663_IG12: ; bbWeight=7.51, gcrefRegs=10500000 {x20 x22 x28}, byrefRegs=0000 {}, byref
sbfiz x0, x27, #1, #32
- ldr x25, [fp, #0x10] // [V30 cse3]
+ ldr x25, [fp, #0x18] // [V30 cse3]
; byrRegs +[x25]
- add x25, x25, x0 - movz x28, #0xD1FFAB1E - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #0xD1FFAB1E LSL #32 - ldrh w0, [x28] - strh w0, [x25] - mov x0, x23
+ add x23, x25, x0 + ; byrRegs +[x23] + movz x25, #0xD1FFAB1E + ; byrRegs -[x25] + movk x25, #0xD1FFAB1E LSL #16 + movk x25, #0xD1FFAB1E LSL #32 + ldrh w0, [x25] + strh w0, [x23] + mov x0, x28
; gcrRegs +[x0] ;; size=36 bbWeight=7.51 PerfScore 71.39 G_M49663_IG13: ; bbWeight=15.84, gcVars=0000000000000000 {}, gcrefRegs=500001 {x0 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x23] - ; byrRegs -[x25]
+ ; gcrRegs -[x28] + ; byrRegs -[x23]
; GC ptr vars -{V30} movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -263,111 +266,97 @@ G_M49663_IG17: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefReg ldr w27, [x25, #0x08] add w0, w27, #1 tbnz w0, #31, G_M49663_IG27
+ bl <unknown method> + ; gcrRegs +[x0] + mov x28, x0 + ; gcrRegs +[x28] + cbnz x28, G_M49663_IG20
b G_M49663_IG19
- ;; size=16 bbWeight=0.08 PerfScore 0.42
+ ;; size=28 bbWeight=0.08 PerfScore 0.61
G_M49663_IG18: ; bbWeight=0.08, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x0 x25 x28]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 b G_M49663_IG23 ;; size=16 bbWeight=0.08 PerfScore 0.20
-G_M49663_IG19: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x25] - bl <unknown method> - ; gcrRegs +[x0] - str x0, [fp, #0x18] // [V08 tmp5] - ; GC ptr vars +{V08} - cbnz x0, G_M49663_IG20
+G_M49663_IG19: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref + ; gcrRegs +[x25 x28]
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 mov x0, x1
+ ; gcrRegs +[x0]
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=48 bbWeight=0.08 PerfScore 0.80 -G_M49663_IG20: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz - ldr w1, [x25, #0x08] - ldr x0, [fp, #0x18] // [V08 tmp5] - ; gcrRegs +[x0] - ldr w2, [x0, #0x08] - cmp w1, w2
+ ;; size=36 bbWeight=0.08 PerfScore 0.57 +G_M49663_IG20: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz + ldr w0, [x25, #0x08] + ldr w1, [x28, #0x08] + cmp w0, w1
ble G_M49663_IG21 movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 mov x0, x1
+ ; gcrRegs +[x0]
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=56 bbWeight=0.08 PerfScore 1.29 -G_M49663_IG21: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x18] // [V08 tmp5] - ; gcrRegs +[x0] - add x2, x0, #12 - ; byrRegs +[x2] - mov x1, x2
+ ;; size=52 bbWeight=0.08 PerfScore 1.14 +G_M49663_IG21: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz + add x0, x28, #12 + ; byrRegs +[x0] + add x1, x25, #12
; byrRegs +[x1]
- add x2, x25, #12 - mov x3, x2 - ; byrRegs +[x3]
ldr w26, [x25, #0x08] lsl x2, x26, #1
- ; byrRegs -[x2] - mov x0, x1 - ; gcrRegs -[x0] - ; byrRegs +[x0] - mov x1, x3
movz x3, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x3]
movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3 ; gcrRegs -[x25] ; byrRegs -[x0-x1]
- ldr x0, [fp, #0x18] // [V08 tmp5] - ; gcrRegs +[x0] - ldr w1, [x0, #0x08] - sub w1, w1, w27 - cmp w1, #0
+ ldr w0, [x28, #0x08] + sub w0, w0, w27 + cmp w0, #0
bgt G_M49663_IG22 ...

-8 (-2.22%) : 304013.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)

@@ -38,12 +38,12 @@ G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp w20, w21, [fp, #0x58] ;; size=36 bbWeight=1 PerfScore 12.50 G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG11
+ b G_M3612_IG09
;; size=4 bbWeight=1 PerfScore 1.00 G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] cmp w23, w0
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x19, #16 ; byrRegs +[x0] ldr x22, [x0, w23, UXTW #3] @@ -59,12 +59,12 @@ G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 G_M3612_IG05: ; bbWeight=10.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x10] cmp w20, w0
- bhs G_M3612_IG18
+ bhs G_M3612_IG17
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w20, w1
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -96,28 +96,15 @@ G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x10] sub w21, w0, #2
- tbz w21, #31, G_M3612_IG10
+ tbnz w21, #31, G_M3612_IG13
;; size=12 bbWeight=0.52 PerfScore 2.33
-G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] - add w23, w23, #1 - ldr w0, [x19, #0x08] - cmp w0, w23 - ble G_M3612_IG16 - b G_M3612_IG03 - ;; size=20 bbWeight=0.52 PerfScore 3.11 -G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ldr wzr, [x19, #0x08] - b G_M3612_IG08 - ;; size=8 bbWeight=0.49 PerfScore 1.97 -G_M3612_IG10: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x22]
+G_M3612_IG08: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
sub w20, w21, #1 ;; size=4 bbWeight=9.69 PerfScore 4.84
-G_M3612_IG11: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - tbnz w20, #31, G_M3612_IG13
+G_M3612_IG09: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + tbnz w20, #31, G_M3612_IG11
;; size=4 bbWeight=9.69 PerfScore 9.69
-G_M3612_IG12: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG10: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22 ; gcrRegs +[x0] mov w1, w20 @@ -129,24 +116,31 @@ G_M3612_IG12: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=000 blr x3 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M3612_IG17
+ cbnz w0, G_M3612_IG16
sub w20, w20, #1
- tbz w20, #31, G_M3612_IG12
+ tbz w20, #31, G_M3612_IG10
;; size=44 bbWeight=90.31 PerfScore 857.99
-G_M3612_IG13: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG11: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1
- tbz w21, #31, G_M3612_IG10
+ tbz w21, #31, G_M3612_IG08
;; size=8 bbWeight=9.69 PerfScore 14.53
-G_M3612_IG14: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3612_IG12: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M3612_IG09 - ;; size=4 bbWeight=0.49 PerfScore 0.49 -G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr wzr, [x19, #0x08] + ;; size=4 bbWeight=0.49 PerfScore 1.48 +G_M3612_IG13: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + add w23, w23, #1 + ldr w0, [x19, #0x08] + cmp w0, w23 + ble G_M3612_IG15 + b G_M3612_IG03 + ;; size=20 bbWeight=0.52 PerfScore 3.11 +G_M3612_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -154,7 +148,7 @@ G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add sp, sp, #64 ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M3612_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x22] mov x0, x22 ; gcrRegs +[x0] @@ -167,9 +161,9 @@ G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M3612_IG13
+ b G_M3612_IG11
;; size=36 bbWeight=0 PerfScore 0.00
-G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3612_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x22] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -180,7 +174,7 @@ G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 360, prolog size 36, PerfScore 1272.15, instruction count 90, allocated bytes for code 360 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
+Total bytes of code 352, prolog size 36, PerfScore 1271.17, instruction count 88, allocated bytes for code 352 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -191,7 +185,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-40 (-1.45%) : 407740.dasm - Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser:ParseFields(int,int):Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo:this (FullOpts)

@@ -10,30 +10,30 @@ ; ; V00 this [V00,T03] ( 10, 22 ) ref -> [fp+0xD0] this class-hnd single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser> ; V01 arg1 [V01,T36] ( 4, 8 ) int -> x21 single-def
-; V02 arg2 [V02,T33] ( 6, 9 ) int -> x20 single-def -; V03 loc0 [V03,T08] ( 10, 21 ) ushort -> x23 -; V04 loc1 [V04,T06] ( 9, 22 ) ref -> [fp+0xC8] class-hnd exact spill-single-def <<unknown class>>
+; V02 arg2 [V02,T34] ( 6, 9 ) int -> x20 single-def +; V03 loc0 [V03,T09] ( 10, 21 ) ushort -> x23 +; V04 loc1 [V04,T07] ( 9, 22 ) ref -> [fp+0xC8] class-hnd exact spill-single-def <<unknown class>>
; V05 loc2 [V05,T02] ( 11, 28 ) ref -> [fp+0xC0] class-hnd exact spill-single-def <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch]> ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo> ; V07 loc4 [V07,T11] ( 6, 19 ) int -> x26 ; V08 loc5 [V08 ] ( 23, 52 ) struct (24) [fp+0x138] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch> ; V09 loc6 [V09,T00] ( 17, 40.50) long -> x27
-; V10 loc7 [V10,T09] ( 8, 20.50) ref -> [fp+0xB8] class-hnd <System.String>
+; V10 loc7 [V10,T06] ( 8, 22.50) ref -> [fp+0xB8] class-hnd <System.String>
; V11 loc8 [V11,T17] ( 6, 14 ) ushort -> [fp+0x134] ; V12 loc9 [V12,T38] ( 3, 10 ) ushort -> x0
-; V13 loc10 [V13,T73] ( 2, 4 ) int -> x2
+; V13 loc10 [V13,T74] ( 2, 4 ) int -> x2
; V14 loc11 [V14,T59] ( 3, 6 ) ref -> x0 class-hnd <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo> ; V15 loc12 [V15,T60] ( 3, 6 ) ref -> [fp+0xB0] class-hnd exact spill-single-def <System.String> ; V16 loc13 [V16 ] ( 3, 6 ) int -> [fp+0x128] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V17 loc14 [V17,T19] ( 6, 11.96) long -> [fp+0x120] spill-single-def
+; V17 loc14 [V17,T21] ( 6, 11.96) long -> [fp+0x120] spill-single-def
;* V18 loc15 [V18,T94] ( 0, 0 ) long -> zero-ref
-; V19 loc16 [V19,T74] ( 2, 4 ) int -> x0 -; V20 loc17 [V20,T41] ( 4, 8 ) ref -> [fp+0xA8] class-hnd exact spill-single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser+<>c__DisplayClass2_0>
+; V19 loc16 [V19,T75] ( 2, 4 ) int -> x0 +; V20 loc17 [V20,T42] ( 4, 8 ) ref -> [fp+0xA8] class-hnd exact spill-single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser+<>c__DisplayClass2_0>
;* V21 loc18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Func`1[System.Collections.Generic.IDictionary`2[long,System.String]]>
-; V22 loc19 [V22,T45] ( 4, 8 ) ushort -> x23 -; V23 loc20 [V23,T46] ( 4, 8 ) ushort -> x27 -; V24 loc21 [V24,T34] ( 5, 10 ) ushort -> [fp+0x11C] -; V25 loc22 [V25,T20] ( 6, 12 ) int -> x23
+; V22 loc19 [V22,T46] ( 4, 8 ) ushort -> x23 +; V23 loc20 [V23,T47] ( 4, 8 ) ushort -> x27 +; V24 loc21 [V24,T35] ( 5, 10 ) ushort -> [fp+0x11C] +; V25 loc22 [V25,T22] ( 6, 12 ) int -> x23
;# V26 OutArgs [V26 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V27 tmp1 [V27,T61] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V28 tmp2 [V28,T62] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch]> @@ -46,22 +46,22 @@ ; V35 tmp9 [V35,T56] ( 7, 7 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>> ; V36 tmp10 [V36,T88] ( 3, 3 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>> ; V37 tmp11 [V37,T89] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V38 tmp12 [V38,T42] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
+; V38 tmp12 [V38,T43] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
; V39 tmp13 [V39,T04] ( 3, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Regex>
-; V40 tmp14 [V40,T22] ( 4, 12 ) ref -> x1
+; V40 tmp14 [V40,T19] ( 4, 14 ) ref -> x1
; V41 tmp15 [V41,T65] ( 2, 6 ) ref -> x2 ;* V42 tmp16 [V42,T84] ( 0, 0 ) ref -> zero-ref ;* V43 tmp17 [V43,T87] ( 0, 0 ) int -> zero-ref
-; V44 tmp18 [V44,T01] ( 10, 32 ) ref -> registers -; V45 tmp19 [V45,T35] ( 4, 10 ) ref -> [fp+0xA0] -;* V46 tmp20 [V46,T67] ( 0, 0 ) ref -> zero-ref -;* V47 tmp21 [V47,T75] ( 0, 0 ) int -> zero-ref -; V48 tmp22 [V48,T47] ( 3, 8 ) int -> [fp+0x118] -; V49 tmp23 [V49,T16] ( 2, 16 ) ref -> x1 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> -; V50 tmp24 [V50,T07] ( 9, 22 ) ref -> [fp+0x98] -; V51 tmp25 [V51,T24] ( 3, 12 ) ref -> [fp+0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> -; V52 tmp26 [V52,T25] ( 3, 12 ) byref -> [fp+0x88] spill-single-def "finalizable newobj spill" -; V53 tmp27 [V53,T49] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
+; V44 tmp18 [V44,T01] ( 10, 34 ) ref -> [fp+0xA0] +; V45 tmp19 [V45,T20] ( 4, 14 ) ref -> [fp+0x98] +;* V46 tmp20 [V46,T66] ( 0, 0 ) ref -> zero-ref +;* V47 tmp21 [V47,T67] ( 0, 0 ) int -> zero-ref +; V48 tmp22 [V48,T39] ( 3, 10 ) int -> [fp+0x118] +; V49 tmp23 [V49,T16] ( 2, 16 ) ref -> x28 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> +; V50 tmp24 [V50,T08] ( 9, 22 ) ref -> registers +; V51 tmp25 [V51,T25] ( 3, 12 ) ref -> [fp+0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> +; V52 tmp26 [V52,T26] ( 3, 12 ) byref -> x28 "finalizable newobj spill" +; V53 tmp27 [V53,T49] ( 2, 8 ) ref -> x28 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
;* V54 tmp28 [V54 ] ( 0, 0 ) ref -> zero-ref ;* V55 tmp29 [V55,T91] ( 0, 0 ) ref -> zero-ref ;* V56 tmp30 [V56,T95] ( 0, 0 ) int -> zero-ref @@ -73,26 +73,26 @@ ; V62 tmp36 [V62,T58] ( 4, 6 ) long -> x0 "Inline stloc first use temp" ;* V63 tmp37 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo> ;* V64 tmp38 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
-; V65 tmp39 [V65,T12] ( 6, 18 ) ref -> [fp+0x80] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement> -; V66 tmp40 [V66,T30] ( 2, 12 ) int -> [fp+0x114] spill-single-def "Inlining Arg" -; V67 tmp41 [V67,T28] ( 2, 12 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> -; V68 tmp42 [V68,T31] ( 2, 12 ) int -> [fp+0x110] spill-single-def "Inlining Arg" -; V69 tmp43 [V69,T29] ( 2, 12 ) ref -> [fp+0x70] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V65 tmp39 [V65,T12] ( 6, 18 ) ref -> [fp+0x88] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement> +; V66 tmp40 [V66,T31] ( 2, 12 ) int -> [fp+0x114] spill-single-def "Inlining Arg" +; V67 tmp41 [V67,T29] ( 2, 12 ) ref -> [fp+0x80] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> +; V68 tmp42 [V68,T32] ( 2, 12 ) int -> [fp+0x110] spill-single-def "Inlining Arg" +; V69 tmp43 [V69,T30] ( 2, 12 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
;* V70 tmp44 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V71 tmp45 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement> ; V72 tmp46 [V72,T57] ( 4, 6 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
-; V73 tmp47 [V73,T21] ( 5, 12 ) long -> x0 "Inline stloc first use temp"
+; V73 tmp47 [V73,T23] ( 5, 12 ) long -> x0 "Inline stloc first use temp"
; V74 tmp48 [V74,T50] ( 2, 8 ) ref -> x0 class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ;* V75 tmp49 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement> ;* V76 tmp50 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ;* V77 tmp51 [V77 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V78 tmp52 [V78,T98] ( 3, 0 ) ref -> [fp+0x68] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
+; V78 tmp52 [V78,T98] ( 3, 0 ) ref -> [fp+0x70] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
;* V79 tmp53 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V80 tmp54 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V81 tmp55 [V81,T99] ( 2, 0 ) ref -> x0 class-hnd "dup spill" <System.Object> ; V82 tmp56 [V82,T97] ( 4, 0 ) ref -> x8 ;* V83 tmp57 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexReplacement>
-; V84 tmp58 [V84,T66] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V84 tmp58 [V84,T68] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V85 tmp59 [V85,T05] ( 6, 22.63) ref -> x2 class-hnd exact "Inlining Arg" <System.String> ; V86 tmp60 [V86,T51] ( 2, 8 ) byref -> x0 "impAppendStmt" ;* V87 tmp61 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -111,13 +111,13 @@ ; V100 tmp74 [V100,T15] ( 4, 16 ) ref -> x0 class-hnd exact "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchArrayInfo> ;* V101 tmp75 [V101 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch> ; V102 tmp76 [V102,T37] ( 3, 10 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch[]>
-; V103 tmp77 [V103,T23] ( 4, 12 ) int -> x13 "Inline stloc first use temp"
+; V103 tmp77 [V103,T24] ( 4, 12 ) int -> x13 "Inline stloc first use temp"
; V104 tmp78 [V104 ] ( 3, 16 ) struct (24) [fp+0xE8] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch>
-; V105 tmp79 [V105,T40] ( 3, 9.80) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> -; V106 tmp80 [V106,T32] ( 4, 11.61) int -> x15 "Inline stloc first use temp" -; V107 tmp81 [V107,T68] ( 2, 4 ) ref -> x0 single-def "Single return block return value" -; V108 FramesRoot [V108,T39] ( 6, 9.83) long -> x22 "Pinvoke FrameListRoot" -; V109 PInvokeFrame[V109 ] ( 8, 11.83) struct (72) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V105 tmp79 [V105,T41] ( 3, 9.80) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>> +; V106 tmp80 [V106,T33] ( 4, 11.61) int -> x15 "Inline stloc first use temp" +; V107 tmp81 [V107,T69] ( 2, 4 ) ref -> x0 single-def "Single return block return value" +; V108 FramesRoot [V108,T40] ( 6, 9.83) long -> x22 "Pinvoke FrameListRoot" +; V109 PInvokeFrame[V109 ] ( 8, 11.83) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V110 tmp84 [V110 ] ( 7, 18 ) ref -> [fp+0x138] do-not-enreg[X] addr-exposed "field V08.Type (fldOffset=0x0)" P-DEP ; V111 tmp85 [V111 ] ( 8, 20 ) ref -> [fp+0x140] do-not-enreg[X] addr-exposed "field V08.info (fldOffset=0x8)" P-DEP ; V112 tmp86 [V112 ] ( 7, 18 ) ushort -> [fp+0x148] do-not-enreg[X] addr-exposed "field V08.Offset (fldOffset=0x10)" P-DEP @@ -135,27 +135,27 @@ ;* V124 tmp98 [V124 ] ( 0, 0 ) ushort -> zero-ref "field V31.Offset (fldOffset=0x10)" P-INDEP ; V125 tmp99 [V125,T78] ( 2, 4 ) ushort -> x0 "field V31.Size (fldOffset=0x12)" P-INDEP ;* V126 tmp100 [V126,T92] ( 0, 0 ) ref -> zero-ref "field V92.Type (fldOffset=0x0)" P-INDEP
-; V127 tmp101 [V127,T69] ( 2, 4 ) ref -> x0 "field V92.info (fldOffset=0x8)" P-INDEP
+; V127 tmp101 [V127,T70] ( 2, 4 ) ref -> x0 "field V92.info (fldOffset=0x8)" P-INDEP
; V128 tmp102 [V128,T79] ( 2, 4 ) ushort -> x3 "field V92.Offset (fldOffset=0x10)" P-INDEP ;* V129 tmp103 [V129,T96] ( 0, 0 ) ushort -> zero-ref "field V92.Size (fldOffset=0x12)" P-INDEP ;* V130 tmp104 [V130,T93] ( 0, 0 ) ref -> zero-ref "field V99.Type (fldOffset=0x0)" P-INDEP
-; V131 tmp105 [V131,T70] ( 2, 4 ) ref -> x0 "field V99.info (fldOffset=0x8)" P-INDEP
+; V131 tmp105 [V131,T71] ( 2, 4 ) ref -> x0 "field V99.info (fldOffset=0x8)" P-INDEP
; V132 tmp106 [V132,T80] ( 2, 4 ) ushort -> [fp+0xE4] spill-single-def "field V99.Offset (fldOffset=0x10)" P-INDEP ; V133 tmp107 [V133,T81] ( 2, 4 ) ushort -> x23 "field V99.Size (fldOffset=0x12)" P-INDEP
-; V134 tmp108 [V134,T71] ( 2, 4 ) ref -> [fp+0x60] spill-single-def "V101.[000..008)" -; V135 tmp109 [V135,T72] ( 2, 4 ) ref -> [fp+0x58] spill-single-def "V101.[008..016)"
+; V134 tmp108 [V134,T72] ( 2, 4 ) ref -> [fp+0x68] spill-single-def "V101.[000..008)" +; V135 tmp109 [V135,T73] ( 2, 4 ) ref -> [fp+0x60] spill-single-def "V101.[008..016)"
; V136 tmp110 [V136,T82] ( 2, 4 ) ushort -> [fp+0xE0] spill-single-def "V101.[016..018)" ; V137 tmp111 [V137,T83] ( 2, 4 ) ushort -> [fp+0xDC] spill-single-def "V101.[018..020)" ; V138 tmp112 [V138,T10] ( 5, 20 ) byref -> x13 "Spilling address for field-by-field copy"
-; V139 tmp113 [V139,T26] ( 3, 12 ) ref -> x0 "arr expr"
+; V139 tmp113 [V139,T27] ( 3, 12 ) ref -> x0 "arr expr"
;* V140 tmp114 [V140,T85] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V141 tmp115 [V141,T86] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V142 cse0 [V142,T43] ( 4, 8 ) byref -> x0 "CSE - moderate" -; V143 cse1 [V143,T44] ( 2, 4 ) ref -> x0 "CSE - moderate"
+; V142 cse0 [V142,T44] ( 4, 8 ) byref -> x0 "CSE - moderate" +; V143 cse1 [V143,T45] ( 2, 4 ) ref -> x0 "CSE - moderate"
; V144 cse2 [V144,T63] ( 3, 6 ) int -> x0 "CSE - conservative" ; V145 cse3 [V145,T64] ( 3, 6 ) int -> x0 "CSE - conservative" ; V146 cse4 [V146,T18] ( 5, 14 ) int -> x0 "CSE - moderate"
-; V147 cse5 [V147,T27] ( 3, 12 ) int -> x1 "CSE - moderate"
+; V147 cse5 [V147,T28] ( 3, 12 ) int -> x1 "CSE - moderate"
; ; Lcl frame size = 320 @@ -179,14 +179,14 @@ G_M4868_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w20, w2 ;; size=64 bbWeight=1 PerfScore 13.00 G_M4868_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #24 // [V109 PInvokeFrame+0x08]
+ add x0, fp, #32 // [V109 PInvokeFrame+0x08]
mov x1, x12 bl CORINFO_HELP_INIT_PINVOKE_FRAME mov x22, x0 mov x0, sp
- str x0, [fp, #0x38] // [V109 PInvokeFrame+0x28]
+ str x0, [fp, #0x40] // [V109 PInvokeFrame+0x28]
mov x0, fp
- str x0, [fp, #0x48] // [V109 PInvokeFrame+0x38]
+ str x0, [fp, #0x50] // [V109 PInvokeFrame+0x38]
mov w23, wzr movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -226,7 +226,7 @@ G_M4868_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr ; gcrRegs +[x24] ble G_M4868_IG05 ;; size=148 bbWeight=1 PerfScore 30.00
-G_M4868_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000044 {V04 V05}, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4868_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000084 {V04 V05}, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x25] stp xzr, xzr, [fp, #0xD1FFAB1E] str xzr, [fp, #0xD1FFAB1E] @@ -265,48 +265,45 @@ G_M4868_IG04: ; bbWeight=2, gcrefRegs=1080006 {x1 x2 x19 x24}, byrefRegs= mov x28, x1 ; gcrRegs +[x28] mov w3, wzr
+ str x2, [fp, #0x98] // [V45 tmp19] + ; GC ptr vars +{V45} + str w3, [fp, #0xD1FFAB1E] // [V48 tmp22] + mov x1, x28
b G_M4868_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=24 bbWeight=2 PerfScore 9.00
G_M4868_IG05: ; bbWeight=0.50, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref ; gcrRegs -[x1-x2 x19 x28]
+ ; GC ptr vars -{V45}
ldr x25, [fp, #0xC0] // [V05 loc2] ; gcrRegs +[x25] b G_M4868_IG56 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M4868_IG06: ; bbWeight=2, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, byref
+G_M4868_IG06: ; bbWeight=4, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x25] +[x1 x19 x28] mov x2, x28 ; gcrRegs +[x2]
- str x2, [fp, #0xA0] // [V45 tmp19]
+ str x2, [fp, #0x98] // [V45 tmp19]
; GC ptr vars +{V45} ldr w3, [x2, #0x08] str w3, [fp, #0xD1FFAB1E] // [V48 tmp22]
- mov x28, x1 - ldr x2, [fp, #0xA0] // [V45 tmp19] - ldr w3, [fp, #0xD1FFAB1E] // [V48 tmp22] - ;; size=28 bbWeight=2 PerfScore 20.00 -G_M4868_IG07: ; bbWeight=4, gcrefRegs=11080004 {x2 x19 x24 x28}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ; GC ptr vars -{V45} - ldr x1, [x28, #0x30] - ; gcrRegs +[x1] - cbnz x1, G_M4868_IG10
+ ;; size=16 bbWeight=4 PerfScore 22.00 +G_M4868_IG07: ; bbWeight=4, gcVars=00000000000000000000000000100084 {V04 V05 V45}, gcrefRegs=1080002 {x1 x19 x24}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x2 x28] + ldr x28, [x1, #0x30] + ; gcrRegs +[x28] + cbnz x28, G_M4868_IG10
;; size=8 bbWeight=4 PerfScore 16.00
-G_M4868_IG08: ; bbWeight=2, gcrefRegs=11080004 {x2 x19 x24 x28}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - str x2, [fp, #0xA0] // [V45 tmp19] - ; GC ptr vars +{V45} - str w3, [fp, #0xD1FFAB1E] // [V48 tmp22] - add x4, x28, #48 - ; byrRegs +[x4] - str x4, [fp, #0x88] // [V52 tmp26] - ; GC ptr vars +{V52}
...

+8 (+5.13%) : 490199.dasm - VectorMathTests.Program:TestEntryPoint():int (FullOpts)

@@ -10,7 +10,7 @@ ; ;* V00 loc0 [V00,T02] ( 0, 0 ) int -> zero-ref single-def ; V01 loc1 [V01,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <int[]>
-; V02 loc2 [V02,T04] ( 5, 4.50) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
+; V02 loc2 [V02,T04] ( 5, 3.50) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
;* V03 loc3 [V03,T03] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 cse0 [V05,T01] ( 2, 2 ) int -> x1 "CSE - aggressive" @@ -37,22 +37,24 @@ G_M13424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w0, wzr ; gcrRegs -[x0] smov x0, v16.s[0]
- mov w1, #1 - smov x1, v16.s[1] - mov w2, #2 - smov x2, v16.s[2]
cmp w0, #2
- ccmp w1, #2, 0, eq - ccmp w2, #2, 0, eq
bne G_M13424_IG05
- ;; size=84 bbWeight=1 PerfScore 21.00
+ ;; size=60 bbWeight=1 PerfScore 17.00
G_M13424_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w0, #1 + smov x0, v16.s[1] + cmp w0, #2 + bne G_M13424_IG05 + mov w0, #2 + smov x0, v16.s[2] + cmp w0, #2 + bne G_M13424_IG05
mov w0, #3 smov x0, v16.s[3] cmp w0, #2 bne G_M13424_IG05 mov w0, #100
- ;; size=20 bbWeight=0.50 PerfScore 1.75
+ ;; size=52 bbWeight=0.50 PerfScore 4.75
G_M13424_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -73,7 +75,7 @@ G_M13424_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 156, prolog size 8, PerfScore 26.50, instruction count 39, allocated bytes for code 156 (MethodHash=897bcb8f) for method VectorMathTests.Program:TestEntryPoint():int (FullOpts)
+Total bytes of code 164, prolog size 8, PerfScore 25.50, instruction count 41, allocated bytes for code 164 (MethodHash=897bcb8f) for method VectorMathTests.Program:TestEntryPoint():int (FullOpts)
; ============================================================ Unwind Info: @@ -84,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+36.36%) : 455411.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)

@@ -8,46 +8,59 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 16
-G_M34680_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34680_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp str w1, [fp, #0x1C] // [V01 arg1] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M34680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01] - mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq - cinc w0, wzr, eq - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M34680_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M34680_IG05 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M34680_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [fp, #0x1D] // [V01 arg1+0x01] + cmp w0, #255 + bne G_M34680_IG05 + mov w0, #1 + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M34680_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M34680_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M34680_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=3eac7887) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=3eac7887) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ 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) Epilog Start Index : 1 (0x01)
+ ---- Scope 1 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

+16 (+36.36%) : 455388.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)

@@ -8,46 +8,59 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 16
-G_M984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M984_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp str w1, [fp, #0x1C] // [V01 arg1] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M984_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M984_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01] - mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq - cinc w0, wzr, eq - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M984_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M984_IG05 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M984_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [fp, #0x1D] // [V01 arg1+0x01] + cmp w0, #255 + bne G_M984_IG05 + mov w0, #1 + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M984_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M984_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M984_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=d746fc27) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=d746fc27) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ 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) Epilog Start Index : 1 (0x01)
+ ---- Scope 1 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

libraries.crossgen2.windows.arm64.checked.mch

+0 (0.00%) : 1057.dasm - Program:Main(System.String[]):int (FullOpts)

@@ -1587,7 +1587,7 @@ G_M58511_IG17: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, mov w23, wzr ;; size=164 bbWeight=1 PerfScore 47.00 G_M58511_IG18: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M58511_IG26
+ b G_M58511_IG35
;; size=4 bbWeight=1 PerfScore 1.00 G_M58511_IG19: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr w11, [x19, #0x08] @@ -1697,38 +1697,12 @@ G_M58511_IG25: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg ldr w0, [fp, #0xD1FFAB1E] // [V11 loc10] ldr w11, [fp, #0xD1FFAB1E] // [V03 loc2] cmp w0, w11
- bne G_M58511_IG27 - mov x0, x22 - ; gcrRegs +[x0] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - mov x11, #0xD1FFAB1E - cmp x0, x11 - bgt G_M58511_IG35 - mov w0, #5 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcr arg pop 0 - ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14] - add w0, w0, #1 - str w0, [fp, #0xD1FFAB1E] // [V15 loc14] - ;; size=80 bbWeight=4 PerfScore 88.00 -G_M58511_IG26: ; bbWeight=8, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr w11, [fp, #0xD1FFAB1E] // [V15 loc14] - cmp w11, #40 - bge G_M58511_IG48 - b G_M58511_IG19 - ;; size=16 bbWeight=8 PerfScore 36.00 -G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ beq G_M58511_IG34 + ;; size=16 bbWeight=4 PerfScore 22.00 +G_M58511_IG26: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14] cmp w0, #2
- bge G_M58511_IG30
+ bge G_M58511_IG36
stp xzr, xzr, [fp, #0x30] stp xzr, xzr, [fp, #0x40] str xzr, [fp, #0x50] @@ -1741,13 +1715,13 @@ G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg blr x3 ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 13.00
-G_M58511_IG28: ; bbWeight=1, nogc, extend
+G_M58511_IG27: ; bbWeight=1, nogc, extend
ldp q16, q17, [fp, #0x30] stp q16, q17, [fp, #0xD1FFAB1E] ldr x0, [fp, #0x50] str x0, [fp, #0xD1FFAB1E] ;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG29: ; bbWeight=1, extend
+G_M58511_IG28: ; bbWeight=1, extend
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr add x1, x1, [LOW RELOC #0xD1FFAB1E] ldr x1, [x1] @@ -1813,535 +1787,18 @@ G_M58511_IG29: ; bbWeight=1, extend ; gcr arg pop 0 ldr w0, [fp, #0xD1FFAB1E] // [V03 loc2] str w0, [fp, #0xD1FFAB1E] // [V11 loc10]
- b G_M58511_IG34 - ;; size=204 bbWeight=1 PerfScore 67.00 -G_M58511_IG30: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - stp xzr, xzr, [fp, #0x58] - stp xzr, xzr, [fp, #0x68] - str xzr, [fp, #0x78] - add x0, fp, #88 // [V55 tmp28] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - mov w1, #53 - mov w2, #3 - ldr x3, [x11] - blr x3 - ; gcr arg pop 0 - ;; size=40 bbWeight=1 PerfScore 9.50 -G_M58511_IG31: ; bbWeight=1, nogc, extend - sub x0, fp, #200 - ldp q16, q17, [x0, #0xD1FFAB1E] - stp q16, q17, [fp, #0xD1FFAB1E] - ldr x1, [x0, #0xD1FFAB1E] - str x1, [fp, #0xD1FFAB1E] - ;; size=20 bbWeight=1 PerfScore 8.50 -G_M58511_IG32: ; bbWeight=1, extend - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V11 loc10] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - ldr w1, [fp, #0xD1FFAB1E] // [V03 loc2] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - ;; size=216 bbWeight=1 PerfScore 72.50 -G_M58511_IG33: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs +[x0] - ; gcr arg pop 0 - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ;; size=36 bbWeight=1 PerfScore 10.50 -G_M58511_IG34: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=200 bbWeight=1 PerfScore 66.00 +G_M58511_IG29: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov w23, #1
- b G_M58511_IG48 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M58511_IG35: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - stp xzr, xzr, [fp, #0x80] - stp xzr, xzr, [fp, #0x90] - str xzr, [fp, #0xA0] - add x0, fp, #128 // [V54 tmp27] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - mov w1, #72 - mov w2, #2 - ldr x3, [x11] - blr x3 - ; gcr arg pop 0 - ;; size=40 bbWeight=1 PerfScore 9.50 -G_M58511_IG36: ; bbWeight=1, nogc, extend - ldp q16, q17, [fp, #0x80] - stp q16, q17, [fp, #0xD1FFAB1E] - ldr x0, [fp, #0xA0] - str x0, [fp, #0xD1FFAB1E] - ;; size=16 bbWeight=1 PerfScore 6.00 -G_M58511_IG37: ; bbWeight=1, isz, extend - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - mov x0, x22 - ; gcrRegs +[x0] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14] - add w1, w1, #1 - sxtw x1, w1 - cmp x1, #0 - beq G_M58511_IG40 - cmn x1, #1 - bne G_M58511_IG38 - cmp x0, #1 - bvs G_M58511_IG39 - ;; size=92 bbWeight=1 PerfScore 25.50 -G_M58511_IG38: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - sdiv x1, x0, x1 - add x0, fp, #0xD1FFAB1E // [V25 loc24] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x2, [x11] - blr x2 - ; gcr arg pop 0 - adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x1, x1, [LOW RELOC #0xD1FFAB1E] - ldr x1, [x1] - ldr x1, [x1] - ; gcrRegs +[x1] - add x0, fp, #0xD1FFAB1E // [V25 loc24]
...

libraries.pmi.windows.arm64.checked.mch

-40 (-27.03%) : 184277.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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 (-1.50%) : 71351.dasm - Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T11] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.Diagnostics.Tracing.Stacks.StackSource> ; V01 loc0 [V01,T06] ( 7, 7 ) ref -> x20 class-hnd exact single-def <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+<>c__DisplayClass0_0>
-; V02 loc1 [V02 ] ( 7, 13 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
+; V02 loc1 [V02 ] ( 7, 13 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
; V03 loc2 [V03,T01] ( 5, 18 ) ref -> x24 class-hnd <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]> ;# 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 "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+<>c__DisplayClass0_0> @@ -27,12 +27,12 @@ ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]> ; V17 tmp13 [V17,T17] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.__Canon]> ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]>
-; V19 tmp15 [V19,T02] ( 4, 16 ) ref -> x25 class-hnd exact "Inlining Arg" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample[]>
+; V19 tmp15 [V19,T02] ( 4, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample[]>
; V20 tmp16 [V20,T03] ( 3, 12 ) int -> x1 "Inlining Arg"
-; V21 tmp17 [V21 ] ( 3, 6 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V02._dictionary (fldOffset=0x0)" P-DEP -; V22 tmp18 [V22 ] ( 4, 10 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._currentValue (fldOffset=0x8)" P-DEP -; V23 tmp19 [V23 ] ( 3, 6 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP -; V24 tmp20 [V24 ] ( 3, 6 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._version (fldOffset=0x14)" P-DEP
+; V21 tmp17 [V21 ] ( 3, 6 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._dictionary (fldOffset=0x0)" P-DEP +; V22 tmp18 [V22 ] ( 4, 10 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._currentValue (fldOffset=0x8)" P-DEP +; V23 tmp19 [V23 ] ( 3, 6 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP +; V24 tmp20 [V24 ] ( 3, 6 ) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V02._version (fldOffset=0x14)" P-DEP
; V25 tmp21 [V25,T21] ( 3, 3 ) ref -> x0 single-def "field V16._dictionary (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26,T23] ( 0, 0 ) ref -> zero-ref single-def "field V16._currentValue (fldOffset=0x8)" P-INDEP ;* V27 tmp23 [V27,T24] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x10)" P-INDEP @@ -45,20 +45,19 @@ ; V34 cse3 [V34,T14] ( 2, 5 ) long -> x23 hoist "CSE - aggressive" ; V35 cse4 [V35,T10] ( 3, 6 ) long -> x19 "CSE - moderate" ;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M39455_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V02 loc1], [V02 loc1+0x08] - str xzr, [fp, #0x20] // [V02 loc1+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V02 loc1], [V02 loc1+0x08] + str xzr, [fp, #0x28] // [V02 loc1+0x10]
mov x19, x0 ; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M39455_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -155,9 +154,9 @@ G_M39455_IG04: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} ; gcrRegs +[x0] ldr w1, [x0, #0x44] ; gcrRegs -[x1]
- stp x0, xzr, [fp, #0x10] // [V21 tmp17], [V22 tmp18] - stp wzr, w1, [fp, #0x20] // [V23 tmp19], [V24 tmp20] - add x0, fp, #16 // [V02 loc1]
+ stp x0, xzr, [fp, #0x18] // [V21 tmp17], [V22 tmp18] + stp wzr, w1, [fp, #0x28] // [V23 tmp19], [V24 tmp20] + add x0, fp, #24 // [V02 loc1]
; gcrRegs -[x0] movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 @@ -180,7 +179,7 @@ G_M39455_IG04: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} movk x23, #0xD1FFAB1E LSL #32 ;; size=96 bbWeight=1 PerfScore 21.50 G_M39455_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x24, [fp, #0x18] // [V22 tmp18]
+ ldr x24, [fp, #0x20] // [V22 tmp18]
; gcrRegs +[x24] mov x0, x21 bl CORINFO_HELP_NEWSFAST @@ -200,27 +199,28 @@ G_M39455_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ble G_M39455_IG07 ;; size=44 bbWeight=4 PerfScore 46.00 G_M39455_IG06: ; bbWeight=2, gcrefRegs=1100004 {x2 x20 x24}, byrefRegs=0000 {}, byref, isz
- ldr x25, [x24, #0x08] - ; gcrRegs +[x25] - cbz x25, G_M39455_IG10 - ldr w0, [x25, #0x08] - cmp w0, w1
+ ldr x0, [x24, #0x08] + ; gcrRegs +[x0] + cbz x0, G_M39455_IG10 + ldr w3, [x0, #0x08] + cmp w3, w1
blo G_M39455_IG10
- add x0, x25, #16
+ add x0, x0, #16 + ; gcrRegs -[x0]
; byrRegs +[x0] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x2 x25]
+ ; gcrRegs -[x2]
; byrRegs -[x0] ;; size=44 bbWeight=2 PerfScore 29.00 G_M39455_IG07: ; bbWeight=4, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz ldr w0, [x24, #0x14] add w0, w0, #1 str w0, [x24, #0x14]
- add x0, fp, #16 // [V02 loc1]
+ add x0, fp, #24 // [V02 loc1]
mov x1, x19 movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -235,13 +235,12 @@ G_M39455_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 3.00 G_M39455_IG09: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28]
+ ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M39455_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0 x20] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() @@ -252,18 +251,18 @@ G_M39455_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 532, prolog size 32, PerfScore 210.00, instruction count 133, allocated bytes for code 532 (MethodHash=171665e0) for method Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
+Total bytes of code 524, prolog size 28, PerfScore 207.00, instruction count 131, allocated bytes for code 524 (MethodHash=171665e0) for method Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -271,13 +270,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 8B save_reg X#6 Z#11 (0x0B); str x25, [sp, #88]
E6 save_next E6 save_next
- C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]! E4 end E4 end
- E4 end - E4 end

-16 (-1.21%) : 91386.dasm - System.Speech.Internal.SrgsCompiler.Graph:MergeIdenticalTransitions(System.Speech.Internal.SrgsCompiler.ArcList,System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]) (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T00] ( 25, 44.46) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]> ; V02 loc0 [V02,T06] ( 11, 16.50) ref -> x21 class-hnd <<unknown class>> ; V03 loc1 [V03,T13] ( 5, 11 ) ref -> x22 class-hnd <System.Speech.Internal.SrgsCompiler.Arc>
-; V04 loc2 [V04,T14] ( 6, 10 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Speech.Internal.RBList+MyEnumerator>
+; V04 loc2 [V04,T14] ( 6, 10 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Speech.Internal.RBList+MyEnumerator>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Speech.Internal.SrgsCompiler.Arc> ; V06 loc4 [V06,T32] ( 6, 2.50) ref -> x0 class-hnd <<unknown class>> ;* V07 loc5 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]]> @@ -24,7 +24,7 @@ ; V13 tmp4 [V13,T18] ( 2, 8 ) ref -> x3 class-hnd "dup spill" <<unknown class>> ;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref ; V15 tmp6 [V15,T17] ( 5, 9.26) ref -> x3
-; V16 tmp7 [V16,T08] ( 4, 12 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]>
+; V16 tmp7 [V16,T08] ( 4, 12 ) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]>
; V17 tmp8 [V17,T09] ( 3, 12 ) ref -> x21 class-hnd exact "NewObj constructor temp" <<unknown class>> ; V18 tmp9 [V18,T02] ( 6, 24 ) ref -> x3 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" @@ -35,8 +35,8 @@ ; V24 tmp15 [V24,T25] ( 3, 6 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <System.Speech.Internal.RBList+MyEnumerator> ;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Speech.Internal.RBList+TreeNode> ;* V26 tmp17 [V26 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Speech.Internal.SrgsCompiler.Arc]>
-; V27 tmp18 [V27,T07] ( 5, 12.59) ref -> x23 class-hnd "Inlining Arg" <System.__Canon[]> -; V28 tmp19 [V28,T20] ( 3, 7.55) int -> x22 "Inlining Arg"
+; V27 tmp18 [V27,T07] ( 5, 12.59) ref -> x1 class-hnd "Inlining Arg" <System.__Canon[]> +; V28 tmp19 [V28,T20] ( 3, 7.55) int -> x2 "Inlining Arg"
; V29 tmp20 [V29,T26] ( 3, 5.80) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>> ; V30 tmp21 [V30,T19] ( 4, 7.61) int -> x0 "Inline stloc first use temp" ; V31 tmp22 [V31,T27] ( 3, 5.36) int -> x2 "Inline stloc first use temp" @@ -48,34 +48,33 @@ ;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V38 tmp29 [V38,T11] ( 4, 11.87) ref -> x21 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V39 tmp30 [V39,T16] ( 2, 5.37) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP
-; V40 tmp31 [V40,T03] ( 6, 18.00) int -> x19 "field V07._index (fldOffset=0x10)" P-INDEP -; V41 tmp32 [V41,T29] ( 2, 4.50) int -> x20 single-def "field V07._version (fldOffset=0x14)" P-INDEP
+; V40 tmp31 [V40,T03] ( 6, 18.00) int -> x20 "field V07._index (fldOffset=0x10)" P-INDEP +; V41 tmp32 [V41,T29] ( 2, 4.50) int -> x19 single-def "field V07._version (fldOffset=0x14)" P-INDEP
; V42 tmp33 [V42,T30] ( 2, 2.52) byref -> x1 "field V26._reference (fldOffset=0x0)" P-INDEP ; V43 tmp34 [V43,T31] ( 2, 2.52) int -> x2 "field V26._length (fldOffset=0x8)" P-INDEP ; V44 tmp35 [V44,T35] ( 3, 1.50) ref -> x21 single-def "field V35._list (fldOffset=0x0)" P-INDEP ;* V45 tmp36 [V45 ] ( 0, 0 ) ref -> zero-ref single-def "field V35._current (fldOffset=0x8)" P-INDEP ;* V46 tmp37 [V46,T39] ( 0, 0 ) int -> zero-ref single-def "field V35._index (fldOffset=0x10)" P-INDEP
-; V47 tmp38 [V47,T37] ( 2, 1 ) int -> x20 single-def "field V35._version (fldOffset=0x14)" P-INDEP
+; V47 tmp38 [V47,T37] ( 2, 1 ) int -> x19 single-def "field V35._version (fldOffset=0x14)" P-INDEP
; V48 tmp39 [V48,T04] ( 3, 20.25) ref -> x0 "arr expr"
-; V49 PSPSym [V49,T38] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V49 PSPSym [V49,T38] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
; V50 cse0 [V50,T10] ( 2, 8.00) int -> x0 "CSE - aggressive" ; V51 cse1 [V51,T22] ( 4, 7.26) int -> x22 "CSE - moderate" ;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M13764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - str x23, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- add x2, sp, #80 - str x2, [fp, #0x20] // [V49 PSPSym]
+ add x2, sp, #64 + str x2, [fp, #0x18] // [V49 PSPSym]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.00
G_M13764_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x21, xzr ; gcrRegs +[x21] @@ -142,7 +141,7 @@ G_M13764_IG08: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15 x20] ; byrRegs -[x14]
- str x1, [fp, #0x18] // [V04 loc2]
+ str x1, [fp, #0x10] // [V04 loc2]
; GC ptr vars +{V04} ;; size=36 bbWeight=1 PerfScore 8.50 G_M13764_IG09: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=680002 {x1 x19 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz @@ -158,7 +157,7 @@ G_M13764_IG09: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=680 cbz w0, G_M13764_IG33 ;; size=28 bbWeight=1 PerfScore 7.00 G_M13764_IG10: ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V04 loc2]
+ ldr x0, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -246,25 +245,26 @@ G_M13764_IG15: ; bbWeight=2, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs ble G_M13764_IG19 ;; size=12 bbWeight=2 PerfScore 5.00 G_M13764_IG16: ; bbWeight=1.26, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr x23, [x19, #0x08] - ; gcrRegs +[x23] - cbz x23, G_M13764_IG32 - ;; size=8 bbWeight=1.26 PerfScore 5.03 -G_M13764_IG17: ; bbWeight=1.26, gcrefRegs=B80008 {x3 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz - ldr x0, [x23] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x0, x1
+ ldr x1, [x19, #0x08] + ; gcrRegs +[x1] + sxtw w2, w22 + cbz x1, G_M13764_IG32 + ;; size=12 bbWeight=1.26 PerfScore 5.66 +G_M13764_IG17: ; bbWeight=1.26, gcrefRegs=38000A {x1 x3 x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ldr x0, [x1] + movz x4, #0xD1FFAB1E + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + cmp x0, x4
bne G_M13764_IG31 ;; size=24 bbWeight=1.26 PerfScore 7.57
-G_M13764_IG18: ; bbWeight=1.26, gcrefRegs=B80008 {x3 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz - ldr w1, [x23, #0x08] - cmp w1, w22
+G_M13764_IG18: ; bbWeight=1.26, gcrefRegs=38000A {x1 x3 x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ldr w0, [x1, #0x08] + cmp w0, w2
blo G_M13764_IG32
- add x1, x23, #16
+ add x1, x1, #16 + ; gcrRegs -[x1]
; byrRegs +[x1]
- sxtw w2, w22
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -273,10 +273,10 @@ G_M13764_IG18: ; bbWeight=1.26, gcrefRegs=B80008 {x3 x19 x20 x21 x23}, by movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] blr x4
- ; gcrRegs -[x3 x23]
+ ; gcrRegs -[x3]
; byrRegs -[x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.26 PerfScore 15.73
+ ;; size=48 bbWeight=1.26 PerfScore 15.10
G_M13764_IG19: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x14] add w0, w0, #1 @@ -315,8 +315,8 @@ G_M13764_IG20: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x23, x0 - ; gcrRegs +[x23]
+ mov x22, x0 + ; gcrRegs +[x22]
mov x1, x19 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -335,30 +335,30 @@ G_M13764_IG20: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 cmp w1, w0 bls G_M13764_IG22 ;; size=72 bbWeight=2 PerfScore 42.00
-G_M13764_IG21: ; bbWeight=1.80, gcrefRegs=B80004 {x2 x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M13764_IG21: ; bbWeight=1.80, gcrefRegs=780004 {x2 x19 x20 x21 x22}, byrefRegs=0000 {}, byref
add w1, w0, #1 str w1, [x21, #0x10] sxtw x1, w0 mov x0, x2 ; gcrRegs +[x0]
- mov x2, x23
+ mov x2, x22
bl CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[x0 x2 x23]
+ ; gcrRegs -[x0 x2 x22]
; gcr arg pop 0 b G_M13764_IG23 ;; size=28 bbWeight=1.80 PerfScore 9.01
-G_M13764_IG22: ; bbWeight=0.20, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref - ; gcrRegs +[x23]
+G_M13764_IG22: ; bbWeight=0.20, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref + ; gcrRegs +[x22]
mov x0, x21 ; gcrRegs +[x0]
- mov x1, x23
+ mov x1, x22
; 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-x1 x23]
+ ; gcrRegs -[x0-x1 x22]
; gcr arg pop 0 ;; size=28 bbWeight=0.20 PerfScore 1.28 G_M13764_IG23: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz @@ -419,7 +419,7 @@ G_M13764_IG27: ; bbWeight=0.20, gcrefRegs=680000 {x19 x21 x22}, byrefRegs ; gcr arg pop 0 ;; size=28 bbWeight=0.20 PerfScore 1.28 G_M13764_IG28: ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V04 loc2]
+ ldr x0, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -465,7 +465,7 @@ G_M13764_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=24 bbWeight=0 PerfScore 0.00 G_M13764_IG33: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19 x21]
- ldr x1, [fp, #0x18] // [V04 loc2]
+ ldr x1, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -528,8 +528,8 @@ G_M13764_IG39: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b cbz x21, G_M13764_IG45 ;; size=4 bbWeight=1 PerfScore 1.00 G_M13764_IG40: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ldr w20, [x21, #0x14] - mov w19, wzr
+ ldr w19, [x21, #0x14] + mov w20, wzr
b G_M13764_IG42 ;; size=12 bbWeight=0.50 PerfScore 2.25 G_M13764_IG41: ; bbWeight=2, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref @@ -544,37 +544,36 @@ G_M13764_IG41: ; bbWeight=2, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {} ;; size=20 bbWeight=2 PerfScore 11.00 G_M13764_IG42: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x14]
- cmp w20, w0
+ cmp w19, w0
bne G_M13764_IG47 ;; size=12 bbWeight=4 PerfScore 18.00 G_M13764_IG43: ; bbWeight=4.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x10]
- cmp w19, w0
+ cmp w20, w0
bhs G_M13764_IG45 ;; size=12 bbWeight=4.00 PerfScore 18.00 G_M13764_IG44: ; bbWeight=3.37, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08]
- cmp w19, w1
+ cmp w20, w1
bhs G_M13764_IG46 add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ...

+28 (+2.22%) : 297244.dasm - System.Threading.RateLimiting.ConcurrencyLimiter:Release(int):this (FullOpts)

@@ -10,9 +10,9 @@ ; ; V00 this [V00,T00] ( 32, 53.50) ref -> x19 this class-hnd single-def <System.Threading.RateLimiting.ConcurrencyLimiter> ; V01 arg1 [V01,T23] ( 3, 2.50) int -> x20 single-def
-; V02 loc0 [V02 ] ( 4, 9 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer> -; V03 loc1 [V03,T28] ( 4, 1.50) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <<unknown class>> -; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V02 loc0 [V02 ] ( 4, 9 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer> +; V03 loc1 [V03,T28] ( 4, 1.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <<unknown class>> +; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V05 loc3 [V05,T03] ( 8, 20 ) ref -> x21 class-hnd <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration> ; V06 loc4 [V06,T25] ( 2, 4.00) ref -> x15 class-hnd <System.Threading.RateLimiting.ConcurrencyLimiter+ConcurrencyLease> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -43,9 +43,9 @@ ; V32 tmp25 [V32,T21] ( 3, 6.00) ubyte -> x22 "Inline stloc first use temp" ; V33 tmp26 [V33,T02] ( 7, 21.84) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]> ; V34 tmp27 [V34,T26] ( 3, 4.00) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V35 tmp28 [V35,T27] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V35 tmp28 [V35,T27] ( 2, 0 ) ubyte -> x25 "Inline return value spill temp"
; V36 tmp29 [V36,T13] ( 5, 10.00) int -> x14 "Inline stloc first use temp"
-; V37 tmp30 [V37,T35] ( 3, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V37 tmp30 [V37,T35] ( 3, 0 ) ubyte -> x25 "Inline return value spill temp"
; V38 tmp31 [V38,T33] ( 6, 0 ) int -> x0 "Inline stloc first use temp" ; V39 tmp32 [V39,T36] ( 3, 0 ) int -> x2 "Inline stloc first use temp" ; V40 tmp33 [V40,T34] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> @@ -56,47 +56,48 @@ ;* V45 tmp38 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V46 tmp39 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.RateLimiting.ConcurrencyLimiterOptions> ;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V48 tmp41 [V48 ] ( 4, 9 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._next (fldOffset=0x0)" P-DEP
+; V48 tmp41 [V48 ] ( 4, 9 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._next (fldOffset=0x0)" P-DEP
;* V49 tmp42 [V49,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V19.hasValue (fldOffset=0x0)" P-INDEP ; V50 tmp43 [V50,T30] ( 2, 1 ) long -> x0 single-def "field V19.value (fldOffset=0x8)" P-INDEP ; V51 tmp44 [V51,T06] ( 3, 12 ) ref -> x1 "arr expr" ; V52 tmp45 [V52,T08] ( 3, 12 ) int -> x0 "index expr" ; V53 tmp46 [V53,T07] ( 3, 12 ) ref -> x0 "arr expr"
-; V54 PSPSym [V54,T31] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V54 PSPSym [V54,T31] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V55 cse0 [V55,T11] ( 5, 10 ) int -> x20 "CSE - aggressive" ; V56 cse1 [V56,T20] ( 3, 6 ) int -> x12 "CSE - moderate" ; V57 cse2 [V57,T14] ( 7, 10.00) byref -> x23 "CSE - moderate" ; V58 cse3 [V58,T29] ( 3, 1.50) ref -> x1 "CSE - moderate" ;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M60402_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x38] + stp x21, x22, [sp, #0x48] + stp x23, x24, [sp, #0x58] + str x25, [sp, #0x68]
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V04 loc2], [V02 loc0] - add x2, sp, #96 - str x2, [fp, #0x28] // [V54 PSPSym]
+ stp xzr, xzr, [fp, #0x20] // [V04 loc2], [V02 loc0] + add x2, sp, #112 + str x2, [fp, #0x30] // [V54 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M60402_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V03 loc1]
+ str x0, [fp, #0x18] // [V03 loc1]
; GC ptr vars +{V03} ;; size=8 bbWeight=1 PerfScore 4.00 G_M60402_IG03: ; bbWeight=1, gcVars=0000000010000000 {V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb w1, [fp, #0x18] // [V04 loc2]
+ ldrb w1, [fp, #0x20] // [V04 loc2]
cbnz w1, G_M60402_IG17
- add x1, fp, #24 // [V04 loc2]
+ add x1, fp, #32 // [V04 loc2]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldrb w0, [fp, #0x18] // [V04 loc2]
+ ldrb w0, [fp, #0x20] // [V04 loc2]
cbnz w0, G_M60402_IG05 ;; size=24 bbWeight=1 PerfScore 7.50 G_M60402_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref @@ -115,7 +116,7 @@ G_M60402_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ;; size=36 bbWeight=0.50 PerfScore 3.75 G_M60402_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x30]
- cbnz w0, G_M60402_IG40
+ cbnz w0, G_M60402_IG41
;; size=8 bbWeight=1 PerfScore 4.00 G_M60402_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr w0, [x19, #0x28] @@ -195,12 +196,12 @@ G_M60402_IG12: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; gcrRegs -[x0] add x14, x21, #16 ; byrRegs +[x14]
- ldr x15, [fp, #0x20] // [V48 tmp41]
+ ldr x15, [fp, #0x28] // [V48 tmp41]
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- str x21, [fp, #0x20] // [V48 tmp41]
+ str x21, [fp, #0x28] // [V48 tmp41]
ldr x0, [x19, #0x10] ; gcrRegs +[x0] ldr w0, [x0, #0x18] @@ -216,7 +217,7 @@ G_M60402_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr w1, [x1, #0x08] ; gcrRegs -[x1] cmp w0, w1
- bne G_M60402_IG40
+ bne G_M60402_IG41
movz x0, #0xD1FFAB1E // code for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -226,7 +227,7 @@ G_M60402_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov w1, #1 strb w1, [x19, #0x38] str x0, [x19, #0x40]
- b G_M60402_IG40
+ b G_M60402_IG41
;; size=56 bbWeight=0.50 PerfScore 9.75 G_M60402_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -241,7 +242,7 @@ G_M60402_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M60402_IG15: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz ; gcrRegs +[x15 x19-x21] ; byrRegs +[x23]
- cbz w0, G_M60402_IG34
+ cbz w25, G_M60402_IG34
b G_M60402_IG30 ;; size=8 bbWeight=0 PerfScore 0.00 G_M60402_IG16: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz @@ -289,15 +290,9 @@ G_M60402_IG18: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefReg G_M60402_IG19: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M60402_IG36 - orr w1, w0, #0xD1FFAB1E - mov w2, w0 - casal w2, w1, [x23] - cmp w2, w0 - beq G_M60402_IG37 - sxtw w0, w2 - b G_M60402_IG19 - ;; size=40 bbWeight=0 PerfScore 0.00
+ beq G_M60402_IG36 + b G_M60402_IG37 + ;; size=16 bbWeight=0 PerfScore 0.00
G_M60402_IG20: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x15 x20] ; byrRegs -[x23] @@ -493,7 +488,7 @@ G_M60402_IG33: ; bbWeight=2.00, gcrefRegs=280000 {x19 x21}, byrefRegs=000 mov w22, #1 ;; size=4 bbWeight=2.00 PerfScore 1.00 G_M60402_IG34: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbnz w22, G_M60402_IG39
+ cbnz w22, G_M60402_IG40
ldr x0, [x21, #0x08] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:SpinUntilCompleted():this @@ -517,19 +512,28 @@ G_M60402_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60402_IG36: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
+G_M60402_IG36: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs +[x15 x19-x21] ; byrRegs +[x23]
- mov w0, wzr - b G_M60402_IG38 - ;; size=8 bbWeight=0 PerfScore 0.00
+ orr w1, w0, #0xD1FFAB1E + mov w2, w0 + casal w2, w1, [x23] + cmp w2, w0 + beq G_M60402_IG38 + sxtw w0, w2 + b G_M60402_IG19 + ;; size=28 bbWeight=0 PerfScore 0.00
G_M60402_IG37: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
- mov w0, #1 - ;; size=4 bbWeight=0 PerfScore 0.00
+ mov w25, wzr + b G_M60402_IG39 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M60402_IG38: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
+ mov w25, #1 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M60402_IG39: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
b G_M60402_IG15 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60402_IG39: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M60402_IG40: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x15 x20] ; byrRegs -[x23] add x14, x19, #32 @@ -539,21 +543,21 @@ G_M60402_IG39: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; byrRegs -[x14] b G_M60402_IG12 ;; size=16 bbWeight=2 PerfScore 10.00
-G_M60402_IG40: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60402_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x21]
- ldrb w0, [fp, #0x18] // [V04 loc2] - cbz w0, G_M60402_IG42
+ ldrb w0, [fp, #0x20] // [V04 loc2] + cbz w0, G_M60402_IG43
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60402_IG41: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x10] // [V03 loc1]
+G_M60402_IG42: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x0, [fp, #0x18] // [V03 loc1]
; gcrRegs +[x0] ; GC ptr vars -{V03} bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M60402_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, fp, #32 // [V02 loc0]
+G_M60402_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #40 // [V02 loc0]
movz x1, #0xD1FFAB1E // code for System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer:Dispose():this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -561,49 +565,53 @@ G_M60402_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x1 ; gcr arg pop 0 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M60402_IG43: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x50] - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x60
+G_M60402_IG44: ; bbWeight=1, epilog, nogc, extend + ldr x25, [sp, #0x68] + ldp x23, x24, [sp, #0x58] + ldp x21, x22, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x70
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
...

+32 (+3.98%) : 168818.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0 ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75 -G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M3645_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M3645_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M3645_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M3645_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M3645_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M3645_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M3645_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M3645_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M3645_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M3645_IG17
...

+32 (+3.98%) : 137619.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0 ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75 -G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M3645_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M3645_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M3645_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M3645_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M3645_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M3645_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M3645_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M3645_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M3645_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M3645_IG17
...

libraries_tests.run.windows.arm64.Release.mch

-40 (-27.03%) : 328887.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,13 +8,13 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 153 ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 3.50) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 4.49) int -> x1 single-def -; V02 loc0 [V02,T02] ( 11, 3.01) int -> x3 -; V03 loc1 [V03,T04] ( 6, 1.51) ushort -> x5
+; V00 arg0 [V00,T01] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 6, 3.99) int -> x1 single-def +; V02 loc0 [V02,T02] ( 7, 3.51) int -> x3 +; V03 loc1 [V03,T04] ( 3, 1.51) ushort -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.51) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 1.01) byref -> x4 hoist multi-def "CSE - moderate"
+; V05 cse0 [V05,T03] ( 5, 3.01) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 1 ) byref -> x4 hoist "CSE - moderate"
; ; Lcl frame size = 0 @@ -36,66 +36,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.01
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG07
add x4, x0, #12 ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 0.99
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz ; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG08
+ cmp w3, w2 + bhs G_M3357_IG09 + ldrh w0, [x4, w3, UXTW #2] + cmp w0, #32 + ccmp w0, #9, z, ne + bne G_M3357_IG07
add w3, w3, #1 cmp w2, w3
- ble G_M3357_IG12
+ ble G_M3357_IG10
b G_M3357_IG06
- ;; size=32 bbWeight=0.50 PerfScore 3.99 -G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - ; byrRegs -[x4] - cmp w3, w2 - bhs G_M3357_IG11 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - beq G_M3357_IG10 - ;; size=28 bbWeight=0.01 PerfScore 0.04 -G_M3357_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+ ;; size=40 bbWeight=0.50 PerfScore 4.78 +G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4] sub w0, w3, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 0.99
-G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0] - add w3, w3, #1 - cmp w2, w3 - ble G_M3357_IG12 - b G_M3357_IG07 - ;; size=16 bbWeight=0.01 PerfScore 0.02 -G_M3357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+G_M3357_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_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w2, w1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 13.53, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 13.78, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info: @@ -106,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-40 (-27.03%) : 325340.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,13 +8,13 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 24914 ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 3.95) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 5.84) int -> x1 single-def -; V02 loc0 [V02,T01] ( 11, 7.20) int -> x3 -; V03 loc1 [V03,T03] ( 6, 3.96) ushort -> x5
+; V00 arg0 [V00,T02] ( 4, 3.95) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 6, 4.89) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 8.51) int -> x3 +; V03 loc1 [V03,T04] ( 3, 3.96) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 3.35) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 2.27) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 4.65) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 2.27) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,78 +26,56 @@ G_M3357_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] ldr w2, [x0, #0x08] cmp w2, w1
- ble G_M3357_IG08
+ ble G_M3357_IG10
;; size=12 bbWeight=1 PerfScore 4.50
-G_M3357_IG03: ; bbWeight=0.95, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG03: ; bbWeight=0.95, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG10 - ;; size=8 bbWeight=0.95 PerfScore 1.42 -G_M3357_IG04: ; bbWeight=0.94, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=4 bbWeight=0.94 PerfScore 0.47 -G_M3357_IG05: ; bbWeight=1.31, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG14 - ;; size=16 bbWeight=1.31 PerfScore 6.53 -G_M3357_IG06: ; bbWeight=1.31, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG05 - ;; size=12 bbWeight=1.31 PerfScore 2.63 -G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x4] - b G_M3357_IG12 - ;; size=4 bbWeight=0.01 PerfScore 0.01 -G_M3357_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, wzr - ;; size=4 bbWeight=0.05 PerfScore 0.03 -G_M3357_IG09: ; bbWeight=0.05, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.05 PerfScore 0.11 -G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0]
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.95 PerfScore 0.95 +G_M3357_IG04: ; bbWeight=1.32, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w3, w2
- bhs G_M3357_IG16 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG14 - ;; size=28 bbWeight=0.01 PerfScore 0.09 -G_M3357_IG11: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x4]
+ bhs G_M3357_IG12 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG08 + ;; size=24 bbWeight=1.32 PerfScore 8.57 +G_M3357_IG05: ; bbWeight=1.33, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w3, w3, #1 cmp w2, w3
- bgt G_M3357_IG10 - ;; size=12 bbWeight=0.01 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+ bgt G_M3357_IG04 + ;; size=12 bbWeight=1.33 PerfScore 2.65 +G_M3357_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.01 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0.01, epilog, nogc, extend
+G_M3357_IG07: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG14: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG08: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w3, w1 ;; size=4 bbWeight=0.94 PerfScore 0.47
-G_M3357_IG15: ; bbWeight=0.94, epilog, nogc, extend
+G_M3357_IG09: ; bbWeight=0.94, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.94 PerfScore 1.88
-G_M3357_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG10: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.05 PerfScore 0.03 +G_M3357_IG11: ; bbWeight=0.05, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.05 PerfScore 0.11 +G_M3357_IG12: ; 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 148, prolog size 8, PerfScore 19.67, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 20.67, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info: @@ -108,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-40 (-27.03%) : 352216.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,13 +8,13 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 483 ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 3.52) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 4.53) int -> x1 single-def -; V02 loc0 [V02,T02] ( 11, 3.08) int -> x3 -; V03 loc1 [V03,T04] ( 6, 1.54) ushort -> x5
+; V00 arg0 [V00,T01] ( 4, 3.51) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 6, 4.02) int -> x1 single-def +; V02 loc0 [V02,T02] ( 7, 3.59) int -> x3 +; V03 loc1 [V03,T04] ( 3, 1.54) ushort -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.52) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 1.03) byref -> x4 hoist multi-def "CSE - moderate"
+; V05 cse0 [V05,T03] ( 5, 3.03) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 1.02) byref -> x4 hoist "CSE - moderate"
; ; Lcl frame size = 0 @@ -36,62 +36,46 @@ G_M3357_IG04: ; bbWeight=0.49, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.49 PerfScore 0.98
-G_M3357_IG05: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG07
add x4, x0, #12 ; byrRegs +[x4]
- ;; size=12 bbWeight=0.51 PerfScore 1.02
+ ;; size=8 bbWeight=0.51 PerfScore 0.51
G_M3357_IG06: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz ; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG08 - add w3, w3, #1 - cmp w2, w3 - ble G_M3357_IG11 - b G_M3357_IG06 - ;; size=32 bbWeight=0.51 PerfScore 4.07 -G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - ; byrRegs -[x4]
cmp w3, w2
- bhs G_M3357_IG10 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG08
+ bhs G_M3357_IG09 + ldrh w0, [x4, w3, UXTW #2] + cmp w0, #32 + ccmp w0, #9, z, ne + bne G_M3357_IG07
add w3, w3, #1 cmp w2, w3
- ble G_M3357_IG11 - b G_M3357_IG07 - ;; size=44 bbWeight=0.01 PerfScore 0.05 -G_M3357_IG08: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+ ble G_M3357_IG10 + b G_M3357_IG06 + ;; size=40 bbWeight=0.51 PerfScore 4.88 +G_M3357_IG07: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4] sub w0, w3, w1 ;; size=4 bbWeight=0.51 PerfScore 0.26
-G_M3357_IG09: ; bbWeight=0.51, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.51, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.51 PerfScore 1.02
-G_M3357_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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_M3357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w2, w1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 13.64, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 13.89, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

+28 (+4.52%) : 231586.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -23,22 +23,23 @@ ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp" ; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M10785_IG13 cmp x20, x19 @@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov w0, #1 ;; size=16 bbWeight=1 PerfScore 3.00 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- 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=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ldr x0, [x19, #0x30] cmn x0, #1 @@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x19, #0x18] cmp x0, x1 bne G_M10785_IG13
+ ldr x0, [x20, #0x20] + ldr x1, [x19, #0x20] + cmp x0, x1 + cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x20 ; gcrRegs +[x0] @@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2, #0x10] ;; size=40 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x0, [x20, #0x28] @@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00 G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00 -G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - ldr x0, [x20, #0x20] - ldr x1, [x19, #0x20] - cmp x0, x1 - cset x0, eq - uxtb w0, w0 - ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + uxtb w0, w21 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20] ldr x1, [x19] cmp x0, x1 @@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M10785_IG02 ;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -273,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -296,10 +303,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

+28 (+4.52%) : 339938.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -23,22 +23,23 @@ ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp" ; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M10785_IG13 cmp x20, x19 @@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov w0, #1 ;; size=16 bbWeight=1 PerfScore 3.00 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- 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=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ldr x0, [x19, #0x30] cmn x0, #1 @@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x19, #0x18] cmp x0, x1 bne G_M10785_IG13
+ ldr x0, [x20, #0x20] + ldr x1, [x19, #0x20] + cmp x0, x1 + cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x20 ; gcrRegs +[x0] @@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2, #0x10] ;; size=40 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x0, [x20, #0x28] @@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00 G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00 -G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - ldr x0, [x20, #0x20] - ldr x1, [x19, #0x20] - cmp x0, x1 - cset x0, eq - uxtb w0, w0 - ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + uxtb w0, w21 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20] ldr x1, [x19] cmp x0, x1 @@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M10785_IG02 ;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -273,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -296,10 +303,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

+28 (+4.52%) : 408055.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)

@@ -23,22 +23,23 @@ ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp" ; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect" ; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_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 x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M10785_IG13 cmp x20, x19 @@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov w0, #1 ;; size=16 bbWeight=1 PerfScore 3.00 G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- 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=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ldr x0, [x19, #0x30] cmn x0, #1 @@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x19, #0x18] cmp x0, x1 bne G_M10785_IG13
+ ldr x0, [x20, #0x20] + ldr x1, [x19, #0x20] + cmp x0, x1 + cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov x0, x20 ; gcrRegs +[x0] @@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2, #0x10] ;; size=40 bbWeight=0 PerfScore 0.00 G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x1, [x20, #0x28] @@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] ;; size=24 bbWeight=0 PerfScore 0.00 G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0-x1] ldr x0, [x20, #0x28] @@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00 G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00 -G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - ldr x0, [x20, #0x20] - ldr x1, [x19, #0x20] - cmp x0, x1 - cset x0, eq - uxtb w0, w0 - ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + uxtb w0, w21 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- 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 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20] ldr x1, [x19] cmp x0, x1 @@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M10785_IG02 ;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -273,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -296,10 +303,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.windows.arm64.Release.mch

-40 (-27.03%) : 150993.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-40 (-27.03%) : 20551.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-28 (-4.49%) : 224514.dasm - System.Security.Cryptography.LiteHashProvider:ProcessStreamSystem.Security.Cryptography.LiteHash:int (FullOpts)

@@ -8,26 +8,26 @@ ; 3 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 9, 10 ) struct (16) [fp+0x30] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Security.Cryptography.LiteHash>
+; V00 arg0 [V00 ] ( 9, 10 ) struct (16) [fp+0x28] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Security.Cryptography.LiteHash>
; V01 arg1 [V01,T01] ( 4, 18 ) ref -> x19 class-hnd single-def <System.IO.Stream> ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]> ;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Security.Cryptography.LiteHash>
-; V04 loc1 [V04,T02] ( 9, 19 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <ubyte[]> -; V05 loc2 [V05,T07] ( 6, 7.54) int -> [fp+0x2C] do-not-enreg[Z] EH-live
+; V04 loc1 [V04,T02] ( 9, 19 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <ubyte[]> +; V05 loc2 [V05,T07] ( 6, 7.54) int -> [fp+0x24] do-not-enreg[Z] EH-live
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Security.Cryptography.LiteHash>
-; V08 loc5 [V08,T18] ( 2, 2 ) int -> x22
+; V08 loc5 [V08,T18] ( 2, 2 ) int -> x19
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ; V11 tmp2 [V11,T00] ( 6, 44.92) int -> x0 "dup spill"
-; V12 tmp3 [V12,T10] ( 2, 4 ) byref -> x22
+; V12 tmp3 [V12,T10] ( 2, 4 ) byref -> x3
;* V13 tmp4 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ; V15 tmp6 [V15,T08] ( 3, 4 ) int -> x1 "Inline return value spill temp" ;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V19 tmp10 [V19,T03] ( 4, 16 ) int -> x3 "Inlining Arg"
+; V19 tmp10 [V19,T03] ( 4, 16 ) int -> x2 "Inlining Arg"
; V20 tmp11 [V20,T06] ( 2, 8 ) byref -> x1 "Inlining Arg" ;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -35,11 +35,11 @@ ; V24 tmp15 [V24,T09] ( 3, 4 ) int -> registers "Inline stloc first use temp" ;* V25 tmp16 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ; V26 tmp17 [V26,T17] ( 3, 2 ) int -> x0 "Inline stloc first use temp"
-; V27 tmp18 [V27 ] ( 6, 7 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed single-def "field V00._hashHandle (fldOffset=0x0)" P-DEP -; V28 tmp19 [V28 ] ( 6, 7 ) int -> [fp+0x38] do-not-enreg[X] addr-exposed single-def "field V00._hashSizeInBytes (fldOffset=0x8)" P-DEP
+; V27 tmp18 [V27 ] ( 6, 7 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed single-def "field V00._hashHandle (fldOffset=0x0)" P-DEP +; V28 tmp19 [V28 ] ( 6, 7 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed single-def "field V00._hashSizeInBytes (fldOffset=0x8)" P-DEP
; V29 tmp20 [V29,T11] ( 2, 2 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V30 tmp21 [V30,T14] ( 2, 2 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V31 tmp22 [V31,T19] ( 3, 1 ) ref -> [fp+0x18] EH-live spill-single-def "field V03._hashHandle (fldOffset=0x0)" P-INDEP
+; V31 tmp22 [V31,T19] ( 3, 1 ) ref -> [fp+0x10] EH-live spill-single-def "field V03._hashHandle (fldOffset=0x0)" P-INDEP
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "field V03._hashSizeInBytes (fldOffset=0x8)" P-INDEP ;* V33 tmp24 [V33 ] ( 0, 0 ) ref -> zero-ref "field V07._hashHandle (fldOffset=0x0)" P-INDEP ;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref "field V07._hashSizeInBytes (fldOffset=0x8)" P-INDEP @@ -50,38 +50,37 @@ ;* V39 tmp30 [V39 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP ; V41 tmp32 [V41,T12] ( 2, 4 ) byref -> x1 "field V16._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp33 [V42,T15] ( 2, 4 ) int -> x3 "field V16._length (fldOffset=0x8)" P-INDEP
+; V42 tmp33 [V42,T15] ( 2, 4 ) int -> x2 "field V16._length (fldOffset=0x8)" P-INDEP
;* V43 tmp34 [V43 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP ; V45 tmp36 [V45,T13] ( 2, 4 ) byref -> x1 "field V18._reference (fldOffset=0x0)" P-INDEP
-; V46 tmp37 [V46,T16] ( 2, 4 ) int -> x2 "field V18._length (fldOffset=0x8)" P-INDEP
+; V46 tmp37 [V46,T16] ( 2, 4 ) int -> x0 "field V18._length (fldOffset=0x8)" P-INDEP
;* V47 tmp38 [V47 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP ; V49 tmp40 [V49,T04] ( 3, 10 ) byref -> x1 "field V25._reference (fldOffset=0x0)" P-INDEP ; V50 tmp41 [V50,T05] ( 3, 10 ) int -> x2 "field V25._length (fldOffset=0x8)" P-INDEP
-; V51 PSPSym [V51,T20] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V51 PSPSym [V51,T20] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M44613_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]! - stp x19, x20, [sp, #0x48] - stp x21, x22, [sp, #0x58] - str x23, [sp, #0x68]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- add x5, sp, #112 - str x5, [fp, #0x40] // [V51 PSPSym] - stp x0, x1, [fp, #0x30] // [V00 arg0], [V00 arg0+0x08]
+ add x5, sp, #96 + str x5, [fp, #0x38] // [V51 PSPSym] + stp x0, x1, [fp, #0x28] // [V00 arg0], [V00 arg0+0x08]
mov x19, x2 ; gcrRegs +[x19] mov x20, x3 ; byrRegs +[x20] mov w21, w4
- ;; size=44 bbWeight=1 PerfScore 8.50
+ ;; size=40 bbWeight=1 PerfScore 7.50
G_M44613_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- ldr x0, [fp, #0x30] // [V27 tmp18]
+ ldr x0, [fp, #0x28] // [V27 tmp18]
; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V31 tmp22]
+ str x0, [fp, #0x10] // [V31 tmp22]
; GC ptr vars +{V31} ;; size=8 bbWeight=1 PerfScore 3.00 G_M44613_IG03: ; bbWeight=1, gcVars=0000000000080000 {V31}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref @@ -98,53 +97,54 @@ G_M44613_IG03: ; bbWeight=1, gcVars=0000000000080000 {V31}, gcrefRegs=800 ldr x2, [x2] blr x2 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V04 loc1]
+ str x0, [fp, #0x18] // [V04 loc1]
; GC ptr vars +{V04}
- str wzr, [fp, #0x2C] // [V05 loc2]
+ str wzr, [fp, #0x24] // [V05 loc2]
;; size=48 bbWeight=1 PerfScore 12.50 G_M44613_IG04: ; bbWeight=1, gcVars=0000000000080004 {V04 V31}, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, gcvars, byref b G_M44613_IG08 ;; size=4 bbWeight=1 PerfScore 1.00 G_M44613_IG05: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- ldr w1, [fp, #0x2C] // [V05 loc2]
+ ldr w1, [fp, #0x24] // [V05 loc2]
cmp w1, w0 blt G_M44613_IG16 ;; size=12 bbWeight=2.00 PerfScore 7.00 G_M44613_IG06: ; bbWeight=1.54, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- ldr w1, [fp, #0x2C] // [V05 loc2]
+ ldr w1, [fp, #0x24] // [V05 loc2]
;; size=4 bbWeight=1.54 PerfScore 3.08 G_M44613_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- str w1, [fp, #0x2C] // [V05 loc2] - add x22, fp, #48 // [V00 arg0] - ; byrRegs +[x22] - ldr x23, [fp, #0x20] // [V04 loc1] - ; gcrRegs +[x23] - cbz x23, G_M44613_IG13 - ldr w1, [x23, #0x08]
+ str w1, [fp, #0x24] // [V05 loc2] + add x3, fp, #40 // [V00 arg0] + ; byrRegs +[x3] + ldr x22, [fp, #0x18] // [V04 loc1] + ; gcrRegs +[x22] + cbz x22, G_M44613_IG13 + ldr w1, [x22, #0x08]
cmp w1, w0 blo G_M44613_IG13
- add x1, x23, #16
+ add x1, x22, #16
; byrRegs +[x1]
- sxtw w3, w0 - sxtw w2, w3 - cbz w2, G_M44613_IG08 - mov w2, w3 - ldr x0, [x22]
+ sxtw w2, w0 + sxtw w0, w2 + cbz w0, G_M44613_IG08 + ldr x0, [x3]
; gcrRegs +[x0]
+ mov w3, w2 + ; byrRegs -[x3]
mov w4, wzr movz x5, #0xD1FFAB1E // code for <unknown method> movk x5, #0xD1FFAB1E LSL #16 movk x5, #0xD1FFAB1E LSL #32 ldr x5, [x5] blr x5
- ; gcrRegs -[x0 x23] - ; byrRegs -[x1 x22]
+ ; gcrRegs -[x0 x22] + ; byrRegs -[x1]
; gcr arg pop 0 cbnz w0, G_M44613_IG14 ;; size=80 bbWeight=2 PerfScore 44.00 G_M44613_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- ldr x0, [fp, #0x20] // [V04 loc1]
+ ldr x0, [fp, #0x18] // [V04 loc1]
; gcrRegs +[x0] cbz x0, G_M44613_IG15 ;; size=8 bbWeight=8 PerfScore 24.00 @@ -169,14 +169,12 @@ G_M44613_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=100002 {x1 ;; size=28 bbWeight=8 PerfScore 96.00 G_M44613_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x19]
- ldr x23, [fp, #0x20] // [V04 loc1] - ; gcrRegs +[x23]
mov x1, x20 ; byrRegs +[x1] mov w2, w21
- ldr x0, [fp, #0x30] // [V27 tmp18]
+ ldr x0, [fp, #0x28] // [V27 tmp18]
; gcrRegs +[x0]
- ldr w3, [fp, #0x38] // [V28 tmp19]
+ ldr w3, [fp, #0x30] // [V28 tmp19]
mov w4, wzr movz x5, #0xD1FFAB1E // code for <unknown method> movk x5, #0xD1FFAB1E LSL #16 @@ -187,10 +185,10 @@ G_M44613_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b ; byrRegs -[x1 x20] ; gcr arg pop 0 cbnz w0, G_M44613_IG12
- ldr w22, [fp, #0x38] // [V28 tmp19]
+ ldr w19, [fp, #0x30] // [V28 tmp19]
b G_M44613_IG17
- ;; size=56 bbWeight=1 PerfScore 17.00 -G_M44613_IG12: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M44613_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -202,7 +200,8 @@ G_M44613_IG12: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M44613_IG13: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+G_M44613_IG13: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref + ; gcrRegs +[x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -212,7 +211,7 @@ G_M44613_IG13: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M44613_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23]
+ ; gcrRegs -[x22]
mov w1, w0 mov w0, w1 movz x1, #0xD1FFAB1E // code for <unknown method> @@ -240,23 +239,23 @@ G_M44613_IG16: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=100000 { sxtw w1, w0 b G_M44613_IG07 ;; size=8 bbWeight=0.46 PerfScore 0.69
-G_M44613_IG17: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] +[x23]
+G_M44613_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19]
; byrRegs -[x20]
- mov x0, x23
+ ldr x0, [fp, #0x18] // [V04 loc1]
; gcrRegs +[x0]
- ldr w1, [fp, #0x2C] // [V05 loc2]
+ ldr w1, [fp, #0x24] // [V05 loc2]
movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int) movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] ; GC ptr vars -{V04} blr x2
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=28 bbWeight=1 PerfScore 8.00
+ ;; size=28 bbWeight=1 PerfScore 9.50
...

+40 (+3.65%) : 35085.dasm - System.Collections.Generic.GenericArraySortHelper1[DryIoc.ServiceRegistrationInfo]:IntroSort(System.Span1[DryIoc.ServiceRegistrationInfo],int) (FullOpts)

@@ -9,8 +9,8 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[DryIoc.ServiceRegistrationInfo]>
-; V01 arg1 [V01,T03] ( 7, 19 ) int -> x20 -; V02 loc0 [V02,T01] ( 15, 29 ) int -> x22
+; V01 arg1 [V01,T04] ( 7, 19 ) int -> x20 +; V02 loc0 [V02,T00] ( 16, 33 ) int -> x22
; V03 loc1 [V03,T07] ( 3, 12 ) int -> x23 ; V04 loc2 [V04,T14] ( 13, 6.50) byref -> x21 single-def ; V05 loc3 [V05,T15] ( 13, 6.50) byref -> x22 single-def @@ -72,7 +72,7 @@ ;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V62 tmp54 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V64 tmp56 [V64,T00] ( 4, 32 ) int -> x22 "Inlining Arg"
+; V64 tmp56 [V64,T01] ( 4, 32 ) int -> x22 "Inlining Arg"
;* V65 tmp57 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[DryIoc.ServiceRegistrationInfo]> ; V66 tmp58 [V66,T05] ( 2, 16 ) byref -> x24 "Inlining Arg" ;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -131,7 +131,7 @@ ; V120 tmp112 [V120,T11] ( 2, 8 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP ; V121 tmp113 [V121,T10] ( 2, 8 ) byref -> x0 "field V65._reference (fldOffset=0x0)" P-INDEP ; V122 tmp114 [V122,T12] ( 2, 8 ) int -> x1 "field V65._length (fldOffset=0x8)" P-INDEP
-; V123 cse0 [V123,T04] ( 24, 16.50) ref -> x1 multi-def "CSE - aggressive"
+; V123 cse0 [V123,T03] ( 27, 22.50) ref -> x1 multi-def "CSE - aggressive"
; V124 cse1 [V124,T09] ( 3, 12 ) long -> x0 "CSE - aggressive" ; ; Lcl frame size = 0 @@ -182,15 +182,31 @@ G_M32486_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, G_M32486_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz sxtw w22, w21 cmp w21, #1
- ble G_M32486_IG22
+ ble G_M32486_IG24
;; size=12 bbWeight=1 PerfScore 2.00 G_M32486_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w22, #16
- ble G_M32486_IG11 - cbz w20, G_M32486_IG21
+ ble G_M32486_IG13 + cbz w20, G_M32486_IG23
sub w20, w20, #1 cmp w22, w21
- bhi G_M32486_IG24
+ bhi G_M32486_IG26 + tbz w22, #31, G_M32486_IG09 + ;; size=28 bbWeight=4 PerfScore 22.00 +G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + movz x1, #8 + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + mov x0, x1 + ; gcrRegs +[x0] + 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=36 bbWeight=2 PerfScore 15.00 +G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w1, w22 mov x0, x19 ; byrRegs +[x0] @@ -207,14 +223,14 @@ G_M32486_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by add x1, x0, w22, UXTW mov w2, w21 cmp x1, x2
- bhi G_M32486_IG24
+ bhi G_M32486_IG26
mov x1, #24 mul x0, x0, x1 add x24, x19, x0 ; byrRegs +[x24]
- tbz w22, #31, G_M32486_IG09 - ;; size=100 bbWeight=4 PerfScore 80.00 -G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ tbz w22, #31, G_M32486_IG11 + ;; size=76 bbWeight=4 PerfScore 62.00 +G_M32486_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -227,7 +243,7 @@ G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 blr x2 ; gcrRegs -[x0] ;; size=36 bbWeight=2 PerfScore 15.00
-G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M32486_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
mov x0, x24 ; byrRegs +[x0] sxtw w1, w22 @@ -242,14 +258,14 @@ G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2 cmp w22, #1 bgt G_M32486_IG07 ;; size=44 bbWeight=4 PerfScore 36.00
-G_M32486_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32486_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19] cmp w22, #2
- bne G_M32486_IG13
+ bne G_M32486_IG15
add x22, x19, #24 ; byrRegs +[x22] ldrsb wzr, [x19] @@ -263,9 +279,9 @@ G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] sub w0, w1, w0 cmp w0, #0
- ble G_M32486_IG22
+ ble G_M32486_IG24
cmp x19, x22
- bne G_M32486_IG12
+ bne G_M32486_IG14
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -278,7 +294,7 @@ G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, blr x2 ; gcrRegs -[x0] ;; size=88 bbWeight=0.50 PerfScore 14.00
-G_M32486_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
+G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
ldp x0, x1, [x19] ; gcrRegs +[x0-x1] ldr x2, [x19, #0x10] @@ -311,14 +327,14 @@ G_M32486_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14 x22]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19] cmp w22, #3
- bne G_M32486_IG19
+ bne G_M32486_IG21
cmp w21, #2
- bls G_M32486_IG23
+ bls G_M32486_IG25
add x21, x19, #48 ; byrRegs +[x21] add x22, x19, #24 @@ -334,9 +350,9 @@ G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] sub w0, w1, w0 cmp w0, #0
- ble G_M32486_IG15
+ ble G_M32486_IG17
cmp x19, x22
- bne G_M32486_IG14
+ bne G_M32486_IG16
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -349,7 +365,7 @@ G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, blr x2 ; gcrRegs -[x0] ;; size=100 bbWeight=0.50 PerfScore 15.00
-G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp x0, x1, [x19] ; gcrRegs +[x0-x1] ldr x2, [x19, #0x10] @@ -382,7 +398,7 @@ G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 ; gcrRegs -[x2 x15] ; byrRegs -[x14] ;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
+G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
ldr x0, [x21] ; gcrRegs +[x0] ldr x1, [x19] @@ -393,9 +409,9 @@ G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 ; gcrRegs -[x0] sub w0, w1, w0 cmp w0, #0
- ble G_M32486_IG17
+ ble G_M32486_IG19
cmp x19, x21
- bne G_M32486_IG16
+ bne G_M32486_IG18
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -408,7 +424,7 @@ G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 blr x2 ; gcrRegs -[x0] ;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp x0, x1, [x19] ; gcrRegs +[x0-x1] ldr x2, [x19, #0x10] @@ -442,7 +458,7 @@ G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 ; gcrRegs -[x2 x15] ; byrRegs -[x14] ;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M32486_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
ldr x0, [x21] ; gcrRegs +[x0] ldr x1, [x22] @@ -453,9 +469,9 @@ G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 ; gcrRegs -[x0] sub w0, w1, w0 cmp w0, #0
- ble G_M32486_IG22
+ ble G_M32486_IG24
cmp x22, x21
- bne G_M32486_IG18
+ bne G_M32486_IG20
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -468,7 +484,7 @@ G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 blr x2 ; gcrRegs -[x0] ;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
+G_M32486_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
ldp x0, x1, [x22] ; gcrRegs +[x0-x1] ldr x2, [x22, #0x10] @@ -501,13 +517,13 @@ G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14 x21]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M32486_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19] cmp w22, w21
- bhi G_M32486_IG24 - tbz w22, #31, G_M32486_IG20
+ bhi G_M32486_IG26 + tbz w22, #31, G_M32486_IG22
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 ...

+32 (+4.08%) : 12749.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive" ; @@ -97,95 +97,73 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= ldr wzr, [x0] blr x1 ; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0 + ; gcrRegs +[x3] + str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=84 bbWeight=0.50 PerfScore 12.25 -G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=88 bbWeight=0.50 PerfScore 12.50 +G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this] - ; gcrRegs +[x20] - ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this] + ; gcrRegs +[x0] + ldr x1, [x0, #0x68]
; gcrRegs +[x1] ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M10501_IG11
+ ble G_M10501_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M10501_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - mov w5, #24 - mov x6, #16 - umaddl x3, w3, w5, x6 - add x3, x1, x3 - ; byrRegs +[x3] - ldr x5, [x3] - ; gcrRegs +[x5] - ldr x3, [x3, #0x10] - ; gcrRegs +[x3] - ; byrRegs -[x3] - ldr x6, [x20, #0x50]
+G_M10501_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz + mov w6, #24 + mov x7, #16 + umaddl x4, w4, w6, x7 + add x4, x1, x4 + ; byrRegs +[x4] + ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10] + ; gcrRegs +[x4] + ; byrRegs -[x4] + ldr x7, [x0, #0x50] + ; gcrRegs +[x7] + cmp x6, x7
beq G_M10501_IG09 ;; size=36 bbWeight=4 PerfScore 68.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x6] - ldr x6, [x20, #0x48] - ; gcrRegs +[x6] - cmp x5, x6 - bne G_M10501_IG10
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x7] + ldr x7, [x0, #0x48] + ; gcrRegs +[x7] + cmp x6, x7 + bne G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x5-x6 x19] - mov x19, x3
+G_M10501_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x6-x7 x19] + mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08] - ; gcrRegs -[x3] - cbnz w3, G_M10501_IG12
+ ldr w4, [x19, #0x08] + ; gcrRegs -[x4] + cbz w4, G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz - add w3, w4, #1 - sxtw w4, w3 - cmp w2, w4 - bgt G_M10501_IG07 - ;; size=16 bbWeight=4 PerfScore 10.00 -G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [fp, #0x20] // [V02 loc1] - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V00} - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - b G_M10501_IG17 - ;; size=36 bbWeight=0.50 PerfScore 4.75 -G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20] - ; GC ptr vars +{V00} - ldrb w1, [x20, #0x42] - ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42] + ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M10501_IG13 - ldr x0, [x20, #0x08] - ; gcrRegs +[x0]
+ cbz w1, G_M10501_IG11 + ldr x0, [x0, #0x08] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldr x1, [x20, #0x18] ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]]) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]]) + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x0-x3]
; gcr arg pop 0 ldp x0, x1, [x20, #0x10] ; gcrRegs +[x0-x1] @@ -198,28 +176,32 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR blr x3 ; gcrRegs -[x0-x2] ; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25 -G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50 +G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + ldr x20, [fp, #0x28] // [V00 this] + ; gcrRegs +[x20]
ldrb w2, [x20, #0x43] ldrb w1, [x20, #0x44] orr w2, w2, w1
- cbz w2, G_M10501_IG11 - ldr x2, [x20, #0x70]
+ mov x0, x20 + ; gcrRegs +[x0] + cbz w2, G_M10501_IG17 + ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1] mov x0, x19
- ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation] + movk x4, #0xD1FFAB1E LSL #16 + movk x4, #0xD1FFAB1E LSL #32 + ldr x4, [x4] + blr x4 + ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0 str x0, [fp, #0x18] // [V21 tmp14] ; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -229,22 +211,38 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 blr x2 ; gcrRegs -[x1] ; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - ldr w2, [x21, #0x08] - cbz w2, G_M10501_IG11 - ;; size=92 bbWeight=0.50 PerfScore 16.50 -G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldrb w2, [x20, #0x43]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr w2, [x20, #0x08] + ldr x0, [fp, #0x28] // [V00 this] + cbz w2, G_M10501_IG17 + ldr x3, [fp, #0x20] // [V02 loc1] + ; gcrRegs +[x3] + b G_M10501_IG14 + ;; size=112 bbWeight=0.50 PerfScore 21.00 +G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x20] +[x1] + ; GC ptr vars -{V21} + add w4, w5, #1 + sxtw w5, w4 + cmp w2, w5 + bgt G_M10501_IG07 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M10501_IG17
...

+36 (+4.64%) : 100193.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)

@@ -12,41 +12,43 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V02 loc1 [V02,T03] ( 3, 9 ) ref -> x19 class-hnd exact single-def <<unknown class>> ; V03 loc2 [V03 ] ( 8, 14 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x21 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
+; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x23 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 7, 14 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp2 [V07,T07] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp5 [V10,T09] ( 4, 3.50) ref -> x2
+; V10 tmp5 [V10,T11] ( 4, 3.50) ref -> x2
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0> ; V12 tmp7 [V12,T00] ( 4, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>> ; V13 tmp8 [V13,T05] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T12] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V18 tmp13 [V18,T08] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> -; V19 tmp14 [V19,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V18 tmp13 [V18,T10] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> +; V19 tmp14 [V19,T15] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "V18.[000..008)"
-; V22 tmp17 [V22,T13] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
+; V22 tmp17 [V22,T14] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "V18.[012..016)" ;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "V18.[016..020)" ;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V27 tmp22 [V27,T15] ( 2, 0 ) ref -> x0 "argument with side effect" -; V28 tmp23 [V28,T16] ( 2, 0 ) ref -> x1 "argument with side effect" -; V29 cse0 [V29,T04] ( 3, 6 ) long -> x20 "CSE - aggressive" -; V30 cse1 [V30,T10] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive" -; V31 cse2 [V31,T11] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V27 tmp22 [V27,T16] ( 2, 0 ) ref -> x0 "argument with side effect" +; V28 tmp23 [V28,T17] ( 2, 0 ) ref -> x1 "argument with side effect" +; V29 cse0 [V29,T07] ( 2, 5 ) long -> x21 hoist "CSE - aggressive" +; V30 cse1 [V30,T08] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" +; V31 cse2 [V31,T04] ( 3, 6 ) long -> x20 "CSE - aggressive" +; V32 cse3 [V32,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 88 G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x68]
- str x21, [sp, #0x78]
+ stp x21, x22, [sp, #0x78] + str x23, [sp, #0x88]
mov fp, sp add x9, fp, #24 movi v16.16b, #0 @@ -55,7 +57,7 @@ G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, xzr, [x9, #0x40] mov x19, x0 ; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M64326_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -139,10 +141,10 @@ G_M64326_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs -[x0] ;; size=36 bbWeight=0.50 PerfScore 3.75 G_M64326_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - ldr x2, [x21]
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x2, [x0]
; gcrRegs +[x2] cbnz x2, G_M64326_IG08 ;; size=20 bbWeight=1 PerfScore 5.50 @@ -155,7 +157,10 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- ldr x15, [x21, #-0x68]
+ movz x14, #0xD1FFAB1E + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + ldr x15, [x14]
; gcrRegs +[x15] add x14, x2, #8 ; byrRegs +[x14] @@ -166,12 +171,14 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32 str x14, [x2, #0x18]
- mov x14, x21
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32
mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=80 bbWeight=0.50 PerfScore 7.25
G_M64326_IG08: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref mov x0, x19 ; gcrRegs +[x0] @@ -213,34 +220,36 @@ G_M64326_IG10: ; bbWeight=1, isz, extend ldr x2, [x2] blr x2 cbz w0, G_M64326_IG12
- ;; size=60 bbWeight=1 PerfScore 12.50
+ movz x21, #0xD1FFAB1E + movk x21, #0xD1FFAB1E LSL #16 + movk x21, #0xD1FFAB1E LSL #32 + movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #0xD1FFAB1E LSL #32 + ;; size=84 bbWeight=1 PerfScore 15.50
G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x21
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #8
+ mov x23, x0 + ; gcrRegs +[x23] + add x14, x23, #8
; byrRegs +[x14] add x13, fp, #88 // [V03 loc2+0x18] ; byrRegs +[x13] bl CORINFO_HELP_ASSIGN_BYREF ; gcrRegs -[x0] bl CORINFO_HELP_ASSIGN_BYREF
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x22
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; byrRegs -[x13-x14] add x14, x0, #8 ; byrRegs +[x14]
- mov x15, x21
+ mov x15, x23
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x21]
+ ; gcrRegs -[x15 x23]
; byrRegs -[x14] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -273,14 +282,15 @@ G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x2, [x2] blr x2 cbnz w0, G_M64326_IG11
- ;; size=168 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 116.00
G_M64326_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ldr x21, [sp, #0x78]
+ ldr x23, [sp, #0x88] + ldp x21, x22, [sp, #0x78]
ldp x19, x20, [sp, #0x68]
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -318,7 +328,7 @@ G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=104 bbWeight=0 PerfScore 0.00
-Total bytes of code 776, prolog size 36, PerfScore 223.00, instruction count 194, allocated bytes for code 776 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
+Total bytes of code 812, prolog size 40, PerfScore 221.25, instruction count 203, allocated bytes for code 812 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
; ============================================================ Unwind Info: @@ -329,7 +339,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 194 (0x000c2) Actual length = 776 (0x000308)
+ Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -337,9 +347,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ D1 11 save_reg X#4 Z#17 (0x11); str x23, [sp, #136] + E6 save_next
C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! - E4 end
+ 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
E4 end

realworld.run.windows.arm64.checked.mch

-40 (-27.03%) : 14768.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3 -; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3 +; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0] sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08 - add x4, x0, #12 - ; byrRegs +[x4] - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11
+ ; byrRegs +[x0] + ;; size=8 bbWeight=0.50 PerfScore 0.50 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w3, w2 + bhs G_M3357_IG11 + ldrh w4, [x0, w3, UXTW #2] + cmp w4, #32 + ccmp w4, #9, z, ne + bne G_M3357_IG09
add w3, w3, #1 cmp w2, w3 bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4] - b G_M3357_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0] - cmp w3, w2 - bhs G_M3357_IG13 - add x4, x0, #12 - ; byrRegs +[x4] - ldrh w5, [x4, w3, UXTW #2] - cmp w5, #32 - ccmp w5, #9, z, ne - bne G_M3357_IG11 - add w3, w3, #1 - cmp w2, w3 - bgt G_M3357_IG08 - ;; size=40 bbWeight=0.04 PerfScore 0.36 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1 ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + sub w0, w3, w1 + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - sub w0, w3, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -103,7 +85,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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 (-0.77%) : 20324.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)

@@ -74,7 +74,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b cmp w1, #1 beq G_M39186_IG23 mov w19, wzr
- b G_M39186_IG35
+ b G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.50 G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz movn w1, #0 @@ -290,7 +290,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov w21, wzr ldr w11, [x0, #0x30] cmp w11, #0
- ble G_M39186_IG29
+ ble G_M39186_IG37
;; size=28 bbWeight=0.50 PerfScore 3.50 G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -300,11 +300,11 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs +[x11] ldr w1, [x11, #0x10] cmp w21, w1
- bhs G_M39186_IG30
+ bhs G_M39186_IG27
ldr x11, [x11, #0x08] ldr w1, [x11, #0x08] cmp w21, w1
- bhs G_M39186_IG31
+ bhs G_M39186_IG26
add x11, x11, #16 ; gcrRegs -[x11] ; byrRegs +[x11] @@ -320,10 +320,40 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M39186_IG34 - cbnz x20, G_M39186_IG27 - ;; size=80 bbWeight=4 PerfScore 116.00 -G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M39186_IG28 + ;; size=76 bbWeight=4 PerfScore 112.00 +G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20 x22] + mov w19, wzr + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + b G_M39186_IG38 + ;; size=32 bbWeight=0.50 PerfScore 4.50 +G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + brk_windows #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M39186_IG28: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x20 x22] + cbnz x20, G_M39186_IG33 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M39186_IG29: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr x0, [fp, #0x18] // [V00 this] ; gcrRegs +[x0] @@ -331,10 +361,22 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b ldr x2, [x1, #0x38] ldr x2, [x2] ldr x2, [x2, #0x38]
- cbz x2, G_M39186_IG32
+ cbz x2, G_M39186_IG31
;; size=24 bbWeight=2 PerfScore 30.00
-G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ b G_M39186_IG32 + ;; size=4 bbWeight=1.60 PerfScore 1.60 +G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref + mov x0, x1 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov x2, x0 + ;; size=24 bbWeight=0.40 PerfScore 1.40 +G_M39186_IG32: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x2 ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -345,7 +387,7 @@ G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b mov x20, x0 ; gcrRegs +[x20] ;; size=20 bbWeight=2 PerfScore 14.00
-G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19] ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -353,9 +395,20 @@ G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 { ldr x1, [x0, #0x38] ldr x1, [x1] ldr x11, [x1, #0x30]
- cbz x11, G_M39186_IG33
+ cbz x11, G_M39186_IG35
;; size=24 bbWeight=4 PerfScore 60.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref + b G_M39186_IG36 + ;; size=4 bbWeight=3.20 PerfScore 3.20 +G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov x11, x0 + ;; size=20 bbWeight=0.80 PerfScore 2.40 +G_M39186_IG36: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22 ; gcrRegs +[x0] ldr x1, [x11] @@ -374,7 +427,7 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 cmp w21, w14 blt G_M39186_IG24 ;; size=44 bbWeight=4 PerfScore 48.00
-G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -390,68 +443,17 @@ G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} sxtw w20, w0 mov w19, w20 ; gcrRegs -[x19]
- b G_M39186_IG35 - ;; size=36 bbWeight=0.50 PerfScore 3.75 -G_M39186_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - brk_windows #0 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M39186_IG32: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x22] - mov x0, x1 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov x2, x0 - b G_M39186_IG26 - ;; size=28 bbWeight=0.40 PerfScore 1.80 -G_M39186_IG33: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov x11, x0 - b G_M39186_IG28 - ;; size=24 bbWeight=0.80 PerfScore 3.20 -G_M39186_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20 x22] - ldr x19, [fp, #0x18] // [V00 this] - ; gcrRegs +[x19] - mov w20, wzr - mov x0, x19 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0 x19] - ; gcr arg pop 0 - mov w19, w20 - ;; size=36 bbWeight=0.50 PerfScore 4.50 -G_M39186_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.25 +G_M39186_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w19 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M39186_IG36: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V03 V24} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -459,10 +461,10 @@ G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs add x3, fp, #80 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V03 loc2] ; gcrRegs +[x0]
- cbz x0, G_M39186_IG39
+ cbz x0, G_M39186_IG42
movz x19, #0xD1FFAB1E movk x19, #0xD1FFAB1E LSL #16 movk x19, #0xD1FFAB1E LSL #32 @@ -473,20 +475,20 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] add x3, fp, #80 str x3, [sp, #0x18] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG44: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...

-4 (-0.15%) : 2117.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -23,24 +23,24 @@ ; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String> ; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28 ; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3 ; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]> ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1 ;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt" ;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg" ;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -67,13 +67,13 @@ ;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" ;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> -; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg" -; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]> +; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg" +; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]> ; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg" ; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]> @@ -90,14 +90,14 @@ ;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> -; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]> +; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP ;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP @@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2 bhi G_M4730_IG74
- cmp w1, #0 - cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w3, [x1, #0x08] cmp w3, w0 bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref ; byrRegs -[x27] add x1, x1, #16 @@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {}, beq G_M4730_IG67 b G_M4730_IG27 ;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89} str w1, [fp, #0x60] // [V10 loc6] mov w28, w2 @@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; GC ptr vars +{V89} ldr w28, [fp, #0x68] // [V07 loc3] ;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3] ; GC ptr vars -{V57} cmp w25, w26 @@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89} ; GC ptr vars +{V13} cbz x24, G_M4730_IG39 ;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26] ldr w26, [fp, #0x44] // [V90 tmp68] cbz w26, G_M4730_IG32 @@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g str w0, [x19, #0x18] b G_M4730_IG41 ;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27] ; GC ptr vars +{V13 V16 V89} b G_M4730_IG42 @@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; gcrRegs -[x26] b G_M4730_IG47 ;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26] ; GC ptr vars +{V13 V16 V89} ldr x2, [fp, #0x30] // [V13 loc9] @@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe ; gcr arg pop 0 b G_M4730_IG06 ;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27] ; GC ptr vars +{V13 V16 V89} ldr x1, [fp, #0x30] // [V13 loc9] @@ -1216,7 +1215,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2704, prolog size 48, PerfScore 6977.50, instruction count 676, allocated bytes for code 2704 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2700, prolog size 48, PerfScore 6975.50, instruction count 675, allocated bytes for code 2700 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -1227,7 +1226,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 676 (0x002a4) Actual length = 2704 (0x000a90)
+ Function Length : 675 (0x002a3) Actual length = 2700 (0x000a8c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.56%) : 23309.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)

@@ -38,7 +38,7 @@ G_M17353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M17353_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz mov x20, x19 ; gcrRegs +[x20]
- cbz x19, G_M17353_IG09
+ cbz x19, G_M17353_IG08
;; size=8 bbWeight=1 PerfScore 1.50 G_M17353_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x0, x20 @@ -69,7 +69,7 @@ G_M17353_IG04: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x8, x0
- bne G_M17353_IG11
+ bne G_M17353_IG12
mov x21, x20 ; gcrRegs +[x21] add x8, fp, #16 // [V03 loc2] @@ -103,27 +103,31 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ;; size=12 bbWeight=2 PerfScore 9.00 G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20]
+ b G_M17353_IG10 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] + mov x0, xzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x40 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M17353_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
mov x0, x21 ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x40 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x21] - mov x0, xzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldr x21, [sp, #0x38] - ldp x19, x20, [sp, #0x28] - ldp fp, lr, [sp], #0x40 - ret lr - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x20]
+G_M17353_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x21] +[x20]
mov x1, x20 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -131,7 +135,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 brk_windows #0 ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 256, prolog size 24, PerfScore 152.00, instruction count 64, allocated bytes for code 256 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 260, prolog size 24, PerfScore 152.50, instruction count 65, allocated bytes for code 260 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
; ============================================================ Unwind Info: @@ -142,7 +146,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ 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)

+8 (+1.96%) : 24840.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int

@@ -10,15 +10,15 @@ ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T03] ( 6, 10 ) ref -> x20 class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]>
-; V04 loc0 [V04 ] ( 8, 13.50) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
+; V04 loc0 [V04 ] ( 9, 14 ) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
; V05 loc1 [V05,T06] ( 5, 8.50) ref -> x23 ld-addr-op class-hnd <System.__Canon> ;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]> ; V07 loc3 [V07,T00] ( 6, 18.50) int -> x24 ; V08 loc4 [V08,T04] ( 4, 12 ) ref -> x26 class-hnd <System.__Canon> ; V09 loc5 [V09,T09] ( 4, 8 ) int -> x0
-; V10 loc6 [V10,T02] ( 6, 12.50) int -> x24
+; V10 loc6 [V10,T01] ( 7, 17 ) int -> x24
; V11 loc7 [V11,T12] ( 3, 6 ) ref -> x25 class-hnd <System.__Canon> ; V12 loc8 [V12,T13] ( 3, 6 ) int -> x0 ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -28,7 +28,7 @@ ;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V18 tmp5 [V18,T11] ( 4, 4.50) ref -> x21 single-def "field V01.array (fldOffset=0x0)" P-INDEP ; V19 tmp6 [V19,T10] ( 6, 7.50) ubyte -> [fp+0x18] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp7 [V20,T05] ( 5, 9 ) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
+; V20 tmp7 [V20,T05] ( 6, 9.50) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP ;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP ; V23 cse0 [V23,T14] ( 2, 1 ) int -> x0 "CSE - moderate" @@ -143,13 +143,15 @@ G_M52223_IG12: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
mov w24, wzr
- b G_M52223_IG16 - ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ldr w1, [fp, #0x1C] // [V20 tmp7] + cmp w24, w1 + bge G_M52223_IG16 + ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz cmp w24, w22
- bhs G_M52223_IG21
+ bhs G_M52223_IG20
add x25, x21, #16 ; byrRegs +[x25] ldr x25, [x25, w24, UXTW #3] @@ -174,21 +176,19 @@ G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg ; gcrRegs -[x0-x2 x25] cbz w0, G_M52223_IG15 cmp w0, #3
- bne G_M52223_IG19
+ bne G_M52223_IG18
;; size=68 bbWeight=2 PerfScore 48.00
-G_M52223_IG15: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M52223_IG15: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
- ;; size=4 bbWeight=2 PerfScore 1.00 -G_M52223_IG16: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz - ldr w1, [fp, #0x1C] // [V20 tmp7] - cmp w24, w1
+ ldr w0, [fp, #0x1C] // [V20 tmp7] + cmp w24, w0
blt G_M52223_IG14
- ;; size=12 bbWeight=4 PerfScore 14.00 -G_M52223_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 16.00 +G_M52223_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21 x23] ldr x0, [fp, #0x18] // [V04 loc0] ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -196,10 +196,10 @@ G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG19: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] @@ -207,12 +207,12 @@ G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 408, prolog size 28, PerfScore 189.00, instruction count 102, allocated bytes for code 408 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 416, prolog size 28, PerfScore 191.25, instruction count 104, allocated bytes for code 416 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================ Unwind Info: @@ -223,7 +223,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 102 (0x00066) Actual length = 408 (0x000198)
+ Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+3.94%) : 2910.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T08] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T13] ( 5, 28 ) long -> x21 ; V02 loc1 [V02,T14] ( 5, 24 ) int -> x21 ; V03 loc2 [V03,T12] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T02] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0 ; V06 loc5 [V06,T06] ( 3, 40 ) ref -> x1 class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25 @@ -28,8 +28,8 @@ ;* V17 tmp7 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V18 tmp8 [V18,T18] ( 4, 5 ) ref -> x0 "Single return block return value" ; V19 tmp9 [V19,T16] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V20 cse0 [V20,T07] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive" -; V21 cse1 [V21,T03] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V20 cse0 [V20,T02] ( 8, 57 ) int -> x20 "CSE - aggressive" +; V21 cse1 [V21,T07] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V22 cse2 [V22,T05] ( 5, 40 ) int -> x27 "CSE - aggressive" ; ; Lcl frame size = 0 @@ -46,37 +46,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG20
+ cbz x19, G_M46295_IG22
ldr w20, [x19, #0x08] cmp w20, #1
- ble G_M46295_IG14
+ ble G_M46295_IG16
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr mov w0, wzr
+ cmp w20, #0 + ble G_M46295_IG08 + ;; size=16 bbWeight=4 PerfScore 10.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16 ; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3] ; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08] ; gcrRegs -[x1] add x21, x21, w1, UXTW ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1 cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x22]
mov x0, #0xD1FFAB1E cmp x21, x0
- bgt G_M46295_IG21 - cbz w21, G_M46295_IG15
+ bgt G_M46295_IG23 + cbz w21, G_M46295_IG17
mov w0, w21 bl <unknown method> ; gcrRegs +[x0] @@ -85,20 +90,26 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22 ; gcrRegs +[x23] mov w24, wzr mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0 + ble G_M46295_IG15 + ;; size=44 bbWeight=4 PerfScore 30.00 +G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16 + ; byrRegs +[x22] + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3] ; gcrRegs +[x26]
- cbz x26, G_M46295_IG10
+ cbz x26, G_M46295_IG12
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG10
+ cbz w27, G_M46295_IG12
sxtw w28, w27 sub w0, w21, w24 cmp w0, w28
- blt G_M46295_IG12
+ blt G_M46295_IG14
cmp x23, #0 cset x0, ne movz x1, #0xD1FFAB1E // code for <unknown method> @@ -144,21 +155,21 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4 ; gcr arg pop 0 add w24, w24, w28 ;; size=160 bbWeight=8 PerfScore 312.00
-G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1 cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG11: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG13
+ b G_M46295_IG15
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG12: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG18
+ beq G_M46295_IG20
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this @@ -172,28 +183,28 @@ G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcrRegs +[x19] b G_M46295_IG02 ;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG16
+ cbz w20, G_M46295_IG18
cmp w20, #0
- bls G_M46295_IG19
+ bls G_M46295_IG21
ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M46295_IG17
+ cbnz x0, G_M46295_IG19
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG17
+ b G_M46295_IG19
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] @@ -203,18 +214,18 @@ G_M46295_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23] mov x0, x23 ; gcrRegs +[x0]
- b G_M46295_IG17
+ b G_M46295_IG19
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -231,7 +242,7 @@ G_M46295_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -241,7 +252,7 @@ G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 508, prolog size 32, PerfScore 671.00, instruction count 127, allocated bytes for code 508 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 528, prolog size 32, PerfScore 683.00, instruction count 132, allocated bytes for code 528 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -252,7 +263,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 127 (0x0007f) Actual length = 508 (0x0001fc)
+ Function Length : 132 (0x00084) Actual length = 528 (0x000210)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 20 7 6 7 -232 +372
benchmarks.run_pgo.windows.arm64.checked.mch 474 357 70 47 -6,824 +2,748
benchmarks.run_tiered.windows.arm64.checked.mch 8 0 3 5 -0 +140
coreclr_tests.run.windows.arm64.checked.mch 225 40 87 98 -312 +1,028
libraries.crossgen2.windows.arm64.checked.mch 1 0 0 1 -0 +0
libraries.pmi.windows.arm64.checked.mch 192 50 63 79 -484 +1,896
libraries_tests.run.windows.arm64.Release.mch 832 424 199 209 -5,584 +1,880
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 224 63 60 101 -944 +1,228
realworld.run.windows.arm64.checked.mch 27 7 12 8 -68 +184
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
2,003 948 500 555 -14,448 +9,476

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,455 4 24,451 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch 97,527 48,627 48,900 13 (0.01%) 13 (0.01%)
benchmarks.run_tiered.windows.arm64.checked.mch 49,174 36,718 12,456 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 595,172 362,437 232,735 11 (0.00%) 11 (0.00%)
libraries.crossgen2.windows.arm64.checked.mch 2,130 0 2,130 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 305,519 6 305,513 3 (0.00%) 3 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 646,533 468,460 178,073 107 (0.02%) 107 (0.02%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 317,022 21,598 295,424 4 (0.00%) 4 (0.00%)
realworld.run.windows.arm64.checked.mch 33,241 3 33,238 1 (0.00%) 1 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch 77 0 77 0 (0.00%) 0 (0.00%)
2,070,850 937,853 1,132,997 139 (0.01%) 139 (0.01%)

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: 10966596 (overridden on cmd)
Total bytes of diff: 10966736 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 46609220 (overridden on cmd)
Total bytes of diff: 46605144 (overridden on cmd)
Total bytes of delta: -4076 (-0.01 % of base)
    relative diff is a regression.

Detail diffs



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


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: 15506140 (overridden on cmd)
Total bytes of diff: 15506280 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

0 total methods with Code Size differences (0 improved, 0 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: 496298628 (overridden on cmd)
Total bytes of diff: 496299344 (overridden on cmd)
Total bytes of delta: 716 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 338836 (overridden on cmd)
Total bytes of diff: 338836 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 79834280 (overridden on cmd)
Total bytes of diff: 79835692 (overridden on cmd)
Total bytes of delta: 1412 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 326696628 (overridden on cmd)
Total bytes of diff: 326692924 (overridden on cmd)
Total bytes of delta: -3704 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 171564828 (overridden on cmd)
Total bytes of diff: 171565112 (overridden on cmd)
Total bytes of delta: 284 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 15891320 (overridden on cmd)
Total bytes of diff: 15891436 (overridden on cmd)
Total bytes of delta: 116 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



windows x64

Diffs are based on 2,098,526 contexts (926,221 MinOpts, 1,172,305 FullOpts).

MISSED contexts: 138 (0.01%)

Overall (-9,853 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x64.checked.mch 8,737,750 -4
benchmarks.run_pgo.windows.x64.checked.mch 35,778,033 -6,318
benchmarks.run_tiered.windows.x64.checked.mch 12,549,088 +97
coreclr_tests.run.windows.x64.checked.mch 392,964,649 -153
libraries.crossgen2.windows.x64.checked.mch 214,877 -1
libraries.pmi.windows.x64.checked.mch 61,646,281 +1,038
libraries_tests.run.windows.x64.Release.mch 278,843,071 -3,828
librariestestsnotieredcompilation.run.windows.x64.Release.mch 137,561,184 -698
realworld.run.windows.x64.checked.mch 14,184,922 +14

FullOpts (-9,853 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x64.checked.mch 8,737,387 -4
benchmarks.run_pgo.windows.x64.checked.mch 21,745,952 -6,318
benchmarks.run_tiered.windows.x64.checked.mch 3,453,351 +97
coreclr_tests.run.windows.x64.checked.mch 120,242,671 -153
libraries.crossgen2.windows.x64.checked.mch 214,877 -1
libraries.pmi.windows.x64.checked.mch 61,532,760 +1,038
libraries_tests.run.windows.x64.Release.mch 106,668,455 -3,828
librariestestsnotieredcompilation.run.windows.x64.Release.mch 126,635,118 -698
realworld.run.windows.x64.checked.mch 13,798,313 +14

Example diffs

benchmarks.run.windows.x64.checked.mch

-35 (-30.97%) : 5566.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov r8d, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp r8d, eax + jae SHORT G_M3357_IG13
mov r10d, r8d movzx r10, word ptr [rcx+2*r10+0x0C] cmp r10d, 32 je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d cmp eax, r8d jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx] - cmp r8d, eax - jae SHORT G_M3357_IG17 - mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C] - cmp r10d, 32 - je SHORT G_M3357_IG12 - ;; size=20 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r10d, 9 - jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - cmp eax, r8d - jg SHORT G_M3357_IG10 - ;; size=8 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d sub eax, edx ;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-28 (-3.78%) : 1310.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+FullInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+FullNullabilityHandler[ulong]](System.ReadOnlySpan1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (FullOpts)

@@ -126,63 +126,130 @@ G_M6149_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi ; gcrRegs +[rcx] mov edx, dword ptr [rsi+0x08] cmp edx, dword ptr [rcx+0x08]
- jae G_M6149_IG16
+ jae SHORT G_M6149_IG07
movzx r13, byte ptr [rcx+rdx+0x10] test r13b, 1 je SHORT G_M6149_IG05
- ;; size=28 bbWeight=8 PerfScore 90.00
+ ;; size=24 bbWeight=8 PerfScore 90.00
G_M6149_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref ; gcrRegs -[rcx] mov ecx, dword ptr [rbp-0x3C] mov dword ptr [rbp-0x4C], ecx ;; size=6 bbWeight=2 PerfScore 4.00
-G_M6149_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 2
- jne G_M6149_IG25 - ;; size=10 bbWeight=8 PerfScore 10.00 -G_M6149_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ je SHORT G_M6149_IG08 + ;; size=6 bbWeight=8 PerfScore 10.00 +G_M6149_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rsi rdi] + mov ecx, 1 + jmp G_M6149_IG28 + ;; size=10 bbWeight=0.50 PerfScore 1.12 +G_M6149_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M6149_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs +[rbx] + ; byrRegs +[rsi rdi]
mov rcx, bword ptr [rdi] ; byrRegs +[rcx] mov edx, dword ptr [rdi+0x08] cmp dword ptr [rbp-0x3C], edx
- jb G_M6149_IG17 - ;; size=15 bbWeight=4 PerfScore 28.00 -G_M6149_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ jb SHORT G_M6149_IG10 + ;; size=11 bbWeight=4 PerfScore 28.00 +G_M6149_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; byrRegs -[rcx] mov r12d, -1
- ;; size=6 bbWeight=2 PerfScore 0.50 -G_M6149_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - test r13b, 4
+ jmp SHORT G_M6149_IG15 + ;; size=8 bbWeight=2 PerfScore 4.50 +G_M6149_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref, isz + ; byrRegs +[rcx] + mov r12d, dword ptr [rbp-0x3C] + movzx rcx, word ptr [rcx+2*r12] + ; byrRegs -[rcx] + mov dword ptr [rbp-0x50], ecx + cmp ecx, 10
jne SHORT G_M6149_IG11
+ dec edx + cmp dword ptr [rbp-0x3C], edx + je SHORT G_M6149_IG14 + ;; size=24 bbWeight=2 PerfScore 17.00 +G_M6149_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + mov rdx, gword ptr [rbx+0x50] + ; gcrRegs +[rdx] + mov r12, gword ptr [rdx+0x08] + ; gcrRegs +[r12] + mov eax, dword ptr [r12+0x08] + cmp eax, ecx + ja SHORT G_M6149_IG12 + mov rcx, gword ptr [rdx+0x10] + ; gcrRegs +[rcx] + mov edx, dword ptr [rbp-0x50] + ; gcrRegs -[rdx] + cmp dword ptr [rcx], ecx + call [System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this] + ; gcrRegs -[rcx r12] + ; gcr arg pop 0 + jmp SHORT G_M6149_IG13 + ;; size=34 bbWeight=2 PerfScore 36.50 +G_M6149_IG12: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs +[r12] + mov eax, dword ptr [rbp-0x50] + mov eax, dword ptr [r12+4*rax+0x10] + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M6149_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs -[r12] + mov r12d, eax + jmp SHORT G_M6149_IG15 + ;; size=5 bbWeight=2 PerfScore 4.50 +G_M6149_IG14: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref + mov rcx, gword ptr [rbx+0x90] + ; gcrRegs +[rcx] + mov r12d, dword ptr [rcx+0x08] + ;; size=11 bbWeight=2 PerfScore 8.00 +G_M6149_IG15: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs -[rcx] + test r13b, 4 + jne SHORT G_M6149_IG19
;; size=6 bbWeight=4 PerfScore 5.00
-G_M6149_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M6149_IG16: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 8
- je SHORT G_M6149_IG12
+ je SHORT G_M6149_IG20
mov rcx, gword ptr [rbx+0x98] ; gcrRegs +[rcx] lea edx, [r12+0x01] cmp edx, dword ptr [rcx+0x08]
- jae G_M6149_IG16
+ jae G_M6149_IG07
mov edx, dword ptr [rcx+4*rdx+0x10] mov rcx, gword ptr [rbx+0x10] mov r13d, dword ptr [rsi+0x08] cmp r13d, dword ptr [rcx+0x08]
- jae G_M6149_IG16
+ jae G_M6149_IG07
mov rcx, gword ptr [rcx+8*r13+0x10] shl edx, 3 or edx, dword ptr [rcx+0x10] mov rcx, gword ptr [rcx+0x08] cmp gword ptr [rcx+0x18], 0
- je G_M6149_IG22
+ je SHORT G_M6149_IG17
call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=81 bbWeight=2 PerfScore 64.50 -G_M6149_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jmp SHORT G_M6149_IG18 + ;; size=79 bbWeight=2 PerfScore 68.50 +G_M6149_IG17: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs +[rcx] + mov edx, dword ptr [rcx+0x34] + and edx, 1 + mov eax, edx + ;; size=8 bbWeight=2 PerfScore 5.00 +G_M6149_IG18: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs -[rcx]
test eax, eax
- je SHORT G_M6149_IG12
+ je SHORT G_M6149_IG20
;; size=4 bbWeight=2 PerfScore 2.50
-G_M6149_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG19: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov edx, dword ptr [rbp-0x3C] mov dword ptr [rbp-0x40], edx mov edx, dword ptr [rsi+0x08] @@ -192,7 +259,7 @@ G_M6149_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi test r15d, r15d je G_M6149_IG26 ;; size=27 bbWeight=2 PerfScore 16.50
-G_M6149_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M6149_IG20: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
cmp dword ptr [rbp-0x3C], r14d jge G_M6149_IG27 mov edx, dword ptr [rsi+0x08] @@ -203,96 +270,25 @@ G_M6149_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi mov r13, gword ptr [rbx+0x20] ; gcrRegs +[r13] cmp ecx, dword ptr [r13+0x08]
- jae SHORT G_M6149_IG16
+ jae G_M6149_IG07
mov eax, ecx mov eax, dword ptr [r13+4*rax+0x10] test eax, eax
- jle G_M6149_IG23
+ jle SHORT G_M6149_IG23
;; size=55 bbWeight=4 PerfScore 73.00
-G_M6149_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG21: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
; gcrRegs -[r13] mov dword ptr [rsi+0x08], eax ;; size=3 bbWeight=2 PerfScore 2.00
-G_M6149_IG14: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG22: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov r13d, 1
- ;; size=6 bbWeight=8 PerfScore 2.00 -G_M6149_IG15: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref - xor rax, rax - ; gcrRegs +[rax] - mov gword ptr [rbp-0x60], rax - test r13d, r13d - je G_M6149_IG27 - mov eax, dword ptr [rbp-0x3C] - ; gcrRegs -[rax] - inc eax - mov dword ptr [rbp-0x3C], eax - jmp G_M6149_IG03 - ;; size=28 bbWeight=4 PerfScore 27.00 -G_M6149_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rsi rdi] - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M6149_IG17: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rcx rsi rdi] - mov r12d, dword ptr [rbp-0x3C] - movzx rcx, word ptr [rcx+2*r12] - ; byrRegs -[rcx] - mov dword ptr [rbp-0x50], ecx - cmp ecx, 10 - jne SHORT G_M6149_IG18 - dec edx - cmp dword ptr [rbp-0x3C], edx - je SHORT G_M6149_IG21 - ;; size=24 bbWeight=2 PerfScore 17.00 -G_M6149_IG18: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - mov rdx, gword ptr [rbx+0x50] - ; gcrRegs +[rdx] - mov r12, gword ptr [rdx+0x08] - ; gcrRegs +[r12] - mov eax, dword ptr [r12+0x08] - cmp eax, ecx - ja SHORT G_M6149_IG19 - mov rcx, gword ptr [rdx+0x10] - ; gcrRegs +[rcx] - mov edx, dword ptr [rbp-0x50] - ; gcrRegs -[rdx] - cmp dword ptr [rcx], ecx - call [System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this] - ; gcrRegs -[rcx r12] - ; gcr arg pop 0 - jmp SHORT G_M6149_IG20 - ;; size=34 bbWeight=2 PerfScore 36.50 -G_M6149_IG19: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref - ; gcrRegs +[r12] - mov eax, dword ptr [rbp-0x50] - mov eax, dword ptr [r12+4*rax+0x10] - ;; size=8 bbWeight=2 PerfScore 6.00 -G_M6149_IG20: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref - ; gcrRegs -[r12] - mov r12d, eax - jmp G_M6149_IG08 - ;; size=8 bbWeight=2 PerfScore 4.50 -G_M6149_IG21: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref - mov rcx, gword ptr [rbx+0x90] - ; gcrRegs +[rcx] - mov r12d, dword ptr [rcx+0x08] - jmp G_M6149_IG08 - ;; size=16 bbWeight=2 PerfScore 12.00 -G_M6149_IG22: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=00C0 {rsi rdi}, byref - mov edx, dword ptr [rcx+0x34] - and edx, 1
...

-5 (-0.18%) : 17323.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)

@@ -8,19 +8,19 @@ ; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T40] ( 4, 7 ) ref -> [rbp+0x10] this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator> -; V01 arg1 [V01,T38] ( 5, 8 ) int -> rdi single-def -; V02 arg2 [V02,T35] ( 6, 9 ) ref -> rsi class-hnd single-def <System.String> -; V03 arg3 [V03,T39] ( 5, 8 ) long -> r14 single-def -; V04 arg4 [V04,T51] ( 3, 6 ) int -> [rbp+0x30] single-def -; V05 arg5 [V05,T52] ( 3, 6 ) int -> [rbp+0x38] single-def -; V06 arg6 [V06,T42] ( 5, 8 ) int -> r13 single-def -; V07 arg7 [V07,T30] ( 10, 10 ) ref -> rbx class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]> -; V08 loc0 [V08,T41] ( 6, 5 ) ref -> [rbp-0x110] do-not-enreg[M] class-hnd EH-live <ubyte[]> -; V09 loc1 [V09,T43] ( 5, 5 ) ubyte -> [rbp-0x3C] -; V10 loc2 [V10,T16] ( 8, 22 ) int -> [rbp-0x40] -; V11 loc3 [V11,T17] ( 8, 22 ) int -> [rbp-0x44] -; V12 loc4 [V12,T53] ( 3, 3 ) int -> [rbp-0x48] spill-single-def
+; V00 this [V00,T41] ( 4, 7 ) ref -> [rbp+0x10] this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator> +; V01 arg1 [V01,T39] ( 5, 8 ) int -> rdi single-def +; V02 arg2 [V02,T35] ( 6, 9 ) ref -> [rbp+0x20] class-hnd single-def <System.String> +; V03 arg3 [V03,T40] ( 5, 8 ) long -> r14 single-def +; V04 arg4 [V04,T52] ( 3, 6 ) int -> [rbp+0x30] single-def +; V05 arg5 [V05,T53] ( 3, 6 ) int -> [rbp+0x38] single-def +; V06 arg6 [V06,T44] ( 5, 8 ) int -> r13 single-def +; V07 arg7 [V07,T26] ( 10, 13 ) ref -> rbx class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]> +; V08 loc0 [V08,T43] ( 6, 5 ) ref -> [rbp-0x110] do-not-enreg[M] class-hnd EH-live <ubyte[]> +; V09 loc1 [V09,T36] ( 5, 8 ) ubyte -> [rbp-0x3C] +; V10 loc2 [V10,T15] ( 8, 25 ) int -> [rbp-0x40] +; V11 loc3 [V11,T16] ( 8, 25 ) int -> [rbp-0x44] +; V12 loc4 [V12,T42] ( 3, 6 ) int -> [rbp-0x48] spill-single-def
;* V13 loc5 [V13 ] ( 0, 0 ) int -> zero-ref ;* V14 loc6 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref @@ -32,7 +32,7 @@ ; V21 loc13 [V21,T32] ( 2, 9 ) ref -> [rbp-0x120] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V22 loc14 [V22,T10] ( 5, 33 ) int -> [rbp-0x74] ;* V23 loc15 [V23 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V24 loc16 [V24,T13] ( 4, 32 ) int -> [rbp-0x78] ld-addr-op
+; V24 loc16 [V24,T13] ( 4, 32 ) int -> rsi ld-addr-op
; V25 loc17 [V25,T02] ( 20, 67 ) long -> [rbp-0x80] ; V26 loc18 [V26 ] ( 3, 3 ) ref -> [rbp-0x88] must-init pinned class-hnd <ubyte[]> ; V27 loc19 [V27 ] ( 62,124 ) int -> [rbp-0x90] do-not-enreg[X] addr-exposed ld-addr-op @@ -41,33 +41,33 @@ ; V30 loc22 [V30,T33] ( 2, 9 ) ref -> [rbp-0x128] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V31 loc23 [V31,T11] ( 5, 33 ) int -> [rbp-0x9C] ; V32 loc24 [V32 ] ( 2, 16 ) struct (24) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V33 loc25 [V33,T50] ( 3, 6 ) ref -> [rbp-0x130] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
+; V33 loc25 [V33,T51] ( 3, 6 ) ref -> [rbp-0x130] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
; V34 loc26 [V34,T34] ( 2, 9 ) ref -> rbx class-hnd exact single-def <System.Diagnostics.Tracing.EventParameterInfo[]> ; V35 loc27 [V35,T12] ( 5, 33 ) int -> [rbp-0xBC] ;* V36 loc28 [V36 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo> ; V37 OutArgs [V37 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V38 tmp1 [V38,T55] ( 2, 2 ) int -> r8 -; V39 tmp2 [V39,T56] ( 2, 2 ) int -> r10
+; V38 tmp1 [V38,T55] ( 2, 2 ) int -> r10 +; V39 tmp2 [V39,T56] ( 2, 2 ) int -> rcx
; V40 tmp3 [V40,T57] ( 2, 2 ) long -> r9 ;* V41 tmp4 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V42 tmp5 [V42,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V42 tmp5 [V42,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V43 tmp6 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> ; V45 tmp8 [V45 ] ( 2, 16 ) int -> [rbp-0xC8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V46 tmp9 [V46,T46] ( 2, 4 ) int -> [rbp-0xCC] spill-single-def "Inlining Arg"
+; V46 tmp9 [V46,T47] ( 2, 4 ) int -> [rbp-0xCC] spill-single-def "Inlining Arg"
;* V47 tmp10 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp11 [V48,T47] ( 2, 4 ) int -> [rbp-0xD0] spill-single-def "Inlining Arg" -; V49 tmp12 [V49,T26] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" -; V50 tmp13 [V50,T27] ( 3, 12 ) ubyte -> rax "Inline return value spill temp"
+; V48 tmp11 [V48,T48] ( 2, 4 ) int -> [rbp-0xD0] spill-single-def "Inlining Arg" +; V49 tmp12 [V49,T27] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" +; V50 tmp13 [V50,T28] ( 3, 12 ) ubyte -> rax "Inline return value spill temp"
;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V52 tmp15 [V52,T15] ( 3, 24 ) ref -> [rbp-0x138] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
+; V52 tmp15 [V52,T17] ( 3, 24 ) ref -> [rbp-0x138] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
; V53 tmp16 [V53,T21] ( 4, 16 ) int -> [rbp-0xD4] ld-addr-op "Inline ldloca(s) first use temp" ; V54 tmp17 [V54 ] ( 4, 16 ) byref -> [rbp-0xE0] must-init pinned "Inline stloc first use temp"
-; V55 tmp18 [V55,T36] ( 2, 8 ) long -> r10
+; V55 tmp18 [V55,T37] ( 2, 8 ) long -> r10
; V56 tmp19 [V56,T08] ( 2, 36 ) long -> [rbp-0xE8] spill-single-def "Inline stloc first use temp" ;* V57 tmp20 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp21 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V59 tmp22 [V59,T37] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp22 [V59,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp23 [V60 ] ( 2, 8 ) int -> [rbp-0xF0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V62 tmp25 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -77,7 +77,7 @@ ; V66 tmp29 [V66 ] ( 2, 16 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V19.ParameterName (fldOffset=0x0)" P-DEP ; V67 tmp30 [V67 ] ( 2, 16 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V19.ParameterType (fldOffset=0x8)" P-DEP ; V68 tmp31 [V68 ] ( 2, 16 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V19.TypeInfo (fldOffset=0x10)" P-DEP
-; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> r9 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
+; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> rsi "field V23.ParameterName (fldOffset=0x0)" P-INDEP
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref "field V23.ParameterType (fldOffset=0x8)" P-INDEP ; V71 tmp34 [V71,T24] ( 2, 16 ) ref -> [rbp-0x140] spill-single-def "field V23.TypeInfo (fldOffset=0x10)" P-INDEP ; V72 tmp35 [V72 ] ( 2, 16 ) ref -> [rbp-0xB8] do-not-enreg[X] addr-exposed "field V32.ParameterName (fldOffset=0x0)" P-DEP @@ -87,14 +87,14 @@ ;* V76 tmp39 [V76 ] ( 0, 0 ) ref -> zero-ref "field V36.ParameterType (fldOffset=0x8)" P-INDEP ; V77 tmp40 [V77,T19] ( 3, 20 ) ref -> r11 "field V36.TypeInfo (fldOffset=0x10)" P-INDEP ; V78 tmp41 [V78,T03] ( 3, 48 ) byref -> rdx "BlockOp address local"
-; V79 tmp42 [V79,T48] ( 2, 4 ) long -> r10 "Cast away GC" -; V80 tmp43 [V80,T49] ( 2, 4 ) long -> r9 "Cast away GC" -; V81 tmp44 [V81,T44] ( 2, 4 ) ref -> rdx "argument with side effect"
+; V79 tmp42 [V79,T49] ( 2, 4 ) long -> rax "Cast away GC" +; V80 tmp43 [V80,T50] ( 2, 4 ) long -> r9 "Cast away GC" +; V81 tmp44 [V81,T45] ( 2, 4 ) ref -> rdx "argument with side effect"
; V82 tmp45 [V82,T04] ( 3, 48 ) byref -> rcx "BlockOp address local" ; V83 tmp46 [V83,T25] ( 2, 16 ) long -> r10 "Cast away GC"
-; V84 tmp47 [V84,T45] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V84 tmp47 [V84,T46] ( 2, 16 ) ref -> rdx "argument with side effect"
; V85 PSPSym [V85,T58] ( 1, 1 ) long -> [rbp-0x150] do-not-enreg[V] "PSPSym"
-; V86 cse0 [V86,T28] ( 3, 12 ) int -> [rbp-0xF8] spill-single-def "CSE - moderate"
+; V86 cse0 [V86,T29] ( 3, 12 ) int -> [rbp-0xF8] spill-single-def "CSE - moderate"
; V87 cse1 [V87,T54] ( 3, 3 ) int -> [rbp-0xFC] spill-single-def "CSE - conservative" ; V88 cse2 [V88,T18] ( 8, 22 ) int -> [rbp-0x100] multi-def "CSE - moderate" ; V89 cse3 [V89,T20] ( 4, 18 ) int -> [rbp-0x104] spill-single-def "CSE - moderate" @@ -132,13 +132,12 @@ G_M27295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov rsi, r8 ; gcrRegs +[rsi] mov r14, r9
- mov r12d, dword ptr [rbp+0x30]
mov r13d, dword ptr [rbp+0x40] mov rbx, gword ptr [rbp+0x48] ; gcrRegs +[rbx]
- ;; size=114 bbWeight=1 PerfScore 26.58 -G_M27295_IG02: ; bbWeight=1, gcVars=0004000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V33 V50}
+ ;; size=110 bbWeight=1 PerfScore 25.58 +G_M27295_IG02: ; bbWeight=1, gcVars=0008000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V33}
xor r8d, r8d mov dword ptr [rbp-0x3C], r8d ;; size=7 bbWeight=1 PerfScore 1.25 @@ -173,185 +172,194 @@ G_M27295_IG04: ; bbWeight=1, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 mov gword ptr [rbp-0x118], rcx ; GC ptr vars +{V17} xor r10d, r10d
- mov edx, dword ptr [rcx+0x08] - mov dword ptr [rbp-0x104], edx - test edx, edx - jle G_M27295_IG10
+ mov eax, dword ptr [rcx+0x08] + mov dword ptr [rbp-0x104], eax + test eax, eax + jle G_M27295_IG11
;; size=30 bbWeight=1 PerfScore 5.75
-G_M27295_IG05: ; bbWeight=8, gcVars=0004000080000000 {V17 V33}, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V50}
+G_M27295_IG05: ; bbWeight=8, gcVars=0008000080000000 {V17 V33}, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
mov dword ptr [rbp-0x50], r10d
- mov eax, r10d - lea rax, [rax+2*rax]
+ mov edx, r10d + lea rdx, [rdx+2*rdx]
;; size=11 bbWeight=8 PerfScore 14.00 G_M27295_IG06: ; bbWeight=8, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx+8*rax+0x10]
+ vmovdqu xmm0, xmmword ptr [rcx+8*rdx+0x10]
vmovdqu xmmword ptr [rbp-0x68], xmm0
- mov r8, qword ptr [rcx+8*rax+0x20] - mov qword ptr [rbp-0x58], r8
+ mov r12, qword ptr [rcx+8*rdx+0x20] + mov qword ptr [rbp-0x58], r12
;; size=20 bbWeight=8 PerfScore 64.00
-G_M27295_IG07: ; bbWeight=8, isz, extend
+G_M27295_IG07: ; bbWeight=8, extend
lea rcx, [rbp-0x68] ; gcrRegs -[rcx] lea rdx, [rbp-0x70] call [System.Diagnostics.Tracing.EventParameterInfo:GetMetadataLength(byref):ubyte:this] ; gcr arg pop 0 test eax, eax
- je G_M27295_IG11 - mov r9d, dword ptr [rbp-0x40] - add r9d, dword ptr [rbp-0x70] - mov r10d, dword ptr [rbp-0x50] - inc r10d - mov eax, dword ptr [rbp-0x104] - cmp eax, r10d - mov rcx, gword ptr [rbp-0x118] - ; gcrRegs +[rcx] - jg SHORT G_M27295_IG09 - ;; size=55 bbWeight=8 PerfScore 102.00 -G_M27295_IG08: ; bbWeight=1, gcVars=0004000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rcx]
+ jne G_M27295_IG12 + ;; size=22 bbWeight=8 PerfScore 42.00 +G_M27295_IG08: ; bbWeight=1, gcVars=0008000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- xor r8d, r8d - mov edx, 6 - test r13d, r13d - cmovne r8d, edx - xor r10d, r10d - mov eax, dword ptr [rbp-0x44] - lea edx, [rax+0x05] - mov dword ptr [rbp-0x44], eax - test eax, eax - cmovne r10d, edx - mov dword ptr [rbp-0x40], r9d - add r10d, r9d - add r8d, r10d - mov dword ptr [rbp-0x4C], r8d - movsxd rdx, r8d - mov rcx, 0xD1FFAB1E ; ubyte[] - call CORINFO_HELP_NEWARR_1_VC - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov gword ptr [rbp-0x110], rax - ; GC ptr vars +{V08} - jmp G_M27295_IG16 - ;; size=77 bbWeight=1 PerfScore 11.25 -G_M27295_IG09: ; bbWeight=4, gcVars=0004000080000000 {V17 V33}, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax] +[rcx] - ; GC ptr vars -{V08} +{V17 V31} - mov dword ptr [rbp-0x40], r9d - jmp G_M27295_IG05 - ;; size=9 bbWeight=4 PerfScore 12.00 -G_M27295_IG10: ; bbWeight=0.50, gcVars=0004000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rcx] - ; GC ptr vars -{V17 V31} - mov r9d, dword ptr [rbp-0x40] - jmp SHORT G_M27295_IG08 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M27295_IG11: ; bbWeight=1, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-0x3C], 1
- mov r9d, dword ptr [rbp-0x48] - mov dword ptr [rbp-0x40], r9d
+ mov r8d, dword ptr [rbp-0x48] + mov dword ptr [rbp-0x40], r8d
mov dword ptr [rbp-0x44], 4
- mov r11, rbx - ; gcrRegs +[r11] - mov gword ptr [rbp-0x120], r11
+ mov r9, rbx + ; gcrRegs +[r9] + mov gword ptr [rbp-0x120], r9
; GC ptr vars +{V21} xor ecx, ecx
- ;; size=34 bbWeight=1 PerfScore 5.50 -G_M27295_IG12: ; bbWeight=8, gcVars=0004000100000000 {V21 V33}, gcrefRegs=8848 {rbx rsi r11 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov gword ptr [rbp+0x20], rsi + ; GC ptr vars +{V02} + ;; size=38 bbWeight=1 PerfScore 6.50 +G_M27295_IG09: ; bbWeight=8, gcVars=0008000900000000 {V02 V21 V33}, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rsi]
mov dword ptr [rbp-0x74], ecx mov edx, ecx lea rdx, [rdx+2*rdx]
- lea rdx, bword ptr [r11+8*rdx+0x10]
...

+11 (+0.32%) : 5241.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 51,108 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 51,108 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T33] ( 9, 30 ) ref -> rbx class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate> ; V02 loc1 [V02,T40] ( 5, 19 ) ref -> [rbp-0x48] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V03 loc2 [V03,T20] ( 13, 43 ) ref -> [rbp-0x50] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>> @@ -21,7 +21,7 @@ ; V10 loc9 [V10,T12] ( 9, 53 ) ref -> [rbp-0x70] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain> ; V11 loc10 [V11,T10] ( 4, 72 ) ubyte -> r14 ; V12 loc11 [V12,T22] ( 3, 40 ) int -> rdi
-; V13 loc12 [V13,T02] ( 5,132 ) int -> r15
+; V13 loc12 [V13,T03] ( 5,132 ) int -> r15
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V15 loc14 [V15,T53] ( 3, 10 ) int -> rbx ; V16 loc15 [V16,T23] ( 5, 33 ) int -> rsi @@ -33,7 +33,7 @@ ;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V23 tmp5 [V23,T43] ( 2, 16 ) ref -> rsi class-hnd exact "impAppendStmt" <System.Net.NetEventSource> ; V24 tmp6 [V24,T11] ( 8, 64 ) ref -> rdi class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> r12 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> r12 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T36] ( 3, 24 ) ref -> rbx class-hnd exact "dup spill" <System.Object[]> ; V27 tmp9 [V27,T37] ( 3, 24 ) ref -> rdi class-hnd exact "dup spill" <System.Object[]> ;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback> @@ -144,10 +144,10 @@ ;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement> ;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 6,320 ) ref -> r14 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> -; V137 tmp119 [V137,T03] ( 2,128 ) ref -> r13 class-hnd exact "dup spill" <System.String> -; V138 tmp120 [V138,T01] ( 6,132 ) ref -> r13 -; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> r13 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 6,384 ) ref -> r14 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> +; V137 tmp119 [V137,T04] ( 2,128 ) ref -> r13 class-hnd exact "dup spill" <System.String> +; V138 tmp120 [V138,T02] ( 6,148 ) ref -> r13 +; V139 tmp121 [V139,T01] ( 3,192 ) ref -> r13 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String> ;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource> @@ -235,7 +235,7 @@ ; V224 tmp206 [V224,T75] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V225 tmp207 [V225,T76] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V226 tmp208 [V226,T16] ( 3, 48 ) ref -> rax "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> rcx "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> rcx "argument with side effect"
; V228 tmp210 [V228,T32] ( 2, 32 ) ref -> rcx "argument with side effect" ; V229 tmp211 [V229,T17] ( 3, 48 ) ref -> rcx "argument with side effect" ; V230 tmp212 [V230,T103] ( 2, 4 ) long -> r8 "argument with side effect" @@ -247,7 +247,7 @@ ; V236 cse1 [V236,T114] ( 3, 3 ) ref -> rax "CSE - conservative" ; V237 cse2 [V237,T115] ( 3, 3 ) ref -> rax "CSE - conservative" ; V238 cse3 [V238,T116] ( 3, 3 ) ref -> rax "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> rsi multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> rsi multi-def "CSE - aggressive"
; V240 cse5 [V240,T117] ( 3, 3 ) ref -> rdi "CSE - conservative" ; V241 cse6 [V241,T81] ( 4, 4 ) ref -> rbx "CSE - conservative" ; V242 cse7 [V242,T79] ( 5, 5 ) ref -> rbx "CSE - conservative" @@ -276,14 +276,14 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00} ;; size=47 bbWeight=1 PerfScore 14.33
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] xor rax, rax ; gcrRegs +[rax] mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V02} ;; size=6 bbWeight=1 PerfScore 1.25
-G_M34773_IG03: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000000020 {V00 V02}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG03: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000000040 {V00 V02}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov gword ptr [rbp-0x50], rax ; GC ptr vars +{V03} @@ -408,7 +408,7 @@ G_M34773_IG08: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M34773_IG09: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000100020 {V00 V02 V03}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG09: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000100040 {V00 V02 V03}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx] ; GC ptr vars +{V02 V03 V20} cmp gword ptr [rbx+0x30], 0 @@ -449,7 +449,7 @@ G_M34773_IG10: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, mov gword ptr [rbp-0x60], rax ; GC ptr vars +{V05} ;; size=6 bbWeight=1 PerfScore 1.25
-G_M34773_IG11: ; bbWeight=1, gcVars=000000000000000000000000000000080000010000100020 {V00 V02 V03 V05}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG11: ; bbWeight=1, gcVars=000000000000000000000000000000080000010000100040 {V00 V02 V03 V05}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] ; GC ptr vars -{V20} call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -464,7 +464,7 @@ G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000000000000800000 test byte ptr [(reloc)], 1 ; global ptr jne SHORT G_M34773_IG13 ;; size=27 bbWeight=1 PerfScore 11.00
-G_M34773_IG12: ; bbWeight=0, gcVars=000000000000000000000000000000080000010000180020 {V00 V02 V03 V04 V05}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG12: ; bbWeight=0, gcVars=000000000000000000000000000000080000010000180040 {V00 V02 V03 V04 V05}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx] mov rcx, 0xD1FFAB1E mov edx, 56 @@ -624,7 +624,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 ;; size=9 bbWeight=1 PerfScore 3.25 G_M34773_IG18: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rax, qword ptr [rcx] @@ -639,7 +639,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[rcx rsi] ; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75 G_M34773_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi] @@ -663,7 +663,7 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ;; size=38 bbWeight=1 PerfScore 16.75 G_M34773_IG20: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rax, qword ptr [rcx] @@ -678,12 +678,12 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[rcx rsi] ; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75 G_M34773_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref ; gcrRegs +[rsi] cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rax, qword ptr [rcx] @@ -698,7 +698,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[rcx rsi] ; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75 G_M34773_IG22: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx rbx] @@ -736,7 +736,7 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, test rbx, rbx je G_M34773_IG27 ;; size=94 bbWeight=1 PerfScore 31.00
-G_M34773_IG23: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000010000000020 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG23: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000010000000040 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V03} mov rcx, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate cmp qword ptr [rbx], rcx @@ -808,7 +808,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rcx] ; gcrRegs +[rsi] cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, rsi ; gcrRegs +[rcx] mov rdx, rbx @@ -818,7 +818,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [System.Net.NetEventSource:AttemptingRestartUsingCert(System.Security.Cryptography.X509Certificates.X509Certificate,System.Net.Security.SslStream):this] ; gcrRegs -[rcx rdx rbx rsi r8] ; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=47 bbWeight=1 PerfScore 12.75 G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rcx, gword ptr [rbp+0x10] @@ -827,7 +827,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rax] mov rax, gword ptr [rax+0x10] test rax, rax
- je G_M34773_IG59
+ je G_M34773_IG60
mov rax, gword ptr [rax+0x08] mov rcx, rax mov rax, qword ptr [rax] @@ -837,7 +837,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jle G_M34773_IG59
+ jle G_M34773_IG60
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -858,7 +858,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, test ebx, ebx jne SHORT G_M34773_IG30 ;; size=100 bbWeight=1 PerfScore 35.25
-G_M34773_IG29: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000180020 {V00 V02 V03 V04}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG29: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000180040 {V00 V02 V03 V04}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx] mov rbx, rsi ; gcrRegs +[rbx] @@ -899,26 +899,26 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr G_M34773_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor ecx, ecx mov dword ptr [rbp-0x3C], ecx
- jmp G_M34773_IG58
+ jmp G_M34773_IG59
;; size=10 bbWeight=1 PerfScore 3.25 G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp gword ptr [rbp-0x58], 0
- je G_M34773_IG51
+ je G_M34773_IG52
mov rcx, gword ptr [rbp-0x58] ; gcrRegs +[rcx] mov ebx, dword ptr [rcx+0x08] test ebx, ebx
- je G_M34773_IG51
+ je G_M34773_IG52
xor rcx, rcx mov gword ptr [rbp-0x68], rcx ; GC ptr vars +{V09} ;; size=32 bbWeight=4 PerfScore 34.00
-G_M34773_IG33: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800180020 {V00 V02 V03 V04 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG33: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800180040 {V00 V02 V03 V04 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx] mov gword ptr [rbp-0x70], rcx ; GC ptr vars +{V10} ;; size=4 bbWeight=4 PerfScore 4.00
-G_M34773_IG34: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800181020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG34: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800181040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x38] @@ -937,7 +937,7 @@ G_M34773_IG34: ; bbWeight=4, gcVars=0000000000000000000000000000000000000 ; gcr arg pop 0 mov gword ptr [rbp-0x68], rax cmp gword ptr [rbp-0x68], 0
- je G_M34773_IG47
+ je G_M34773_IG48
mov rcx, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rcx] ; gcrRegs +[rsi] ...

+2 (+0.33%) : 5662.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)

@@ -35,7 +35,7 @@ ;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[System.Reflection.PortableExecutable.DebugDirectoryEntry]> ;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.Reflection.PortableExecutable.DebugDirectoryEntry]> ;* V26 tmp14 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.PortableExecutable.DebugDirectoryEntry[]>
-; V27 tmp15 [V27,T01] ( 4, 25 ) int -> rcx "Inline stloc first use temp"
+; V27 tmp15 [V27,T01] ( 4, 25 ) int -> rdx "Inline stloc first use temp"
; V28 tmp16 [V28,T04] ( 2, 9 ) ref -> rax single-def "field V08._array (fldOffset=0x0)" P-INDEP ; V29 tmp17 [V29,T00] ( 4, 25 ) int -> r8 "field V08._index (fldOffset=0x8)" P-INDEP ; V30 tmp18 [V30,T13] ( 3, 3 ) ref -> rax "field V09.array (fldOffset=0x0)" P-INDEP @@ -43,7 +43,7 @@ ; V32 tmp20 [V32,T15] ( 2, 2 ) ref -> rax single-def "field V25._array (fldOffset=0x0)" P-INDEP ;* V33 tmp21 [V33,T16] ( 0, 0 ) int -> zero-ref "field V25._index (fldOffset=0x8)" P-INDEP ; V34 PSPSym [V34,T17] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym"
-; V35 cse0 [V35,T03] ( 3, 10 ) int -> rdx "CSE - aggressive"
+; V35 cse0 [V35,T03] ( 3, 10 ) int -> rcx "CSE - aggressive"
; V36 cse1 [V36,T14] ( 3, 3 ) long -> rsi "CSE - aggressive" ; ; Lcl frame size = 104 @@ -83,7 +83,7 @@ G_M60940_IG03: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbp-0x50], rcx
- jmp G_M60940_IG12
+ jmp G_M60940_IG14
;; size=20 bbWeight=1 PerfScore 5.50 G_M60940_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax rcx] @@ -142,7 +142,7 @@ G_M60940_IG05: ; bbWeight=1, gcrefRegs=0109 {rax rbx r8}, byrefRegs=0000 mov gword ptr [rbp-0x50], rcx mov rax, gword ptr [rbp-0x48] ; gcrRegs +[rax]
- jmp SHORT G_M60940_IG12
+ jmp SHORT G_M60940_IG14
;; size=43 bbWeight=1 PerfScore 11.75 G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax rcx] @@ -153,35 +153,42 @@ G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov edx, dword ptr [rax+0x08] - xor ecx, ecx
+ mov ecx, dword ptr [rax+0x08] + xor edx, edx
xor r8d, r8d
- test edx, edx - jle SHORT G_M60940_IG11
+ test ecx, ecx + jle SHORT G_M60940_IG13
;; size=25 bbWeight=1 PerfScore 8.00 G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov ecx, ecx - lea rcx, [rcx+2*rcx] - vmovdqu xmm0, xmmword ptr [rax+8*rcx+0x10]
+ mov edx, edx + lea rdx, [rdx+2*rdx] + vmovdqu xmm0, xmmword ptr [rax+8*rdx+0x10]
vmovdqu xmmword ptr [rbp-0x40], xmm0
- mov r10, qword ptr [rax+8*rcx+0x20]
+ mov r10, qword ptr [rax+8*rdx+0x20]
mov qword ptr [rbp-0x30], r10 cmp dword ptr [rbp-0x38], 17
- je SHORT G_M60940_IG10 - lea ecx, [r8+0x01] - mov r8d, ecx - cmp edx, r8d - jg SHORT G_M60940_IG07 - ;; size=44 bbWeight=8 PerfScore 110.00
+ jne SHORT G_M60940_IG10 + ;; size=32 bbWeight=8 PerfScore 94.00
G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- jmp SHORT G_M60940_IG11
+ jmp SHORT G_M60940_IG12
;; size=2 bbWeight=1 PerfScore 2.00 G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz nop
- jmp SHORT G_M60940_IG11
+ jmp SHORT G_M60940_IG13
;; size=3 bbWeight=0 PerfScore 0.00
-G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG10: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rax] + lea edx, [r8+0x01] + mov r8d, edx + cmp ecx, r8d + jg SHORT G_M60940_IG07 + ;; size=12 bbWeight=8 PerfScore 16.00 +G_M60940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M60940_IG13 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M60940_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rdx, [rbp-0x40] mov rcx, gword ptr [rbp-0x48] ; gcrRegs +[rcx] @@ -190,9 +197,9 @@ G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov gword ptr [rbp-0x50], rax mov rax, gword ptr [rbp-0x48]
- jmp SHORT G_M60940_IG12
+ jmp SHORT G_M60940_IG14
;; size=24 bbWeight=1 PerfScore 8.50
-G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG13: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] ; GC ptr vars -{V05} mov rcx, gword ptr [rbp-0x48] @@ -201,36 +208,23 @@ G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=000 call [System.Reflection.PortableExecutable.PEReader:Dispose():this] ; gcrRegs -[rcx] ; gcr arg pop 0
- jmp SHORT G_M60940_IG16
+ jmp SHORT G_M60940_IG18
;; size=12 bbWeight=1 PerfScore 6.00
-G_M60940_IG12: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rax] ; GC ptr vars +{V04 V05} mov rcx, rsp
- call G_M60940_IG27
+ call G_M60940_IG29
; gcrRegs -[rax] ;; size=8 bbWeight=1 PerfScore 1.25
-G_M60940_IG13: ; bbWeight=1, nogc, extend
+G_M60940_IG15: ; bbWeight=1, nogc, extend
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05} mov rax, gword ptr [rbp-0x50] ; gcrRegs +[rax] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M60940_IG15: ; bbWeight=1, epilog, nogc, extend - add rsp, 104 - pop rbx - pop rsi - pop rdi - pop rbp - ret - ;; size=9 bbWeight=1 PerfScore 3.25 -G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax] - xor rax, rax - ; gcrRegs +[rax] - ;; size=2 bbWeight=1 PerfScore 0.25
G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend add rsp, 104 pop rbx @@ -239,7 +233,20 @@ G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=1 PerfScore 3.25
-G_M60940_IG18: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + xor rax, rax + ; gcrRegs +[rax] + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M60940_IG19: ; bbWeight=1, epilog, nogc, extend + add rsp, 104 + pop rbx + pop rsi + pop rdi + pop rbp + ret + ;; size=9 bbWeight=1 PerfScore 3.25 +G_M60940_IG20: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs -[rax] +[rdx] push rbp push rdi @@ -251,7 +258,7 @@ G_M60940_IG18: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr mov qword ptr [rsp+0x28], rbp lea rbp, [rbp+0x80] ;; size=27 bbWeight=0 PerfScore 0.00
-G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG21: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05} mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_ISINSTANCEOFCLASS @@ -260,12 +267,12 @@ G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- jne SHORT G_M60940_IG20
+ jne SHORT G_M60940_IG22
xor eax, eax ; gcrRegs -[rax]
- jmp SHORT G_M60940_IG23
+ jmp SHORT G_M60940_IG25
;; size=27 bbWeight=0 PerfScore 0.00
-G_M60940_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -273,7 +280,7 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- jne SHORT G_M60940_IG21
+ jne SHORT G_M60940_IG23
mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -284,17 +291,17 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr setne al ; gcrRegs -[rax] movzx rax, al
- jmp SHORT G_M60940_IG22
+ jmp SHORT G_M60940_IG24
;; size=52 bbWeight=0 PerfScore 0.00
-G_M60940_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M60940_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
test eax, eax setne al movzx rax, al ;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
add rsp, 56 pop rbx pop rsi @@ -302,7 +309,7 @@ G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=9 bbWeight=0 PerfScore 0.00
-G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push rdi push rsi @@ -313,10 +320,10 @@ G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x28], rbp lea rbp, [rbp+0x80] ;; size=27 bbWeight=0 PerfScore 0.00
-G_M60940_IG25: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG27: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rax, G_M60940_IG09 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M60940_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M60940_IG28: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 56 pop rbx pop rsi ...

+12 (+3.19%) : 23592.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T13] ( 5, 28 ) long -> rcx ; V02 loc1 [V02,T14] ( 5, 24 ) int -> rdi ; V03 loc2 [V03,T12] ( 5, 28.50) ref -> rbp class-hnd exact <System.String>
-; V04 loc3 [V04,T04] ( 8, 50 ) int -> r14
+; V04 loc3 [V04,T05] ( 8, 50 ) int -> r14
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax ; V06 loc5 [V06,T08] ( 3, 40 ) ref -> rdx class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> r15 @@ -33,9 +33,9 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T18] ( 4, 5 ) ref -> rdx "Single return block return value" ; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V25 cse0 [V25,T05] ( 6, 49 ) int -> rsi "CSE - aggressive"
+; V25 cse0 [V25,T03] ( 8, 57 ) int -> rsi "CSE - aggressive"
; V26 cse1 [V26,T07] ( 5, 40 ) int -> r12 "CSE - aggressive"
-; V27 cse2 [V27,T03] ( 10, 50 ) ref -> rdx multi-def "CSE - aggressive"
+; V27 cse2 [V27,T04] ( 10, 50 ) ref -> rdx multi-def "CSE - aggressive"
; ; Lcl frame size = 40 @@ -59,10 +59,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp esi, 1 jle G_M46295_IG16 ;; size=21 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor ecx, ecx xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test esi, esi + jle SHORT G_M46295_IG07 + ;; size=8 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edx, eax mov rdx, gword ptr [rbx+8*rdx+0x10] @@ -94,7 +96,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbp] xor r14d, r14d xor r15d, r15d
- ;; size=39 bbWeight=4 PerfScore 19.00
+ test esi, esi + jle G_M46295_IG15 + ;; size=47 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov ecx, r15d @@ -241,7 +245,7 @@ G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 376, prolog size 19, PerfScore 499.75, instruction count 111, allocated bytes for code 376 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 388, prolog size 19, PerfScore 509.75, instruction count 115, allocated bytes for code 388 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-42 (-3.72%) : 77123.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)

@@ -44,12 +44,12 @@ ;* V31 tmp11 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V32 tmp12 [V32 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V33 tmp13 [V33 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V34 tmp14 [V34,T21] ( 5, 2.58) int -> [rsp+0x54] "Inline return value spill temp"
+; V34 tmp14 [V34,T20] ( 5, 2.68) int -> [rsp+0x54] "Inline return value spill temp"
;* V35 tmp15 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V36 tmp16 [V36,T29] ( 3, 0.99) int -> r11 "Inlining Arg" ; V37 tmp17 [V37,T25] ( 5, 1.59) byref -> [rsp+0x28] "Inline stloc first use temp" ; V38 tmp18 [V38,T24] ( 4, 1.99) int -> [rsp+0x50] "Inline stloc first use temp"
-; V39 tmp19 [V39,T20] ( 7, 2.58) long -> [rsp+0x48] spill-single-def "Inline stloc first use temp"
+; V39 tmp19 [V39,T21] ( 7, 2.58) long -> [rsp+0x48] spill-single-def "Inline stloc first use temp"
; V40 tmp20 [V40,T18] ( 4, 3.18) int -> rax "Inline stloc first use temp" ; V41 tmp21 [V41,T22] ( 3, 2.38) long -> rcx "Inline stloc first use temp" ; V42 tmp22 [V42,T17] ( 4, 3.18) byref -> rax "Inline stloc first use temp" @@ -69,7 +69,7 @@ ;* V56 tmp36 [V56 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp37 [V57 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP ; V58 tmp38 [V58,T02] ( 11, 601.34) ref -> rdi single-def "V02.[000..008)"
-; V59 tmp39 [V59,T12] ( 7, 101.49) int -> [rsp+0x3C] "V02.[008..012)"
+; V59 tmp39 [V59,T12] ( 7, 101.58) int -> [rsp+0x3C] "V02.[008..012)"
; V60 tmp40 [V60,T01] ( 11,1199.59) int -> [rsp+0x38] "V02.[012..016)" ; V61 tmp41 [V61,T07] ( 5, 400.64) int -> r15 "V02.[016..020)" ; V62 tmp42 [V62,T26] ( 2, 1.20) int -> r13 "V06.[008..012)" @@ -113,11 +113,11 @@ G_M18874_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, G_M18874_IG03: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref mov ecx, dword ptr [rsp+0x11C] cmp ecx, r8d
- jge G_M18874_IG20
+ jge G_M18874_IG19
;; size=16 bbWeight=0.20 PerfScore 0.45 G_M18874_IG04: ; bbWeight=99.82, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref cmp ecx, r8d
- jae G_M18874_IG35
+ jae G_M18874_IG34
mov eax, ecx mov eax, dword ptr [r12+4*rax] xor edx, edx @@ -126,23 +126,23 @@ G_M18874_IG04: ; bbWeight=99.82, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 shr eax, 5 mov r10d, dword ptr [rdi+0x08] cmp eax, r10d
- jae G_M18874_IG35
+ jae G_M18874_IG34
mov r10d, eax mov eax, 1 shlx edx, eax, edx test dword ptr [rdi+4*r10+0x10], edx
- je G_M18874_IG18
+ je G_M18874_IG17
;; size=61 bbWeight=99.82 PerfScore 3768.33 G_M18874_IG05: ; bbWeight=399.29, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref inc r14d cmp r14d, r15d
- jl G_M18874_IG19 - jmp G_M18874_IG20
+ jl G_M18874_IG18 + jmp G_M18874_IG19
;; size=17 bbWeight=399.29 PerfScore 1397.53 G_M18874_IG06: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz ; byrRegs -[r12] cmp r14d, r13d
- jae G_M18874_IG35
+ jae G_M18874_IG34
mov rdx, bword ptr [rsp+0x180] ; byrRegs +[rdx] mov ecx, r14d @@ -157,13 +157,13 @@ G_M18874_IG06: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 jle SHORT G_M18874_IG08 ;; size=45 bbWeight=0.20 PerfScore 1.89 G_M18874_IG07: ; bbWeight=0.10, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov dword ptr [rsp+0x3C], r10d
jmp SHORT G_M18874_IG09
- ;; size=2 bbWeight=0.10 PerfScore 0.20 -G_M18874_IG08: ; bbWeight=0.10, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ;; size=7 bbWeight=0.10 PerfScore 0.30 +G_M18874_IG08: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x3C], r10d mov r11d, r10d
- mov r10d, dword ptr [rsp+0x3C] - ;; size=13 bbWeight=0.10 PerfScore 0.22
+ ;; size=8 bbWeight=0.20 PerfScore 0.25
G_M18874_IG09: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref lea rdx, bword ptr [rdi+0x10] ; byrRegs +[rdx] @@ -171,13 +171,13 @@ G_M18874_IG09: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 mov r8, qword ptr [rdi] mov qword ptr [rsp+0x48], r8 test dword ptr [r8], 0xD1FFAB1E
- je G_M18874_IG36
+ je G_M18874_IG35
;; size=27 bbWeight=0.20 PerfScore 1.54 G_M18874_IG10: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref, isz cmp dword ptr [r8+0x04], 24 jbe SHORT G_M18874_IG12 test dword ptr [r8], 0xD1FFAB1E
- je G_M18874_IG37
+ je G_M18874_IG36
;; size=20 bbWeight=0.20 PerfScore 1.59 G_M18874_IG11: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref mov ecx, dword ptr [r8+0x04] @@ -195,13 +195,13 @@ G_M18874_IG12: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C mov eax, ecx neg eax test ecx, ecx
- jg G_M18874_IG34
+ jg G_M18874_IG33
mov ecx, eax or ecx, r11d
- jl G_M18874_IG34
+ jl G_M18874_IG33
lea ecx, [rax+r11] cmp ecx, dword ptr [rdi+0x08]
- ja G_M18874_IG34
+ ja G_M18874_IG33
movzx rcx, word ptr [r8] imul rax, rcx add rax, rdx @@ -212,22 +212,20 @@ G_M18874_IG12: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C mov qword ptr [rsp+0x40], rdx test dword ptr [r8], 0xD1FFAB1E je SHORT G_M18874_IG13
- mov dword ptr [rsp+0x3C], r10d
shr rdx, 3 mov rcx, rax ; byrRegs +[rcx] call [<unknown method>] ; byrRegs -[rax rcx] ; gcr arg pop 0
- jmp SHORT G_M18874_IG16 - ;; size=88 bbWeight=0.79 PerfScore 20.66
+ jmp SHORT G_M18874_IG15 + ;; size=83 bbWeight=0.79 PerfScore 19.87
G_M18874_IG13: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0009 {rax rbx}, byref, isz ; byrRegs +[rax] test rdx, rdx
- je SHORT G_M18874_IG14
+ je SHORT G_M18874_IG15
cmp rdx, 768
- ja SHORT G_M18874_IG15 - mov dword ptr [rsp+0x3C], r10d
+ ja SHORT G_M18874_IG14
xor edx, edx mov r8d, dword ptr [rsp+0x40] mov rcx, rax @@ -235,33 +233,28 @@ G_M18874_IG13: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0009 call CORINFO_HELP_MEMSET ; byrRegs -[rax rcx] ; gcr arg pop 0
- jmp SHORT G_M18874_IG16 - ;; size=36 bbWeight=0.79 PerfScore 6.36 -G_M18874_IG14: ; bbWeight=0.40, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz - mov dword ptr [rsp+0x3C], r10d - jmp SHORT G_M18874_IG16 - ;; size=7 bbWeight=0.40 PerfScore 1.19 -G_M18874_IG15: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0009 {rax rbx}, byref
+ jmp SHORT G_M18874_IG15 + ;; size=31 bbWeight=0.79 PerfScore 5.56 +G_M18874_IG14: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0009 {rax rbx}, byref
; byrRegs +[rax]
- mov dword ptr [rsp+0x3C], r10d
mov rcx, rax ; byrRegs +[rcx] mov rdx, qword ptr [rsp+0x40] call [<unknown method>] ; byrRegs -[rax rcx] ; gcr arg pop 0
- ;; size=19 bbWeight=0.79 PerfScore 4.17 -G_M18874_IG16: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=14 bbWeight=0.79 PerfScore 3.38 +G_M18874_IG15: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
xor ecx, ecx xor eax, eax test rsi, rsi
- je SHORT G_M18874_IG17
+ je SHORT G_M18874_IG16
mov r12d, dword ptr [rsp+0x194] cmp r12d, dword ptr [rbx+0x08] mov dword ptr [rsp+0x194], r12d
- jne G_M18874_IG27
+ jne G_M18874_IG26
;; size=35 bbWeight=0.20 PerfScore 1.54
-G_M18874_IG17: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M18874_IG16: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov rcx, bword ptr [rbx] ; byrRegs +[rcx] mov r8d, dword ptr [rbx+0x08] @@ -274,24 +267,24 @@ G_M18874_IG17: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 mov ebp, dword ptr [rsp+0x3C] jmp G_M18874_IG03 ;; size=39 bbWeight=0.20 PerfScore 1.94
-G_M18874_IG18: ; bbWeight=399.29, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
+G_M18874_IG17: ; bbWeight=399.29, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
; byrRegs -[rcx] lea rax, bword ptr [rdi+4*r10+0x10] ; byrRegs +[rax] or dword ptr [rax], edx ;; size=7 bbWeight=399.29 PerfScore 1597.17
-G_M18874_IG19: ; bbWeight=99.82, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
+G_M18874_IG18: ; bbWeight=99.82, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
; byrRegs -[rax] inc ecx cmp ecx, r8d jl G_M18874_IG04 ;; size=11 bbWeight=99.82 PerfScore 149.74
-G_M18874_IG20: ; bbWeight=0.19, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M18874_IG19: ; bbWeight=0.19, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
; byrRegs -[r12] cmp r14d, r15d
- jge G_M18874_IG26
+ jge G_M18874_IG25
;; size=9 bbWeight=0.19 PerfScore 0.23
-G_M18874_IG21: ; bbWeight=0.17, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+G_M18874_IG20: ; bbWeight=0.17, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov dword ptr [rsp+0x170], ebp vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, r14d @@ -302,19 +295,19 @@ G_M18874_IG21: ; bbWeight=0.17, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 vmovsd xmm1, qword ptr [reloc @RWD00] vucomisd xmm1, xmm0 mov ebp, dword ptr [rsp+0x170]
- jae SHORT G_M18874_IG24
+ jae SHORT G_M18874_IG23
;; size=58 bbWeight=0.17 PerfScore 5.57
-G_M18874_IG22: ; bbWeight=0.15, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M18874_IG21: ; bbWeight=0.15, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov r15d, r14d mov dword ptr [rsp+0x194], r12d ;; size=11 bbWeight=0.15 PerfScore 0.19
-G_M18874_IG23: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M18874_IG22: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov r14d, dword ptr [rsp+0x154] inc r14d cmp r14d, dword ptr [rsp+0x174] jl G_M18874_IG06 ;; size=25 bbWeight=0.20 PerfScore 0.84
-G_M18874_IG24: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M18874_IG23: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] ; byrRegs -[rbx] mov rcx, 0xD1FFAB1E ; const ptr @@ -328,7 +321,7 @@ G_M18874_IG24: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcr arg pop 0 mov eax, ebp ;; size=27 bbWeight=0.01 PerfScore 0.07
-G_M18874_IG25: ; bbWeight=0.01, epilog, nogc, extend
+G_M18874_IG24: ; bbWeight=0.01, epilog, nogc, extend
add rsp, 440 pop rbx pop rsi ...

-13 (-3.26%) : 10806.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)

@@ -23,7 +23,7 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]> ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ; V12 tmp6 [V12,T05] ( 2,399.96) long -> rdx "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> r14 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> r14 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> r15 class-hnd "Inlining Arg" <System.__Canon> @@ -39,9 +39,9 @@ ; V26 tmp20 [V26,T03] ( 2,400 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon> ;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP ;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> r15 "V04.[000..008)" -; V30 tmp24 [V30,T14] ( 4,101.01) int -> r13 "V04.[008..012)" -; V31 tmp25 [V31,T07] ( 6,301.01) int -> registers "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> r15 "V04.[000..008)" +; V30 tmp24 [V30,T14] ( 3,101.01) int -> r13 "V04.[008..012)" +; V31 tmp25 [V31,T06] ( 6,301.01) int -> registers "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> r8 "V04.[024..032)" ; V33 tmp27 [V33,T11] ( 3,199.99) long -> rdx "V04.[032..040)" ;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)" @@ -85,15 +85,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ;; size=27 bbWeight=1 PerfScore 3.25 G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz test r14d, r14d
- je SHORT G_M19783_IG08
+ je SHORT G_M19783_IG06
;; size=5 bbWeight=0.01 PerfScore 0.01 G_M19783_IG04: ; bbWeight=8.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19783_IG08
+ jmp SHORT G_M19783_IG06
;; size=2 bbWeight=8.02 PerfScore 16.03 G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r15] cmp ebp, ecx
- jae G_M19783_IG14
+ jae G_M19783_IG13
mov ecx, ebp mov rcx, gword ptr [rbx+8*rcx+0x10] ; gcrRegs +[rcx] @@ -109,9 +109,12 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 ;; size=35 bbWeight=0.01 PerfScore 0.14 G_M19783_IG06: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
+ mov r14d, 1 + cmp r13d, dword ptr [r15+0x44] + jne G_M19783_IG18
mov eax, dword ptr [r15+0x38]
- jmp SHORT G_M19783_IG10 - ;; size=6 bbWeight=100 PerfScore 400.00
+ jmp SHORT G_M19783_IG09 + ;; size=22 bbWeight=100 PerfScore 825.00
G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r8] shl rdx, 2 @@ -125,21 +128,16 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byr ; gcrRegs -[rcx r8] ; gcr arg pop 0 test eax, eax
- je SHORT G_M19783_IG15 - ;; size=32 bbWeight=99.99 PerfScore 874.91 -G_M19783_IG08: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz - mov r14d, 1 - cmp r13d, dword ptr [r15+0x44] - jne G_M19783_IG19
+ je SHORT G_M19783_IG14
jmp SHORT G_M19783_IG06
- ;; size=18 bbWeight=100 PerfScore 625.00 -G_M19783_IG09: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=99.99 PerfScore 1074.89 +G_M19783_IG08: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r15+0x10] ; gcrRegs +[rcx] lea edx, [r12+0x01] mov r10d, edx cmp r12d, dword ptr [rcx+0x08]
- jae SHORT G_M19783_IG14
+ jae SHORT G_M19783_IG13
mov edx, r12d lea rdx, [rdx+2*rdx] lea rcx, bword ptr [rcx+8*rdx+0x10] @@ -147,40 +145,40 @@ G_M19783_IG09: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg ; byrRegs +[rcx] cmp dword ptr [rcx+0x14], -1 mov r12d, r10d
- jge SHORT G_M19783_IG11
+ jge SHORT G_M19783_IG10
;; size=39 bbWeight=100 PerfScore 1275.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG09: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx] cmp r12d, eax
- jae SHORT G_M19783_IG16 - jmp SHORT G_M19783_IG09
+ jae SHORT G_M19783_IG15 + jmp SHORT G_M19783_IG08
;; size=7 bbWeight=100 PerfScore 325.00
-G_M19783_IG11: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0002 {rcx}, byref
+G_M19783_IG10: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0002 {rcx}, byref
; byrRegs +[rcx] mov rdx, qword ptr [rcx+0x08] mov r8, gword ptr [rcx] ; gcrRegs +[r8] mov r10d, 1 ;; size=13 bbWeight=100 PerfScore 425.00
-G_M19783_IG12: ; bbWeight=100, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG11: ; bbWeight=100, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx] test r10d, r10d jne SHORT G_M19783_IG07 ;; size=5 bbWeight=100 PerfScore 125.00
-G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG12: ; bbWeight=0.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8 r15] inc ebp mov ecx, dword ptr [rbx+0x08] cmp ecx, ebp
- jle SHORT G_M19783_IG17
+ jle SHORT G_M19783_IG16
jmp G_M19783_IG05 ;; size=14 bbWeight=0.01 PerfScore 0.06
-G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi rdi] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M19783_IG15: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi rdi r15] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] @@ -189,20 +187,17 @@ G_M19783_IG15: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs= call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- mov r14d, 1 - cmp r13d, dword ptr [r15+0x44] - je G_M19783_IG06 - jmp SHORT G_M19783_IG19 - ;; size=44 bbWeight=0 PerfScore 0.00 -G_M19783_IG16: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ jmp G_M19783_IG06 + ;; size=31 bbWeight=0 PerfScore 0.00 +G_M19783_IG15: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
lea r12d, [rax+0x01] xor r8, r8 ; gcrRegs +[r8] xor edx, edx xor r10d, r10d
- jmp SHORT G_M19783_IG12
+ jmp SHORT G_M19783_IG11
;; size=14 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+G_M19783_IG16: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r8 r15] mov rax, gword ptr [rsi+0x08] ; gcrRegs +[rax] @@ -215,7 +210,7 @@ G_M19783_IG17: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=15 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG17: ; bbWeight=0, epilog, nogc, extend
add rsp, 328 pop rbx pop rsi @@ -227,14 +222,14 @@ G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 399, prolog size 91, PerfScore 4084.65, instruction count 98, allocated bytes for code 399 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 386, prolog size 91, PerfScore 4084.63, instruction count 95, allocated bytes for code 386 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================ Unwind Info:

-29 (-1.83%) : 15987.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)

@@ -24,8 +24,8 @@ ;* V13 loc10 [V13 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]> ;* V14 loc11 [V14 ] ( 0, 0 ) int -> zero-ref ptr ; V15 loc12 [V15,T04] ( 15, 43 ) int -> [rsp+0xAC] ptr
-; V16 loc13 [V16,T11] ( 8, 18 ) int -> [rsp+0xA8] spill-single-def ptr -; V17 loc14 [V17,T18] ( 4, 12 ) int -> [rsp+0xA4] spill-single-def ptr
+; V16 loc13 [V16,T11] ( 7, 18 ) int -> [rsp+0xA8] spill-single-def ptr +; V17 loc14 [V17,T17] ( 4, 12 ) int -> [rsp+0xA4] spill-single-def ptr
; V18 loc15 [V18,T03] ( 6, 60 ) long -> rbx ; V19 loc16 [V19,T10] ( 3, 22 ) int -> r13 ; V20 loc17 [V20,T02] ( 13,114 ) long -> [rsp+0x98] ptr @@ -39,7 +39,7 @@ ; V28 tmp5 [V28,T33] ( 3, 6 ) int -> rax "Span.get_Item index" ; V29 tmp6 [V29,T65] ( 2, 2 ) int -> rax "Span.get_Item index" ; V30 tmp7 [V30,T59] ( 5, 3 ) int -> rax
-; V31 tmp8 [V31,T26] ( 3, 8 ) int -> rax
+; V31 tmp8 [V31,T25] ( 3, 8 ) int -> rax
; V32 tmp9 [V32,T16] ( 5, 12 ) int -> r11 ;* V33 tmp10 [V33 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]> ;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]> @@ -65,8 +65,8 @@ ;* V54 tmp31 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp32 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V56 tmp33 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V57 tmp34 [V57,T19] ( 3, 12 ) int -> r12 "Inlining Arg" -; V58 tmp35 [V58,T27] ( 2, 8 ) byref -> rbx "Inlining Arg"
+; V57 tmp34 [V57,T18] ( 3, 12 ) int -> r12 "Inlining Arg" +; V58 tmp35 [V58,T26] ( 2, 8 ) byref -> rbx "Inlining Arg"
;* V59 tmp36 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp37 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V61 tmp38 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -78,8 +78,8 @@ ;* V67 tmp44 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V68 tmp45 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V69 tmp46 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V70 tmp47 [V70,T17] ( 5, 12 ) int -> r12 "Inlining Arg" -; V71 tmp48 [V71,T25] ( 3, 8 ) byref -> rbp "Inlining Arg"
+; V70 tmp47 [V70,T19] ( 3, 12 ) int -> r12 "Inlining Arg" +; V71 tmp48 [V71,T27] ( 2, 8 ) byref -> rbp "Inlining Arg"
;* V72 tmp49 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V73 tmp50 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V74 tmp51 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -93,7 +93,7 @@ ; V82 tmp59 [V82,T48] ( 2, 4 ) long -> rcx "Inlining Arg" ; V83 tmp60 [V83,T49] ( 2, 4 ) long -> rax "Inlining Arg" ; V84 tmp61 [V84,T14] ( 7, 15 ) byref -> rsi single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V85 tmp62 [V85,T09] ( 15, 28 ) int -> rdi "field V04._length (fldOffset=0x8)" P-INDEP
+; V85 tmp62 [V85,T09] ( 14, 28 ) int -> rdi "field V04._length (fldOffset=0x8)" P-INDEP
; V86 tmp63 [V86,T13] ( 6, 7 ) byref -> [rsp+0x58] spill-single-def ptr "field V06._reference (fldOffset=0x0)" P-INDEP ; V87 tmp64 [V87,T08] ( 15, 21.50) int -> r14 "field V06._length (fldOffset=0x8)" P-INDEP ; V88 tmp65 [V88,T20] ( 7, 8 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP @@ -138,7 +138,7 @@ ; V127 tmp104 [V127,T41] ( 4, 4 ) byref -> [rsp+0x50] spill-single-def ptr "shadowVar" ; V128 tmp105 [V128,T60] ( 3, 3 ) byref -> rdx single-def "shadowVar" ; V129 tmp106 [V129,T61] ( 3, 3 ) byref -> r8 single-def "shadowVar"
-; V130 cse0 [V130,T32] ( 4, 6 ) byref -> rbp "CSE - conservative"
+; V130 cse0 [V130,T32] ( 3, 6 ) byref -> rbp "CSE - conservative"
; V131 cse1 [V131,T12] ( 4, 16 ) int -> [rsp+0x6C] spill-single-def "CSE - moderate" ; V132 cse2 [V132,T28] ( 6, 7.50) int -> registers multi-def "CSE - moderate" ; V133 cse3 [V133,T05] ( 3, 40 ) long -> [rsp+0x60] spill-single-def "CSE - aggressive" @@ -257,7 +257,7 @@ G_M55503_IG03: ; bbWeight=1, isz, extend ; gcr arg pop 0 lea eax, [r14-0x01] cmp eax, r14d
- jae G_M55503_IG41
+ jae G_M55503_IG42
mov r12d, dword ptr [rbp+4*rax] cmp r14d, 1 jg SHORT G_M55503_IG05 @@ -308,7 +308,7 @@ G_M55503_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rs G_M55503_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref mov r8d, edi cmp edi, r14d
- jl G_M55503_IG37
+ jl G_M55503_IG38
;; size=12 bbWeight=1 PerfScore 1.50 G_M55503_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref, isz mov ecx, r8d @@ -330,7 +330,7 @@ G_M55503_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r lea edx, [r8-0x01] mov dword ptr [rsp+0x6C], edx cmp edx, edi
- jae G_M55503_IG41
+ jae G_M55503_IG42
mov r11d, edx mov r11d, dword ptr [rsi+4*r11] mov ebx, eax @@ -346,7 +346,7 @@ G_M55503_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r G_M55503_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref lea r11d, [r8-0x02] cmp r11d, edi
- jae G_M55503_IG41
+ jae G_M55503_IG42
lea r11d, [r8-0x02] mov r11d, dword ptr [rsi+4*r11] ;; size=21 bbWeight=2 PerfScore 8.50 @@ -365,7 +365,7 @@ G_M55503_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r G_M55503_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref lea r13d, [r8-0x03] cmp r13d, edi
- jae G_M55503_IG41
+ jae G_M55503_IG42
mov dword ptr [rsp+0xAC], r8d lea r13d, [r8-0x03] mov r13d, dword ptr [rsi+4*r13] @@ -413,7 +413,7 @@ G_M55503_IG23: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, G_M55503_IG24: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref mov eax, 0xD1FFAB1E cmp rdx, rax
- ja G_M55503_IG42
+ ja G_M55503_IG43
;; size=14 bbWeight=8 PerfScore 12.00 G_M55503_IG25: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz ; byrRegs -[rbp] @@ -439,7 +439,7 @@ G_M55503_IG26: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15} G_M55503_IG27: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref mov qword ptr [rsp+0x98], rdx test rdx, rdx
- je G_M55503_IG32
+ je G_M55503_IG33
;; size=17 bbWeight=8 PerfScore 18.00 G_M55503_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref cmp ecx, edi @@ -452,9 +452,9 @@ G_M55503_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, mov r12d, edi sub r12d, ecx mov dword ptr [rsp+0xAC], r8d
- js G_M55503_IG43
+ js G_M55503_IG44
;; size=37 bbWeight=2 PerfScore 9.50
-G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref
+G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref, isz
mov bword ptr [rsp+0x80], rbx mov dword ptr [rsp+0x88], r12d mov rbx, bword ptr [rsp+0x58] @@ -467,16 +467,25 @@ G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp r ; gcr arg pop 0 mov r13d, dword ptr [rsp+0xA4] cmp eax, r13d
- je G_M55503_IG40
+ je G_M55503_IG41
inc r13d cmp eax, r13d
- jne G_M55503_IG44
+ je SHORT G_M55503_IG30 + mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=109 bbWeight=2 PerfScore 34.50 +G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref
mov r13d, dword ptr [rsp+0xA8] mov r12d, edi sub r12d, r13d js G_M55503_IG45
- ;; size=107 bbWeight=2 PerfScore 32.50 -G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref
+ ;; size=20 bbWeight=2 PerfScore 5.00 +G_M55503_IG31: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref
mov bword ptr [rsp+0x80], rbp mov dword ptr [rsp+0x88], r12d mov bword ptr [rsp+0x70], rbx @@ -492,32 +501,32 @@ G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp r mov qword ptr [rsp+0x98], rbp jne G_M55503_IG46 ;; size=73 bbWeight=2 PerfScore 23.00
-G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
+G_M55503_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
; byrRegs -[rbx] mov ecx, r13d mov r8d, dword ptr [rsp+0xAC] mov r9d, dword ptr [rsp+0xB4] ;; size=19 bbWeight=1 PerfScore 2.25
-G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
+G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
mov r13d, dword ptr [rsp+0x90] cmp ecx, r13d
- jae SHORT G_M55503_IG34
+ jae SHORT G_M55503_IG35
;; size=13 bbWeight=4 PerfScore 9.00
-G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
+G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
mov eax, ecx mov rdx, qword ptr [rsp+0x98] mov dword ptr [r15+4*rax], edx ;; size=14 bbWeight=2 PerfScore 4.50
-G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
+G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
cmp r8d, edi
- jae SHORT G_M55503_IG36
+ jae SHORT G_M55503_IG37
;; size=5 bbWeight=4 PerfScore 5.00
-G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
+G_M55503_IG36: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
mov r8d, r8d xor eax, eax mov dword ptr [rsi+4*r8], eax ;; size=9 bbWeight=2 PerfScore 3.00
-G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
+G_M55503_IG37: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
mov ebp, dword ptr [rsp+0x6C] mov r8d, ebp cmp r8d, r14d @@ -528,7 +537,7 @@ G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, mov r12d, dword ptr [rsp+0xBC] jge G_M55503_IG11 ;; size=45 bbWeight=4 PerfScore 26.00
-G_M55503_IG37: ; bbWeight=1, gcVars=00000000000000000000020000000000 {V127}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M55503_IG38: ; bbWeight=1, gcVars=00000000000000000000020000000000 {V127}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
; byrRegs -[rbp rsi] ; GC ptr vars -{V86} mov eax, dword ptr [r15+0x0C] @@ -547,17 +556,17 @@ G_M55503_IG37: ; bbWeight=1, gcVars=00000000000000000000020000000000 {V12 ; byrRegs +[rax] mov rcx, 0xD1FFAB1E cmp qword ptr [rsp+0xC0], rcx
- je SHORT G_M55503_IG38
+ je SHORT G_M55503_IG39
; GC ptr vars -{V127} call CORINFO_HELP_FAIL_FAST ; byrRegs -[rax rbx r15] ; gcr arg pop 0 ;; size=69 bbWeight=1 PerfScore 17.00
-G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+G_M55503_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
; byrRegs +[rax] nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M55503_IG39: ; bbWeight=1, epilog, nogc, extend
+G_M55503_IG40: ; bbWeight=1, epilog, nogc, extend
add rsp, 200 pop rbx pop rbp @@ -569,21 +578,21 @@ G_M55503_IG39: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=20 bbWeight=1 PerfScore 5.25
-G_M55503_IG40: ; bbWeight=1, gcVars=00000000000000000000020000002000 {V86 V127}, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi r15}, gcvars, byref
+G_M55503_IG41: ; bbWeight=1, gcVars=00000000000000000000020000002000 {V86 V127}, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi r15}, gcvars, byref
; byrRegs -[rax] +[rbx rsi r15] ; GC ptr vars +{V41 V86 V127} mov ecx, dword ptr [rsp+0xA8] mov r8d, dword ptr [rsp+0xAC] mov r9d, dword ptr [rsp+0xB4]
- jmp G_M55503_IG32
+ jmp G_M55503_IG33
;; size=28 bbWeight=1 PerfScore 5.00 ...

+39 (+6.32%) : 99822.dasm - System.Collections.Generic.GenericArraySortHelper1[int]:IntroSort(System.Span1[int],int) (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T10] ( 8, 7.91) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.39) int -> rbp
+; V02 loc0 [V02,T07] ( 16, 15.37) int -> rbp
; V03 loc1 [V03,T17] ( 3, 3.93) int -> r14 ; V04 loc2 [V04,T24] ( 9, 0.50) byref -> rdi single-def ; V05 loc3 [V05,T25] ( 9, 0.50) byref -> rbp single-def @@ -123,26 +123,30 @@ G_M38662_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rsi] mov edi, dword ptr [rcx+0x08] test edi, edi
- je G_M38662_IG28
+ je G_M38662_IG29
test ebx, ebx
- jl G_M38662_IG29
+ jl G_M38662_IG30
;; size=22 bbWeight=1 PerfScore 6.50 G_M38662_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref ; byrRegs -[rcx] mov ebp, edi cmp edi, 1
- jle G_M38662_IG20
+ jle G_M38662_IG21
;; size=11 bbWeight=1 PerfScore 1.50 G_M38662_IG04: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz cmp ebp, 16
- jle SHORT G_M38662_IG08
+ jle SHORT G_M38662_IG09
;; size=5 bbWeight=1.96 PerfScore 2.45 G_M38662_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref test ebx, ebx
- je G_M38662_IG32
+ je G_M38662_IG34
dec ebx cmp ebp, edi
- ja G_M38662_IG33
+ ja G_M38662_IG35 + test ebp, ebp + jl G_M38662_IG31 + ;; size=26 bbWeight=0.98 PerfScore 3.91 +G_M38662_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
mov ecx, ebp mov bword ptr [rsp+0x28], rsi mov dword ptr [rsp+0x30], ecx @@ -157,13 +161,13 @@ G_M38662_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, add rdx, rax mov eax, edi cmp rdx, rax
- ja G_M38662_IG33
+ ja G_M38662_IG35
lea r15, bword ptr [rsi+4*rcx] ; byrRegs +[r15] test ebp, ebp
- jl G_M38662_IG30 - ;; size=79 bbWeight=0.98 PerfScore 13.20 -G_M38662_IG06: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
+ jl G_M38662_IG32 + ;; size=61 bbWeight=0.98 PerfScore 10.51 +G_M38662_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
mov bword ptr [rsp+0x28], r15 mov dword ptr [rsp+0x30], ebp lea rcx, [rsp+0x28] @@ -175,39 +179,39 @@ G_M38662_IG06: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r1 cmp ebp, 1 jg SHORT G_M38662_IG04 ;; size=30 bbWeight=1.98 PerfScore 14.34
-G_M38662_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38662_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
- jmp G_M38662_IG20
+ jmp G_M38662_IG21
;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M38662_IG08: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG09: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi] cmp ebp, 2
- je SHORT G_M38662_IG18
+ je SHORT G_M38662_IG19
;; size=5 bbWeight=0.98 PerfScore 1.22
-G_M38662_IG09: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG10: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, 3
- je G_M38662_IG21
+ je G_M38662_IG22
;; size=9 bbWeight=0.96 PerfScore 1.20
-G_M38662_IG10: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG11: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, edi
- ja G_M38662_IG33
+ ja G_M38662_IG35
test ebp, ebp
- jl G_M38662_IG31
+ jl G_M38662_IG33
;; size=16 bbWeight=0.87 PerfScore 2.18
-G_M38662_IG11: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG12: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
mov ecx, ebp xor edx, edx dec ecx test ecx, ecx
- jle SHORT G_M38662_IG20
+ jle SHORT G_M38662_IG21
;; size=10 bbWeight=0.87 PerfScore 1.74
-G_M38662_IG12: ; bbWeight=8.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG13: ; bbWeight=8.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
lea eax, [rdx+0x01] movsxd r8, eax mov r8d, dword ptr [rsi+4*r8]
- jmp SHORT G_M38662_IG14
+ jmp SHORT G_M38662_IG15
;; size=12 bbWeight=8.93 PerfScore 42.40
-G_M38662_IG13: ; bbWeight=25.63, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG14: ; bbWeight=25.63, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
lea r9d, [rdx+0x01] movsxd r9, r9d lea r9, bword ptr [rsi+4*r9] @@ -215,39 +219,39 @@ G_M38662_IG13: ; bbWeight=25.63, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, mov dword ptr [r9], r10d dec edx ;; size=16 bbWeight=25.63 PerfScore 64.08
-G_M38662_IG14: ; bbWeight=34.56, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG15: ; bbWeight=34.56, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs -[r9] test edx, edx
- jl SHORT G_M38662_IG16
+ jl SHORT G_M38662_IG17
;; size=4 bbWeight=34.56 PerfScore 43.20
-G_M38662_IG15: ; bbWeight=32.70, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG16: ; bbWeight=32.70, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
movsxd r10, edx mov r10d, dword ptr [rsi+4*r10] cmp r10d, r8d
- jg SHORT G_M38662_IG13
+ jg SHORT G_M38662_IG14
;; size=12 bbWeight=32.70 PerfScore 114.46
-G_M38662_IG16: ; bbWeight=8.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG17: ; bbWeight=8.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
inc edx movsxd rdx, edx mov dword ptr [rsi+4*rdx], r8d mov edx, eax cmp edx, ecx
- jl SHORT G_M38662_IG12
+ jl SHORT G_M38662_IG13
;; size=15 bbWeight=8.93 PerfScore 26.78
-G_M38662_IG17: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M38662_IG18: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi]
- jmp SHORT G_M38662_IG20
+ jmp SHORT G_M38662_IG21
;; size=2 bbWeight=0.87 PerfScore 1.74
-G_M38662_IG18: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG19: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi] lea rbp, bword ptr [rsi+0x04] ; byrRegs +[rbp] cmp dword ptr [rsi], esi mov ecx, dword ptr [rsi] cmp ecx, dword ptr [rbp]
- jle SHORT G_M38662_IG20
+ jle SHORT G_M38662_IG21
;; size=13 bbWeight=0.02 PerfScore 0.21
-G_M38662_IG19: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rsi}, byref
+G_M38662_IG20: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rsi}, byref
xor ecx, ecx cmp rsi, rbp setne cl @@ -258,7 +262,7 @@ G_M38662_IG19: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rs mov dword ptr [rsi], eax mov dword ptr [rbp], ecx ;; size=24 bbWeight=0.01 PerfScore 0.10
-G_M38662_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M38662_IG21: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp rsi] add rsp, 56 pop rbx @@ -269,10 +273,10 @@ G_M38662_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop r15 ret ;; size=13 bbWeight=0.02 PerfScore 0.09
-G_M38662_IG21: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M38662_IG22: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; byrRegs +[rsi] cmp edi, 2
- jbe SHORT G_M38662_IG27
+ jbe SHORT G_M38662_IG28
lea rdi, bword ptr [rsi+0x08] ; byrRegs +[rdi] lea rbp, bword ptr [rsi+0x04] @@ -280,9 +284,9 @@ G_M38662_IG21: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=000 cmp dword ptr [rsi], esi mov ecx, dword ptr [rsi] cmp ecx, dword ptr [rbp]
- jle SHORT G_M38662_IG23
+ jle SHORT G_M38662_IG24
;; size=22 bbWeight=0.09 PerfScore 0.97
-G_M38662_IG22: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
+G_M38662_IG23: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
xor ecx, ecx cmp rsi, rbp setne cl @@ -293,12 +297,12 @@ G_M38662_IG22: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rs mov dword ptr [rsi], eax mov dword ptr [rbp], ecx ;; size=24 bbWeight=0.04 PerfScore 0.41
-G_M38662_IG23: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref, isz
+G_M38662_IG24: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref, isz
mov ecx, dword ptr [rsi] cmp ecx, dword ptr [rdi]
- jle SHORT G_M38662_IG25
+ jle SHORT G_M38662_IG26
;; size=6 bbWeight=0.09 PerfScore 0.52
-G_M38662_IG24: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
+G_M38662_IG25: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
xor ecx, ecx cmp rsi, rdi setne cl @@ -309,13 +313,13 @@ G_M38662_IG24: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rs mov dword ptr [rsi], eax mov dword ptr [rdi], ecx ;; size=22 bbWeight=0.04 PerfScore 0.41
-G_M38662_IG25: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M38662_IG26: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
; byrRegs -[rsi] mov ecx, dword ptr [rbp] cmp ecx, dword ptr [rdi]
- jle SHORT G_M38662_IG20
+ jle SHORT G_M38662_IG21
;; size=7 bbWeight=0.09 PerfScore 0.52
-G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M38662_IG27: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx cmp rbp, rdi setne cl @@ -325,14 +329,14 @@ G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd mov edx, dword ptr [rdi] mov dword ptr [rbp], edx mov dword ptr [rdi], ecx
- jmp SHORT G_M38662_IG20
+ jmp SHORT G_M38662_IG21
;; size=26 bbWeight=0.04 PerfScore 0.49
-G_M38662_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38662_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp rdi] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M38662_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
...

+41 (+6.39%) : 20726.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)

@@ -91,27 +91,27 @@ G_M30796_IG01: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=0000 mov rsi, bword ptr [rbp+0x108] ; byrRegs +[rsi] ;; size=107 bbWeight=100 PerfScore 2200.00
-G_M30796_IG02: ; bbWeight=100, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG02: ; bbWeight=100, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov ecx, dword ptr [rsi+0x08] mov r8d, ecx cmp r8d, dword ptr [rdx+0x08]
- jae SHORT G_M30796_IG08
+ jae G_M30796_IG19
movzx rdx, byte ptr [rdx+r8+0x10] ; gcrRegs -[rdx] test dl, 1
- jne SHORT G_M30796_IG07 - ;; size=27 bbWeight=100 PerfScore 1150.00 -G_M30796_IG03: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jne G_M30796_IG18 + ;; size=35 bbWeight=100 PerfScore 1150.00 +G_M30796_IG03: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
test dl, 2
- jne G_M30796_IG23
+ jne G_M30796_IG15
mov r9, bword ptr [rdi] ; byrRegs +[r9] mov eax, dword ptr [rdi+0x08] cmp dword ptr [rbp+0x90], eax
- jae SHORT G_M30796_IG14 - ;; size=23 bbWeight=99.99 PerfScore 824.92
+ jae G_M30796_IG22 + ;; size=27 bbWeight=99.99 PerfScore 824.92
G_M30796_IG04: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=02C0 {rsi rdi r9}, byref, isz mov rax, gword ptr [rbx+0x50] ; gcrRegs +[rax] @@ -122,105 +122,132 @@ G_M30796_IG04: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=02C0 {r ; gcrRegs +[r10] mov r11d, dword ptr [r10+0x08] cmp r11d, r9d
- ja SHORT G_M30796_IG12
+ ja G_M30796_IG21
mov r10, gword ptr [rax+0x10] cmp byte ptr [r10], r10b cmp gword ptr [r10+0x08], 0
- je SHORT G_M30796_IG11 - ;; size=43 bbWeight=399.96 PerfScore 7699.23 -G_M30796_IG05: ; bbWeight=3199.68, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ je SHORT G_M30796_IG08 + ;; size=47 bbWeight=399.96 PerfScore 7699.23 +G_M30796_IG05: ; bbWeight=3199.68, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
; gcrRegs -[rax] mov eax, dword ptr [r10+0x18] bt r9d, eax
- jae SHORT G_M30796_IG09 - ;; size=10 bbWeight=3199.68 PerfScore 11198.88 -G_M30796_IG06: ; bbWeight=1599.84, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jae G_M30796_IG20 + ;; size=14 bbWeight=3199.68 PerfScore 11198.88 +G_M30796_IG06: ; bbWeight=1599.84, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
mov rax, gword ptr [r10+0x08]
- ; gcrRegs +[rax] - jmp SHORT G_M30796_IG10 - ;; size=6 bbWeight=1599.84 PerfScore 6399.36 -G_M30796_IG07: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - ; gcrRegs -[rax r10] - mov r9d, dword ptr [rbp+0x90] - mov dword ptr [rbp+0x80], r9d - jmp SHORT G_M30796_IG03 - ;; size=16 bbWeight=0.01 PerfScore 0.04 -G_M30796_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rsi rdi] - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M30796_IG09: ; bbWeight=1599.84, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref - ; gcrRegs +[rbx r10] - ; byrRegs +[rsi rdi] - mov rax, gword ptr [r10+0x10]
; gcrRegs +[rax] ;; size=4 bbWeight=1599.84 PerfScore 3199.68
-G_M30796_IG10: ; bbWeight=3199.68, gcrefRegs=0009 {rax rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG07: ; bbWeight=3199.68, gcrefRegs=0009 {rax rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[r10] mov r10, rax ; gcrRegs +[r10] cmp gword ptr [r10+0x08], 0 jne SHORT G_M30796_IG05 ;; size=10 bbWeight=3199.68 PerfScore 13598.64
-G_M30796_IG11: ; bbWeight=399.96, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG08: ; bbWeight=399.96, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
; gcrRegs -[rax] mov eax, dword ptr [r10+0x18]
- jmp SHORT G_M30796_IG13 - ;; size=6 bbWeight=399.96 PerfScore 1599.84 -G_M30796_IG12: ; bbWeight=399.96, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref - mov eax, r9d - mov eax, dword ptr [r10+4*rax+0x10] - ;; size=8 bbWeight=399.96 PerfScore 899.91 -G_M30796_IG13: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ;; size=4 bbWeight=399.96 PerfScore 799.92 +G_M30796_IG09: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[r10]
- jmp SHORT G_M30796_IG15 - ;; size=2 bbWeight=399.96 PerfScore 799.92 -G_M30796_IG14: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref - mov eax, -1 - ;; size=5 bbWeight=399.96 PerfScore 99.99 -G_M30796_IG15: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test dl, 4
- je SHORT G_M30796_IG17
+ je SHORT G_M30796_IG11
;; size=5 bbWeight=99.99 PerfScore 124.99
-G_M30796_IG16: ; bbWeight=99.89, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG10: ; bbWeight=99.89, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov edx, dword ptr [rbp+0x90] mov dword ptr [rbp+0x8C], edx mov dword ptr [rbp+0x88], ecx mov edx, dword ptr [rbp+0x80] mov dword ptr [rbp+0x84], edx test r14d, r14d
- je G_M30796_IG24 - ;; size=39 bbWeight=99.89 PerfScore 624.32 -G_M30796_IG17: ; bbWeight=99.41, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ je SHORT G_M30796_IG16 + ;; size=35 bbWeight=99.89 PerfScore 624.32 +G_M30796_IG11: ; bbWeight=99.41, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
cmp dword ptr [rbp+0x90], r15d
- jge G_M30796_IG25
+ jge SHORT G_M30796_IG17
mov edx, dword ptr [rbx+0xA4] shlx r9d, ecx, edx or r9d, eax mov rdx, gword ptr [rbx+0x20] ; gcrRegs +[rdx] cmp r9d, dword ptr [rdx+0x08]
- jae SHORT G_M30796_IG08
+ jae SHORT G_M30796_IG19
mov r10d, r9d mov edx, dword ptr [rdx+4*r10+0x10] ; gcrRegs -[rdx] test edx, edx
- jle SHORT G_M30796_IG20
+ jle G_M30796_IG23
;; size=49 bbWeight=99.41 PerfScore 1516.01
-G_M30796_IG18: ; bbWeight=397.64, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG12: ; bbWeight=397.64, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov dword ptr [rsi+0x08], edx ;; size=3 bbWeight=397.64 PerfScore 397.64
-G_M30796_IG19: ; bbWeight=1590.57, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG13: ; bbWeight=1590.57, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov r13d, 1
- jmp SHORT G_M30796_IG22 - ;; size=8 bbWeight=1590.57 PerfScore 3578.78 -G_M30796_IG20: ; bbWeight=3181.14, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ;; size=6 bbWeight=1590.57 PerfScore 397.64 +G_M30796_IG14: ; bbWeight=99.41, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + xor rax, rax + ; gcrRegs +[rax] + mov gword ptr [rbp-0x38], rax + test r13d, r13d + je SHORT G_M30796_IG17 + mov eax, dword ptr [rbp+0x90] + ; gcrRegs -[rax] + inc eax + mov dword ptr [rbp+0x90], eax + jmp G_M30796_IG02 + ;; size=30 bbWeight=99.41 PerfScore 671.02 +G_M30796_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rsi rdi] + mov dword ptr [rbp+0x74], 1 + jmp G_M30796_IG25 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M30796_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp+0x74], 1 + jmp G_M30796_IG25 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M30796_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + xor eax, eax + mov dword ptr [rbp+0x74], eax + jmp G_M30796_IG25 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M30796_IG18: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs +[rbx] + ; byrRegs +[rsi rdi] + mov r9d, dword ptr [rbp+0x90] + mov dword ptr [rbp+0x80], r9d + jmp G_M30796_IG03 + ;; size=19 bbWeight=0.01 PerfScore 0.04 +G_M30796_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rsi rdi] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M30796_IG20: ; bbWeight=1599.84, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs +[rbx r10] + ; byrRegs +[rsi rdi] + mov rax, gword ptr [r10+0x10] + ; gcrRegs +[rax] + jmp G_M30796_IG07 + ;; size=9 bbWeight=1599.84 PerfScore 6399.36 +G_M30796_IG21: ; bbWeight=399.96, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs -[rax] + mov eax, r9d + mov eax, dword ptr [r10+4*rax+0x10] + jmp G_M30796_IG09 + ;; size=13 bbWeight=399.96 PerfScore 1699.83 +G_M30796_IG22: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs -[r10] + mov eax, -1 + jmp G_M30796_IG09 + ;; size=10 bbWeight=399.96 PerfScore 899.91 +G_M30796_IG23: ; bbWeight=3181.14, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov rdx, gword ptr [rbx+0x10] ; gcrRegs +[rdx] cmp ecx, dword ptr [rdx+0x08]
- jae G_M30796_IG08
+ jae SHORT G_M30796_IG19
mov rdx, gword ptr [rdx+8*r8+0x10] mov dword ptr [rsp+0x20], 1 lea rcx, [rbp-0x38] @@ -232,54 +259,31 @@ G_M30796_IG20: ; bbWeight=3181.14, gcrefRegs=0008 {rbx}, byrefRegs=00C0 { ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- je SHORT G_M30796_IG21
+ je SHORT G_M30796_IG24
mov rax, gword ptr [rbp-0x38] ; gcrRegs +[rax] mov eax, dword ptr [rax+0x14] ; gcrRegs -[rax] mov dword ptr [rsi+0x08], eax
- jmp SHORT G_M30796_IG19 - ;; size=63 bbWeight=3181.14 PerfScore 67599.23 -G_M30796_IG21: ; bbWeight=397.64, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ jmp G_M30796_IG13 + ;; size=62 bbWeight=3181.14 PerfScore 67599.23 +G_M30796_IG24: ; bbWeight=397.64, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
xor r13d, r13d
- ;; size=3 bbWeight=397.64 PerfScore 99.41 -G_M30796_IG22: ; bbWeight=99.41, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - xor rax, rax - ; gcrRegs +[rax] - mov gword ptr [rbp-0x38], rax - test r13d, r13d - je SHORT G_M30796_IG25 - mov eax, dword ptr [rbp+0x90]
...

+43 (+6.95%) : 39739.dasm - System.Collections.Generic.GenericArraySortHelper1[int]:IntroSort(System.Span1[int],int) (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T10] ( 8, 7.92) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.40) int -> rbp
+; V02 loc0 [V02,T07] ( 16, 15.38) int -> rbp
; V03 loc1 [V03,T17] ( 3, 3.94) int -> r14 ; V04 loc2 [V04,T24] ( 9, 0.50) byref -> rdi single-def ; V05 loc3 [V05,T25] ( 9, 0.50) byref -> rbp single-def @@ -123,26 +123,32 @@ G_M38662_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rsi] mov edi, dword ptr [rcx+0x08] test edi, edi
- je G_M38662_IG30
+ je G_M38662_IG32
test ebx, ebx
- jl G_M38662_IG31
+ jl G_M38662_IG33
;; size=22 bbWeight=1 PerfScore 6.50 G_M38662_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref ; byrRegs -[rcx] mov ebp, edi cmp edi, 1
- jle G_M38662_IG22
+ jle G_M38662_IG24
;; size=11 bbWeight=1 PerfScore 1.50
-G_M38662_IG04: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG04: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, 16
- jle SHORT G_M38662_IG09 - ;; size=5 bbWeight=1.96 PerfScore 2.45
+ jle G_M38662_IG11 + ;; size=9 bbWeight=1.96 PerfScore 2.45
G_M38662_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref test ebx, ebx
- je G_M38662_IG34
+ je G_M38662_IG37
dec ebx cmp ebp, edi
- ja G_M38662_IG35
+ ja G_M38662_IG38 + ;; size=18 bbWeight=0.98 PerfScore 2.69 +G_M38662_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref + test ebp, ebp + jl G_M38662_IG34 + ;; size=8 bbWeight=0.98 PerfScore 1.22 +G_M38662_IG07: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
mov ecx, ebp mov bword ptr [rsp+0x28], rsi mov dword ptr [rsp+0x30], ecx @@ -157,16 +163,16 @@ G_M38662_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, add rdx, rax mov eax, edi cmp rdx, rax
- ja G_M38662_IG35 - ;; size=67 bbWeight=0.98 PerfScore 11.51 -G_M38662_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ ja G_M38662_IG38 + ;; size=49 bbWeight=0.98 PerfScore 8.82 +G_M38662_IG08: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
mov ecx, ecx lea r15, bword ptr [rsi+4*rcx] ; byrRegs +[r15] test ebp, ebp
- jl G_M38662_IG32
+ jl G_M38662_IG35
;; size=14 bbWeight=0.98 PerfScore 1.96
-G_M38662_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
+G_M38662_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
mov bword ptr [rsp+0x28], r15 mov dword ptr [rsp+0x30], ebp lea rcx, [rsp+0x28] @@ -178,41 +184,41 @@ G_M38662_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r1 cmp ebp, 1 jg SHORT G_M38662_IG04 ;; size=30 bbWeight=1.98 PerfScore 14.35
-G_M38662_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38662_IG10: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
- jmp G_M38662_IG22
+ jmp G_M38662_IG24
;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M38662_IG09: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG11: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi] cmp ebp, 2
- je SHORT G_M38662_IG20
+ je SHORT G_M38662_IG22
;; size=5 bbWeight=0.98 PerfScore 1.22
-G_M38662_IG10: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG12: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, 3
- je G_M38662_IG23
+ je G_M38662_IG25
;; size=9 bbWeight=0.96 PerfScore 1.20
-G_M38662_IG11: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG13: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, edi
- ja G_M38662_IG35
+ ja G_M38662_IG38
;; size=8 bbWeight=0.87 PerfScore 1.09
-G_M38662_IG12: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG14: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
test ebp, ebp
- jl G_M38662_IG33
+ jl G_M38662_IG36
;; size=8 bbWeight=0.87 PerfScore 1.09
-G_M38662_IG13: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG15: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
mov ecx, ebp xor edx, edx dec ecx test ecx, ecx
- jle SHORT G_M38662_IG22
+ jle SHORT G_M38662_IG24
;; size=10 bbWeight=0.87 PerfScore 1.74
-G_M38662_IG14: ; bbWeight=9.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG16: ; bbWeight=9.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
lea eax, [rdx+0x01] movsxd r8, eax mov r8d, dword ptr [rsi+4*r8]
- jmp SHORT G_M38662_IG16
+ jmp SHORT G_M38662_IG18
;; size=12 bbWeight=9.12 PerfScore 43.31
-G_M38662_IG15: ; bbWeight=26.00, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG17: ; bbWeight=26.00, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
lea r9d, [rdx+0x01] movsxd r9, r9d lea r9, bword ptr [rsi+4*r9] @@ -220,39 +226,39 @@ G_M38662_IG15: ; bbWeight=26.00, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, mov dword ptr [r9], r10d dec edx ;; size=16 bbWeight=26.00 PerfScore 65.01
-G_M38662_IG16: ; bbWeight=35.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG18: ; bbWeight=35.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs -[r9] test edx, edx
- jl SHORT G_M38662_IG18
+ jl SHORT G_M38662_IG20
;; size=4 bbWeight=35.12 PerfScore 43.90
-G_M38662_IG17: ; bbWeight=33.16, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG19: ; bbWeight=33.16, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
movsxd r10, edx mov r10d, dword ptr [rsi+4*r10] cmp r10d, r8d
- jg SHORT G_M38662_IG15
+ jg SHORT G_M38662_IG17
;; size=12 bbWeight=33.16 PerfScore 116.06
-G_M38662_IG18: ; bbWeight=9.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG20: ; bbWeight=9.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
inc edx movsxd rdx, edx mov dword ptr [rsi+4*rdx], r8d mov edx, eax cmp edx, ecx
- jl SHORT G_M38662_IG14
+ jl SHORT G_M38662_IG16
;; size=15 bbWeight=9.12 PerfScore 27.35
-G_M38662_IG19: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M38662_IG21: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi]
- jmp SHORT G_M38662_IG22
+ jmp SHORT G_M38662_IG24
;; size=2 bbWeight=0.87 PerfScore 1.74
-G_M38662_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG22: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi] lea rbp, bword ptr [rsi+0x04] ; byrRegs +[rbp] cmp dword ptr [rsi], esi mov ecx, dword ptr [rsi] cmp ecx, dword ptr [rbp]
- jle SHORT G_M38662_IG22
+ jle SHORT G_M38662_IG24
;; size=13 bbWeight=0.02 PerfScore 0.21
-G_M38662_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rsi}, byref
+G_M38662_IG23: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rsi}, byref
xor ecx, ecx cmp rsi, rbp setne cl @@ -263,7 +269,7 @@ G_M38662_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rs mov dword ptr [rsi], eax mov dword ptr [rbp], ecx ;; size=24 bbWeight=0.01 PerfScore 0.11
-G_M38662_IG22: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M38662_IG24: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp rsi] add rsp, 56 pop rbx @@ -274,10 +280,10 @@ G_M38662_IG22: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop r15 ret ;; size=13 bbWeight=0.02 PerfScore 0.09
-G_M38662_IG23: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M38662_IG25: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; byrRegs +[rsi] cmp edi, 2
- jbe SHORT G_M38662_IG29
+ jbe SHORT G_M38662_IG31
lea rdi, bword ptr [rsi+0x08] ; byrRegs +[rdi] lea rbp, bword ptr [rsi+0x04] @@ -285,9 +291,9 @@ G_M38662_IG23: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=000 cmp dword ptr [rsi], esi mov ecx, dword ptr [rsi] cmp ecx, dword ptr [rbp]
- jle SHORT G_M38662_IG25
+ jle SHORT G_M38662_IG27
;; size=22 bbWeight=0.09 PerfScore 0.98
-G_M38662_IG24: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
+G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
xor ecx, ecx cmp rsi, rbp setne cl @@ -298,12 +304,12 @@ G_M38662_IG24: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rs mov dword ptr [rsi], eax mov dword ptr [rbp], ecx ;; size=24 bbWeight=0.04 PerfScore 0.42
-G_M38662_IG25: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref, isz
+G_M38662_IG27: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref, isz
mov ecx, dword ptr [rsi] cmp ecx, dword ptr [rdi]
- jle SHORT G_M38662_IG27
+ jle SHORT G_M38662_IG29
;; size=6 bbWeight=0.09 PerfScore 0.52
-G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
+G_M38662_IG28: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
xor ecx, ecx cmp rsi, rdi setne cl @@ -314,13 +320,13 @@ G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rs mov dword ptr [rsi], eax mov dword ptr [rdi], ecx ;; size=22 bbWeight=0.04 PerfScore 0.42
-G_M38662_IG27: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M38662_IG29: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
; byrRegs -[rsi] mov ecx, dword ptr [rbp] cmp ecx, dword ptr [rdi]
- jle SHORT G_M38662_IG22
+ jle SHORT G_M38662_IG24
;; size=7 bbWeight=0.09 PerfScore 0.52
-G_M38662_IG28: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M38662_IG30: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx cmp rbp, rdi setne cl @@ -330,14 +336,14 @@ G_M38662_IG28: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd mov edx, dword ptr [rdi] mov dword ptr [rbp], edx ...

benchmarks.run_tiered.windows.x64.checked.mch

-15 (-2.12%) : 12507.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)

@@ -91,28 +91,40 @@ G_M30796_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd ; gcrRegs +[rcx] mov edx, dword ptr [rsi+0x08] cmp edx, dword ptr [rcx+0x08]
- jae G_M30796_IG13
+ jae SHORT G_M30796_IG06
movzx r13, byte ptr [rcx+rdx+0x10] test r13b, 1 je SHORT G_M30796_IG04
- ;; size=28 bbWeight=8 PerfScore 90.00
+ ;; size=24 bbWeight=8 PerfScore 90.00
G_M30796_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref ; gcrRegs -[rcx] mov ecx, dword ptr [rbp+0x90] mov dword ptr [rbp+0x80], ecx ;; size=12 bbWeight=2 PerfScore 4.00
-G_M30796_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 2
- jne G_M30796_IG18 - ;; size=10 bbWeight=8 PerfScore 10.00 -G_M30796_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ je SHORT G_M30796_IG07 + ;; size=6 bbWeight=8 PerfScore 10.00 +G_M30796_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rsi rdi] + mov eax, 1 + jmp G_M30796_IG22 + ;; size=10 bbWeight=0.50 PerfScore 1.12 +G_M30796_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M30796_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs +[rbx] + ; byrRegs +[rsi rdi]
mov rcx, bword ptr [rdi] ; byrRegs +[rcx] mov edx, dword ptr [rdi+0x08] cmp dword ptr [rbp+0x90], edx
- jae G_M30796_IG15 - ;; size=18 bbWeight=4 PerfScore 28.00 -G_M30796_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref
+ jae SHORT G_M30796_IG11 + ;; size=14 bbWeight=4 PerfScore 28.00 +G_M30796_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref, isz
mov rdx, gword ptr [rbx+0x50] ; gcrRegs +[rdx] mov eax, dword ptr [rbp+0x90] @@ -122,7 +134,7 @@ G_M30796_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rs mov ecx, dword ptr [r12+0x08] ; byrRegs -[rcx] cmp ecx, eax
- ja G_M30796_IG14
+ ja SHORT G_M30796_IG09
mov rcx, gword ptr [rdx+0x10] ; gcrRegs +[rcx] mov edx, eax @@ -132,12 +144,25 @@ G_M30796_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rs ; gcrRegs -[rcx r12] ; gcr arg pop 0 mov r8d, eax
- ;; size=48 bbWeight=2 PerfScore 37.50 -G_M30796_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jmp SHORT G_M30796_IG10 + ;; size=46 bbWeight=2 PerfScore 41.50 +G_M30796_IG09: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs +[r12] + mov r8d, eax + mov r8d, dword ptr [r12+4*r8+0x10] + ;; size=8 bbWeight=2 PerfScore 4.50 +G_M30796_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs -[r12] + jmp SHORT G_M30796_IG12 + ;; size=2 bbWeight=2 PerfScore 4.00 +G_M30796_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref + mov r8d, -1 + ;; size=6 bbWeight=2 PerfScore 0.50 +G_M30796_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 4
- je SHORT G_M30796_IG09
+ je SHORT G_M30796_IG14
;; size=6 bbWeight=4 PerfScore 5.00
-G_M30796_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov edx, dword ptr [rbp+0x90] mov dword ptr [rbp+0x8C], edx mov edx, dword ptr [rsi+0x08] @@ -145,11 +170,11 @@ G_M30796_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd mov edx, dword ptr [rbp+0x80] mov dword ptr [rbp+0x84], edx test r15d, r15d
- je G_M30796_IG19
+ je G_M30796_IG20
;; size=42 bbWeight=2 PerfScore 16.50
-G_M30796_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG14: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
cmp dword ptr [rbp+0x90], r14d
- jge G_M30796_IG20
+ jge G_M30796_IG21
mov edx, dword ptr [rsi+0x08] mov ecx, dword ptr [rbx+0xA4] shlx r9d, edx, ecx @@ -157,54 +182,25 @@ G_M30796_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] cmp r9d, dword ptr [rcx+0x08]
- jae SHORT G_M30796_IG13
+ jae G_M30796_IG06
mov eax, r9d mov ecx, dword ptr [rcx+4*rax+0x10] ; gcrRegs -[rcx] test ecx, ecx
- jle SHORT G_M30796_IG16 - ;; size=51 bbWeight=4 PerfScore 69.00 -G_M30796_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ jle SHORT G_M30796_IG17 + ;; size=55 bbWeight=4 PerfScore 69.00 +G_M30796_IG15: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov dword ptr [rsi+0x08], ecx ;; size=3 bbWeight=2 PerfScore 2.00
-G_M30796_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG16: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov r13d, 1
- ;; size=6 bbWeight=8 PerfScore 2.00 -G_M30796_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref - xor rax, rax - ; gcrRegs +[rax] - mov gword ptr [rbp-0x40], rax - test r13d, r13d - je G_M30796_IG20 - mov eax, dword ptr [rbp+0x90] - ; gcrRegs -[rax] - inc eax - mov dword ptr [rbp+0x90], eax - jmp G_M30796_IG02 - ;; size=34 bbWeight=4 PerfScore 27.00 -G_M30796_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rsi rdi] - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M30796_IG14: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref - ; gcrRegs +[rbx r12] - ; byrRegs +[rsi rdi] - mov r8d, eax - mov r8d, dword ptr [r12+4*r8+0x10] - jmp G_M30796_IG07 - ;; size=13 bbWeight=2 PerfScore 8.50 -G_M30796_IG15: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref - ; gcrRegs -[r12] - mov r8d, -1 - jmp G_M30796_IG07 - ;; size=11 bbWeight=2 PerfScore 4.50 -G_M30796_IG16: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jmp SHORT G_M30796_IG19 + ;; size=8 bbWeight=8 PerfScore 18.00 +G_M30796_IG17: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] cmp edx, dword ptr [rcx+0x08]
- jae SHORT G_M30796_IG13
+ jae G_M30796_IG06
mov edx, edx mov rdx, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[rdx] @@ -218,32 +214,39 @@ G_M30796_IG16: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi r ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- je SHORT G_M30796_IG17
+ je SHORT G_M30796_IG18
mov rax, gword ptr [rbp-0x40] ; gcrRegs +[rax] mov eax, dword ptr [rax+0x14] ; gcrRegs -[rax] mov dword ptr [rsi+0x08], eax
- jmp SHORT G_M30796_IG11 - ;; size=58 bbWeight=16 PerfScore 340.00 -G_M30796_IG17: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jmp SHORT G_M30796_IG16 + ;; size=62 bbWeight=16 PerfScore 340.00 +G_M30796_IG18: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
xor r13d, r13d
- jmp SHORT G_M30796_IG12 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M30796_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=2 PerfScore 0.50 +G_M30796_IG19: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + xor rax, rax + ; gcrRegs +[rax] + mov gword ptr [rbp-0x40], rax + test r13d, r13d + je SHORT G_M30796_IG21 + mov eax, dword ptr [rbp+0x90] + ; gcrRegs -[rax] + inc eax + mov dword ptr [rbp+0x90], eax + jmp G_M30796_IG02 + ;; size=30 bbWeight=4 PerfScore 27.00 +G_M30796_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] ; byrRegs -[rsi rdi] mov eax, 1
- jmp SHORT G_M30796_IG21
+ jmp SHORT G_M30796_IG22
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M30796_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov eax, 1 - jmp SHORT G_M30796_IG21 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M30796_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30796_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M30796_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30796_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbp+0x90] mov rdx, bword ptr [rbp+0x100] ; byrRegs +[rdx] @@ -269,7 +272,7 @@ G_M30796_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs +[rdx] mov dword ptr [rdx], ecx ;; size=75 bbWeight=1 PerfScore 15.00
-G_M30796_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M30796_IG23: ; bbWeight=1, epilog, nogc, extend
add rsp, 280 pop rbx pop rsi @@ -281,7 +284,7 @@ G_M30796_IG22: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=20 bbWeight=1 PerfScore 5.25
-G_M30796_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M30796_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; byrRegs -[rdx] push rbp push r15 @@ -296,7 +299,7 @@ G_M30796_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x30], rbp lea rbp, [rbp+0x80] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M30796_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30796_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, dword ptr [rbp+0x90] mov rdx, bword ptr [rbp+0x100] ; byrRegs +[rdx] @@ -315,7 +318,7 @@ G_M30796_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ...

+0 (0.00%) : 11205.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)

@@ -76,12 +76,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ; gcr arg pop 0 test eax, eax
- je SHORT G_M44603_IG12
+ jne SHORT G_M44603_IG10
;; size=10 bbWeight=2 PerfScore 8.50
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M44603_IG10 - ;; size=2 bbWeight=4 PerfScore 8.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx] + jmp SHORT G_M44603_IG12 + ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx]
mov ecx, ecx mov rax, 0xD1FFAB1E ; static handle test byte ptr [rcx+rax], 128 @@ -107,7 +109,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=8 bbWeight=0.50 PerfScore 1.38
-Total bytes of code 100, prolog size 10, PerfScore 56.00, instruction count 39, allocated bytes for code 100 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 100, prolog size 10, PerfScore 49.00, instruction count 39, allocated bytes for code 100 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 33044.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)

@@ -201,7 +201,7 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 mov r12, rax ; gcrRegs +[r12] test rdi, rdi
- je G_M41722_IG45
+ je G_M41722_IG46
lea rcx, bword ptr [r12+0x08] ; byrRegs +[rcx] mov rdx, rdi @@ -210,11 +210,11 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ; gcrRegs -[rax rdx rdi] ; byrRegs -[rcx] cmp dword ptr [rsi+0x08], 0
- jle G_M41722_IG40
+ jle G_M41722_IG41
;; size=61 bbWeight=1 PerfScore 9.50 G_M41722_IG03: ; bbWeight=4, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz cmp r15d, dword ptr [rsi+0x08]
- jae G_M41722_IG42
+ jae G_M41722_IG43
mov ecx, r15d movzx rcx, word ptr [rsi+2*rcx+0x0C] cmp ecx, 256 @@ -224,25 +224,25 @@ G_M41722_IG04: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ; gcr arg pop 0 test eax, eax
- je G_M41722_IG12
+ je G_M41722_IG13
jmp SHORT G_M41722_IG06 ;; size=16 bbWeight=2 PerfScore 12.50 G_M41722_IG05: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref mov ecx, ecx mov rax, 0xD1FFAB1E ; static handle test byte ptr [rcx+rax], 128
- je G_M41722_IG12
+ je G_M41722_IG13
;; size=22 bbWeight=2 PerfScore 9.00 G_M41722_IG06: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref mov r13d, 1 inc r15d
- jmp G_M41722_IG39
+ jmp G_M41722_IG40
;; size=14 bbWeight=2 PerfScore 5.00 G_M41722_IG07: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz mov rcx, gword ptr [r12+0x08] ; gcrRegs +[rcx] test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov eax, dword ptr [r12+0x10] cmp dword ptr [rcx+0x08], eax jbe SHORT G_M41722_IG08 @@ -256,46 +256,48 @@ G_M41722_IG08: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 G_M41722_IG09: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz movzx rcx, cx cmp ecx, 256
- jb SHORT G_M41722_IG10
+ jb SHORT G_M41722_IG11
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ; gcr arg pop 0 test eax, eax
- je SHORT G_M41722_IG14 - jmp SHORT G_M41722_IG11 - ;; size=23 bbWeight=8 PerfScore 62.00 -G_M41722_IG10: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M41722_IG12 + ;; size=21 bbWeight=8 PerfScore 46.00 +G_M41722_IG10: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M41722_IG15 + ;; size=2 bbWeight=2 PerfScore 4.00 +G_M41722_IG11: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, ecx mov rax, 0xD1FFAB1E ; static handle test byte ptr [rcx+rax], 128
- je SHORT G_M41722_IG14
+ je SHORT G_M41722_IG15
;; size=18 bbWeight=8 PerfScore 36.00
-G_M41722_IG11: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG12: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r12+0x08] ; gcrRegs +[rcx] test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov eax, dword ptr [r12+0x10] mov edx, eax cmp dword ptr [rcx+0x08], edx
- jbe SHORT G_M41722_IG12
+ jbe SHORT G_M41722_IG13
inc eax mov dword ptr [r12+0x10], eax ;; size=33 bbWeight=8 PerfScore 86.00
-G_M41722_IG12: ; bbWeight=16, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG13: ; bbWeight=16, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] test r13d, r13d jne SHORT G_M41722_IG07 ;; size=5 bbWeight=16 PerfScore 20.00
-G_M41722_IG13: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M41722_IG15
+G_M41722_IG14: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M41722_IG16
;; size=2 bbWeight=2 PerfScore 4.00
-G_M41722_IG14: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG15: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref
xor r13d, r13d ;; size=3 bbWeight=2 PerfScore 0.50
-G_M41722_IG15: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG16: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, r15d cmp word ptr [rsi+2*rcx+0x0C], 37
- jne G_M41722_IG39
+ jne G_M41722_IG40
mov rcx, 0xD1FFAB1E ; System.Text.StringBuilder call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -318,55 +320,55 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 mov ecx, r15d lea r15d, [rcx+0x01] cmp ecx, dword ptr [rsi+0x08]
- jae G_M41722_IG42
+ jae G_M41722_IG43
movzx rax, word ptr [rsi+2*rcx+0x0C] mov dword ptr [rsp+0x78], eax mov r8d, 1 mov rcx, gword ptr [r12+0x08] ; gcrRegs +[rcx] test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov edx, dword ptr [r12+0x10] mov r10d, edx cmp dword ptr [rcx+0x08], r10d
- jbe SHORT G_M41722_IG16
+ jbe SHORT G_M41722_IG17
inc edx mov dword ptr [r12+0x10], edx mov edx, r10d movzx rcx, word ptr [rcx+2*rdx+0x0C] ; gcrRegs -[rcx]
- jmp SHORT G_M41722_IG17
+ jmp SHORT G_M41722_IG18
;; size=151 bbWeight=2 PerfScore 66.50
-G_M41722_IG16: ; bbWeight=2, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG17: ; bbWeight=2, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
mov ecx, -1 ;; size=5 bbWeight=2 PerfScore 0.50
-G_M41722_IG17: ; bbWeight=2, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG18: ; bbWeight=2, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
movzx r10, cx ;; size=4 bbWeight=2 PerfScore 0.50
-G_M41722_IG18: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG19: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
movsx rcx, r10w cmp ecx, -1
- jne SHORT G_M41722_IG20
+ jne SHORT G_M41722_IG21
;; size=9 bbWeight=16 PerfScore 24.00
-G_M41722_IG19: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG20: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
xor r8d, r8d mov dword ptr [rsp+0x70], r8d mov r8d, dword ptr [rsp+0x70] ;; size=13 bbWeight=8 PerfScore 18.00
-G_M41722_IG20: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG21: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rdi+0x18] mov rdx, gword ptr [rdi+0x08] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M41722_IG22
+ jbe SHORT G_M41722_IG23
;; size=12 bbWeight=16 PerfScore 128.00
-G_M41722_IG21: ; bbWeight=8, gcrefRegs=10CC {rdx rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG22: ; bbWeight=8, gcrefRegs=10CC {rdx rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, ecx mov word ptr [rdx+2*rcx+0x10], r10w inc dword ptr [rdi+0x18]
- jmp SHORT G_M41722_IG23
+ jmp SHORT G_M41722_IG24
;; size=13 bbWeight=8 PerfScore 50.00
-G_M41722_IG22: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG23: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] mov dword ptr [rsp+0x70], r8d mov rcx, rdi @@ -377,31 +379,31 @@ G_M41722_IG22: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs= ; gcr arg pop 0 mov r8d, dword ptr [rsp+0x70] ;; size=22 bbWeight=8 PerfScore 44.00
-G_M41722_IG23: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG24: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r12+0x08] ; gcrRegs +[rcx] test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov edx, dword ptr [r12+0x10] cmp dword ptr [rcx+0x08], edx
- jbe SHORT G_M41722_IG25
+ jbe SHORT G_M41722_IG26
;; size=24 bbWeight=16 PerfScore 148.00
-G_M41722_IG24: ; bbWeight=8, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG25: ; bbWeight=8, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov edx, edx movzx rdx, word ptr [rcx+2*rdx+0x0C]
- jmp SHORT G_M41722_IG26
+ jmp SHORT G_M41722_IG27
;; size=9 bbWeight=8 PerfScore 34.00
-G_M41722_IG25: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG26: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov edx, -1 ;; size=5 bbWeight=8 PerfScore 2.00
-G_M41722_IG26: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG27: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp+0x68], edx movzx r10, dx cmp r10d, 256
- jb SHORT G_M41722_IG28
+ jb SHORT G_M41722_IG29
;; size=17 bbWeight=16 PerfScore 40.00
-G_M41722_IG27: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG28: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp+0x70], r8d mov dword ptr [rsp+0x74], r10d mov ecx, r10d @@ -409,30 +411,30 @@ G_M41722_IG27: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs= ; gcr arg pop 0 test eax, eax mov r10d, dword ptr [rsp+0x74]
- jne SHORT G_M41722_IG30
+ jne SHORT G_M41722_IG31
mov r8d, dword ptr [rsp+0x70]
- jmp SHORT G_M41722_IG29
+ jmp SHORT G_M41722_IG30
;; size=35 bbWeight=8 PerfScore 84.00
-G_M41722_IG28: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG29: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, r10d mov r9, 0xD1FFAB1E ; static handle test byte ptr [rcx+r9], 128
- jne SHORT G_M41722_IG30
+ jne SHORT G_M41722_IG31
;; size=20 bbWeight=8 PerfScore 36.00
-G_M41722_IG29: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz - cmp dword ptr [rsp+0x78], 99 - je SHORT G_M41722_IG30 - cmp dword ptr [rsp+0x68], -1
...

+1 (+0.05%) : 44651.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)

@@ -42,7 +42,7 @@ ;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp26 [V32,T36] ( 3, 6 ) int -> r12 "Inline return value spill temp" ; V33 tmp27 [V33,T37] ( 4, 8 ) int -> rax "Inline stloc first use temp"
-; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
+; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> rbp single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp30 [V36,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -66,7 +66,7 @@ ; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> [rsp+0x38] class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount> ;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount> ;* V57 tmp51 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> rbx "Inlining Arg"
+; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V60 tmp54 [V60,T60] ( 2, 2 ) int -> rdi "Single return block return value" ; V61 tmp55 [V61,T25] ( 6, 13 ) int -> rsi "V01.[000..004)" @@ -112,7 +112,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M55237_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov esi, dword ptr [rsp+0xA8] cmp byte ptr [rbx+0x4F], 0
- jne G_M55237_IG91
+ jne G_M55237_IG92
call <unknown method> ; gcr arg pop 0 mov edi, eax @@ -121,7 +121,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=34 bbWeight=1 PerfScore 10.25 G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp edi, dword ptr [rbx+0x44]
- je G_M55237_IG92
+ je G_M55237_IG93
lea rbp, bword ptr [rbx+0x50] ; byrRegs +[rbp] mov rcx, rbp @@ -141,11 +141,11 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp mov rcx, qword ptr GS:[0x0058] mov rcx, qword ptr [rcx] cmp dword ptr [rcx+0xD8], 3
- jl G_M55237_IG93
+ jl G_M55237_IG94
mov rcx, qword ptr [rcx+0xE0] mov rcx, qword ptr [rcx+0x18] test rcx, rcx
- je G_M55237_IG93
+ je G_M55237_IG94
mov r14, bword ptr [rcx] ; byrRegs +[r14] add r14, 16 @@ -232,7 +232,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=4020 ; gcrRegs +[r15] mov ecx, dword ptr [r15+0x18] test ecx, ecx
- jg G_M55237_IG94
+ jg G_M55237_IG95
cmp edi, dword ptr [rbx+0x40] jne G_M55237_IG35 inc ecx @@ -276,11 +276,11 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp mov rcx, qword ptr GS:[0x0058] mov rcx, qword ptr [rcx] cmp dword ptr [rcx+0xD8], 3
- jl G_M55237_IG95
+ jl G_M55237_IG96
mov rcx, qword ptr [rcx+0xE0] mov rcx, qword ptr [rcx+0x18] test rcx, rcx
- je G_M55237_IG95
+ je G_M55237_IG96
mov r14, bword ptr [rcx] ; byrRegs +[r14] add r14, 16 @@ -480,7 +480,7 @@ G_M55237_IG35: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 { ;; size=8 bbWeight=0.50 PerfScore 0.25 G_M55237_IG36: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rbp r14}, byref, isz cmp dword ptr [rbx+0x48], 0xD1FFAB1E
- jb G_M55237_IG88
+ jb G_M55237_IG84
cmp esi, -1 je SHORT G_M55237_IG38 ;; size=18 bbWeight=4 PerfScore 21.00 @@ -496,15 +496,15 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rb call <unknown method> ; gcr arg pop 0 sub eax, dword ptr [rsp+0xAC]
- js G_M55237_IG84
+ js G_M55237_IG85
cmp eax, esi
- jge G_M55237_IG84
+ jge G_M55237_IG85
mov r12d, esi sub r12d, eax ;; size=32 bbWeight=2 PerfScore 11.50 G_M55237_IG40: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rbp r14}, byref test r12d, r12d
- je G_M55237_IG84
+ je G_M55237_IG85
;; size=9 bbWeight=2 PerfScore 2.50 G_M55237_IG41: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rbp r14}, byref, isz cmp r13d, 20 @@ -842,7 +842,7 @@ G_M55237_IG74: ; bbWeight=4, gcrefRegs=800C {rdx rbx r15}, byrefRegs=4020 ; gcr arg pop 0 mov edi, eax test edi, edi
- je G_M55237_IG86
+ je G_M55237_IG87
mov rcx, qword ptr [r15+0x10] mov r12, qword ptr [rbx+0x28] cmp rcx, r12 @@ -929,13 +929,50 @@ G_M55237_IG83: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rb ; gcrRegs -[rdx] jmp G_M55237_IG36 ;; size=5 bbWeight=4 PerfScore 8.00
-G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz - ; gcrRegs -[rbx r15]
+G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0020 {rbp}, byref, isz
; byrRegs -[r14]
+ inc dword ptr [rbx+0x48] + inc dword ptr [r15+0x18] + jmp SHORT G_M55237_IG89 + ;; size=9 bbWeight=0.50 PerfScore 4.00 +G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz + ; gcrRegs -[rbx r15] + cmp dword ptr [rbp], 0 + jne SHORT G_M55237_IG86 + mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=32 bbWeight=0.50 PerfScore 3.75 +G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref + xor eax, eax + mov dword ptr [rbp], eax + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M55237_IG87: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[rbp] + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M55237_IG88: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 88 + pop rbx + pop rbp + pop rsi + pop rdi + pop r12 + pop r13 + pop r14 + pop r15 + ret + ;; size=17 bbWeight=0.50 PerfScore 2.62 +G_M55237_IG89: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz + ; byrRegs +[rbp]
mov rbx, rbp ; byrRegs +[rbx] cmp dword ptr [rbx], 0
- jne SHORT G_M55237_IG85
+ jne SHORT G_M55237_IG90
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -945,51 +982,12 @@ G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, ; byrRegs -[rbp] ; gcr arg pop 0 ;; size=34 bbWeight=0.50 PerfScore 3.88
-G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - xor eax, eax - mov dword ptr [rbx], eax - ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rbx] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M55237_IG87: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 88 - pop rbx - pop rbp - pop rsi - pop rdi - pop r12 - pop r13 - pop r14 - pop r15 - ret - ;; size=17 bbWeight=0.50 PerfScore 2.62 -G_M55237_IG88: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz - ; gcrRegs +[rbx r15] - ; byrRegs +[rbp] - inc dword ptr [rbx+0x48] - inc dword ptr [r15+0x18] - mov rbx, rbp - ; gcrRegs -[rbx] - ; byrRegs +[rbx] - cmp dword ptr [rbx], 0 - jne SHORT G_M55237_IG89 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx r15] - ; byrRegs -[rbp] - ; gcr arg pop 0 - ;; size=41 bbWeight=0.50 PerfScore 6.88 -G_M55237_IG89: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax mov dword ptr [rbx], eax movzx rax, dil ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG91: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 88 pop rbx pop rbp @@ -1001,7 +999,7 @@ G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] ; byrRegs -[rbx] mov rcx, rbx @@ -1011,7 +1009,7 @@ G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcr arg pop 0 int3 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Threading.LockRecursionException call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -1040,7 +1038,7 @@ G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx rbx] ; gcr arg pop 0 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M55237_IG93: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref
+G_M55237_IG94: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rbx] ; byrRegs +[rbp] mov ecx, 3 @@ -1051,7 +1049,7 @@ G_M55237_IG93: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, ; byrRegs +[r14] jmp G_M55237_IG05 ;; size=18 bbWeight=0 PerfScore 0.00
-G_M55237_IG94: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
...

+11 (+0.32%) : 7929.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 51,108 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 51,108 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T33] ( 9, 30 ) ref -> rbx class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate> ; V02 loc1 [V02,T40] ( 5, 19 ) ref -> [rbp-0x48] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V03 loc2 [V03,T20] ( 13, 43 ) ref -> [rbp-0x50] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>> @@ -21,7 +21,7 @@ ; V10 loc9 [V10,T12] ( 9, 53 ) ref -> [rbp-0x70] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain> ; V11 loc10 [V11,T10] ( 4, 72 ) ubyte -> r14 ; V12 loc11 [V12,T22] ( 3, 40 ) int -> rdi
-; V13 loc12 [V13,T02] ( 5,132 ) int -> r15
+; V13 loc12 [V13,T03] ( 5,132 ) int -> r15
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V15 loc14 [V15,T53] ( 3, 10 ) int -> rbx ; V16 loc15 [V16,T23] ( 5, 33 ) int -> rsi @@ -33,7 +33,7 @@ ;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V23 tmp5 [V23,T43] ( 2, 16 ) ref -> rsi class-hnd exact "impAppendStmt" <System.Net.NetEventSource> ; V24 tmp6 [V24,T11] ( 8, 64 ) ref -> rdi class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> r12 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> r12 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T36] ( 3, 24 ) ref -> rbx class-hnd exact "dup spill" <System.Object[]> ; V27 tmp9 [V27,T37] ( 3, 24 ) ref -> rdi class-hnd exact "dup spill" <System.Object[]> ;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback> @@ -144,10 +144,10 @@ ;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement> ;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 6,320 ) ref -> r14 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> -; V137 tmp119 [V137,T03] ( 2,128 ) ref -> r13 class-hnd exact "dup spill" <System.String> -; V138 tmp120 [V138,T01] ( 6,132 ) ref -> r13 -; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> r13 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 6,384 ) ref -> r14 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> +; V137 tmp119 [V137,T04] ( 2,128 ) ref -> r13 class-hnd exact "dup spill" <System.String> +; V138 tmp120 [V138,T02] ( 6,148 ) ref -> r13 +; V139 tmp121 [V139,T01] ( 3,192 ) ref -> r13 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String> ;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource> @@ -235,7 +235,7 @@ ; V224 tmp206 [V224,T75] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V225 tmp207 [V225,T76] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V226 tmp208 [V226,T16] ( 3, 48 ) ref -> rax "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> rcx "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> rcx "argument with side effect"
; V228 tmp210 [V228,T32] ( 2, 32 ) ref -> rcx "argument with side effect" ; V229 tmp211 [V229,T17] ( 3, 48 ) ref -> rcx "argument with side effect" ; V230 tmp212 [V230,T103] ( 2, 4 ) long -> r8 "argument with side effect" @@ -247,7 +247,7 @@ ; V236 cse1 [V236,T114] ( 3, 3 ) ref -> rax "CSE - conservative" ; V237 cse2 [V237,T115] ( 3, 3 ) ref -> rax "CSE - conservative" ; V238 cse3 [V238,T116] ( 3, 3 ) ref -> rax "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> rsi multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> rsi multi-def "CSE - aggressive"
; V240 cse5 [V240,T117] ( 3, 3 ) ref -> rdi "CSE - conservative" ; V241 cse6 [V241,T81] ( 4, 4 ) ref -> rbx "CSE - conservative" ; V242 cse7 [V242,T79] ( 5, 5 ) ref -> rbx "CSE - conservative" @@ -276,14 +276,14 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00} ;; size=47 bbWeight=1 PerfScore 14.33
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] xor rax, rax ; gcrRegs +[rax] mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V02} ;; size=6 bbWeight=1 PerfScore 1.25
-G_M34773_IG03: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000000020 {V00 V02}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG03: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000000040 {V00 V02}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov gword ptr [rbp-0x50], rax ; GC ptr vars +{V03} @@ -408,7 +408,7 @@ G_M34773_IG08: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M34773_IG09: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000100020 {V00 V02 V03}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG09: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000100040 {V00 V02 V03}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx] ; GC ptr vars +{V02 V03 V20} cmp gword ptr [rbx+0x30], 0 @@ -449,7 +449,7 @@ G_M34773_IG10: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, mov gword ptr [rbp-0x60], rax ; GC ptr vars +{V05} ;; size=6 bbWeight=1 PerfScore 1.25
-G_M34773_IG11: ; bbWeight=1, gcVars=000000000000000000000000000000080000010000100020 {V00 V02 V03 V05}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG11: ; bbWeight=1, gcVars=000000000000000000000000000000080000010000100040 {V00 V02 V03 V05}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] ; GC ptr vars -{V20} call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -464,7 +464,7 @@ G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000000000000800000 test byte ptr [(reloc)], 1 ; global ptr jne SHORT G_M34773_IG13 ;; size=27 bbWeight=1 PerfScore 11.00
-G_M34773_IG12: ; bbWeight=0, gcVars=000000000000000000000000000000080000010000180020 {V00 V02 V03 V04 V05}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG12: ; bbWeight=0, gcVars=000000000000000000000000000000080000010000180040 {V00 V02 V03 V04 V05}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx] mov rcx, 0xD1FFAB1E mov edx, 56 @@ -624,7 +624,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 ;; size=9 bbWeight=1 PerfScore 3.25 G_M34773_IG18: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rax, qword ptr [rcx] @@ -639,7 +639,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[rcx rsi] ; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75 G_M34773_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi] @@ -663,7 +663,7 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ;; size=38 bbWeight=1 PerfScore 16.75 G_M34773_IG20: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rax, qword ptr [rcx] @@ -678,12 +678,12 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[rcx rsi] ; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75 G_M34773_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref ; gcrRegs +[rsi] cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rax, qword ptr [rcx] @@ -698,7 +698,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[rcx rsi] ; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75 G_M34773_IG22: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx rbx] @@ -736,7 +736,7 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, test rbx, rbx je G_M34773_IG27 ;; size=94 bbWeight=1 PerfScore 31.00
-G_M34773_IG23: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000010000000020 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG23: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000010000000040 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V03} mov rcx, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate cmp qword ptr [rbx], rcx @@ -808,7 +808,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rcx] ; gcrRegs +[rsi] cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, rsi ; gcrRegs +[rcx] mov rdx, rbx @@ -818,7 +818,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [System.Net.NetEventSource:AttemptingRestartUsingCert(System.Security.Cryptography.X509Certificates.X509Certificate,System.Net.Security.SslStream):this] ; gcrRegs -[rcx rdx rbx rsi r8] ; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=47 bbWeight=1 PerfScore 12.75 G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rcx, gword ptr [rbp+0x10] @@ -827,7 +827,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rax] mov rax, gword ptr [rax+0x10] test rax, rax
- je G_M34773_IG59
+ je G_M34773_IG60
mov rax, gword ptr [rax+0x08] mov rcx, rax mov rax, qword ptr [rax] @@ -837,7 +837,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jle G_M34773_IG59
+ jle G_M34773_IG60
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -858,7 +858,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, test ebx, ebx jne SHORT G_M34773_IG30 ;; size=100 bbWeight=1 PerfScore 35.25
-G_M34773_IG29: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000180020 {V00 V02 V03 V04}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG29: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000180040 {V00 V02 V03 V04}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx] mov rbx, rsi ; gcrRegs +[rbx] @@ -899,26 +899,26 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr G_M34773_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor ecx, ecx mov dword ptr [rbp-0x3C], ecx
- jmp G_M34773_IG58
+ jmp G_M34773_IG59
;; size=10 bbWeight=1 PerfScore 3.25 G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp gword ptr [rbp-0x58], 0
- je G_M34773_IG51
+ je G_M34773_IG52
mov rcx, gword ptr [rbp-0x58] ; gcrRegs +[rcx] mov ebx, dword ptr [rcx+0x08] test ebx, ebx
- je G_M34773_IG51
+ je G_M34773_IG52
xor rcx, rcx mov gword ptr [rbp-0x68], rcx ; GC ptr vars +{V09} ;; size=32 bbWeight=4 PerfScore 34.00
-G_M34773_IG33: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800180020 {V00 V02 V03 V04 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG33: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800180040 {V00 V02 V03 V04 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx] mov gword ptr [rbp-0x70], rcx ; GC ptr vars +{V10} ;; size=4 bbWeight=4 PerfScore 4.00
-G_M34773_IG34: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800181020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG34: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800181040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x38] @@ -937,7 +937,7 @@ G_M34773_IG34: ; bbWeight=4, gcVars=0000000000000000000000000000000000000 ; gcr arg pop 0 mov gword ptr [rbp-0x68], rax cmp gword ptr [rbp-0x68], 0
- je G_M34773_IG47
+ je G_M34773_IG48
mov rcx, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rcx] ; gcrRegs +[rsi] ...

coreclr_tests.run.windows.x64.checked.mch

-10 (-2.80%) : 227236.dasm - MSjumpscs.VT:ToStringHelper():System.String:this (FullOpts)

@@ -33,12 +33,12 @@ ;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp21 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp22 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp23 [V25,T11] ( 2, 7.58) byref -> rax "Inlining Arg" -; V26 tmp24 [V26,T12] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V25 tmp23 [V25,T11] ( 2, 7.58) byref -> rcx "Inlining Arg" +; V26 tmp24 [V26,T12] ( 2, 7.58) byref -> rdx "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) long -> zero-ref "spilling arg" ; V28 cse0 [V28,T09] ( 5, 9.37) int -> rdi "CSE - aggressive" ; V29 cse1 [V29,T03] ( 9, 17.06) ref -> rdx multi-def "CSE - aggressive"
-; V30 rat0 [V30,T00] ( 3, 48 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V30 rat0 [V30,T00] ( 3, 48 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 32 @@ -57,35 +57,25 @@ G_M38274_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr mov rsi, gword ptr [rbx] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M38274_IG05
+ je SHORT G_M38274_IG08
;; size=8 bbWeight=8 PerfScore 26.00 G_M38274_IG03: ; bbWeight=1.84, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov edi, dword ptr [rsi+0x08] test edi, edi
- je SHORT G_M38274_IG05
+ je SHORT G_M38274_IG08
;; size=7 bbWeight=1.84 PerfScore 5.98 G_M38274_IG04: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov ebp, edi lea ecx, [rbp+0x10] test ecx, ecx
- jl G_M38274_IG20 - jmp SHORT G_M38274_IG06 - ;; size=15 bbWeight=1.90 PerfScore 7.58 -G_M38274_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[rsi] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - jmp G_M38274_IG13 - ;; size=15 bbWeight=2 PerfScore 4.50 -G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rdx] +[rsi]
+ jl G_M38274_IG19
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 mov r14, rax ; gcrRegs +[r14] test r14, r14
- jne SHORT G_M38274_IG07
+ jne SHORT G_M38274_IG05
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -93,10 +83,10 @@ G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- ;; size=32 bbWeight=1.90 PerfScore 11.38 -G_M38274_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=45 bbWeight=1.90 PerfScore 15.17 +G_M38274_IG05: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [r14+0x08], edi
- jge SHORT G_M38274_IG08
+ jge SHORT G_M38274_IG06
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -105,7 +95,7 @@ G_M38274_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=25 bbWeight=1.90 PerfScore 14.22
-G_M38274_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r14+0x0C] ; byrRegs +[rcx] lea rdx, bword ptr [rsi+0x0C] @@ -113,26 +103,35 @@ G_M38274_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 mov r8d, edi add r8, r8 cmp r8, 6
- jne SHORT G_M38274_IG10
+ jne SHORT G_M38274_IG09
;; size=20 bbWeight=1.90 PerfScore 5.21
-G_M38274_IG09: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
+G_M38274_IG07: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
; gcrRegs -[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_M38274_IG11
+ jmp SHORT G_M38274_IG10
;; size=14 bbWeight=0.95 PerfScore 7.58
-G_M38274_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+G_M38274_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs -[r14] + ; byrRegs -[rcx rdx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + jmp SHORT G_M38274_IG12 + ;; size=12 bbWeight=2 PerfScore 4.50 +G_M38274_IG09: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref + ; gcrRegs -[rdx] +[r14] + ; byrRegs +[rcx rdx]
call [<unknown method>] ; byrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [r14+0x08] sub ecx, ebp cmp ecx, 16
- jge SHORT G_M38274_IG12
+ jge SHORT G_M38274_IG11
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -141,46 +140,46 @@ G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=30 bbWeight=1.90 PerfScore 13.27
-G_M38274_IG12: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref - movsxd rax, ebp - lea rax, bword ptr [r14+2*rax+0x0C] - ; byrRegs +[rax] - mov rcx, 0xD1FFAB1E
+G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref + movsxd rcx, ebp + lea rcx, bword ptr [r14+2*rcx+0x0C]
; byrRegs +[rcx]
- vmovdqu ymm0, ymmword ptr [rcx] - vmovdqu ymmword ptr [rax], ymm0
+ mov rdx, 0xD1FFAB1E + ; byrRegs +[rdx] + vmovdqu ymm0, ymmword ptr [rdx] + vmovdqu ymmword ptr [rcx], ymm0
mov rdx, r14 ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
;; size=29 bbWeight=1.90 PerfScore 16.59
-G_M38274_IG13: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG12: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r14]
- ; byrRegs -[rax rcx]
+ ; byrRegs -[rcx]
mov rcx, rbx ; byrRegs +[rcx] call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx]
- mov r14d, dword ptr [rbx+0x08] - cmp r14d, 2 - ja SHORT G_M38274_IG19 - mov eax, r14d
+ mov eax, dword ptr [rbx+0x08] + cmp eax, 2 + ja SHORT G_M38274_IG18
lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rax] lea rdx, G_M38274_IG02 add rcx, rdx jmp rcx
- ;; size=43 bbWeight=8 PerfScore 84.00 -G_M38274_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=8 PerfScore 82.00 +G_M38274_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax mov dword ptr [rbx+0x08], eax jmp G_M38274_IG02 ;; size=10 bbWeight=4 PerfScore 13.00
-G_M38274_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38274_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx] mov rax, 0xD1FFAB1E ; gcrRegs +[rax] ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M38274_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M38274_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -189,7 +188,7 @@ G_M38274_IG16: ; bbWeight=0.50, epilog, nogc, extend pop r14 ret ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M38274_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M38274_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax] ; byrRegs +[rbx] xor ecx, ecx @@ -197,7 +196,7 @@ G_M38274_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rcx, rbx ; byrRegs +[rcx] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M38274_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M38274_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -207,7 +206,7 @@ G_M38274_IG18: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [MS_jumps_cs.VT:ToString():System.String:this] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M38274_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38274_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx rbx] mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -226,17 +225,17 @@ G_M38274_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[rcx rbx] ; gcr arg pop 0 ;; size=35 bbWeight=0 PerfScore 0.00
-G_M38274_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38274_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M38274_IG15 - G_M38274_IG02 - dd G_M38274_IG14 - G_M38274_IG02 - dd G_M38274_IG17 - G_M38274_IG02
+RWD00 dd G_M38274_IG14 - G_M38274_IG02 + dd G_M38274_IG13 - G_M38274_IG02 + dd G_M38274_IG16 - G_M38274_IG02
-Total bytes of code 357, prolog size 16, PerfScore 226.64, instruction count 99, allocated bytes for code 357 (MethodHash=79da6a7d) for method MS_jumps_cs.VT:ToStringHelper():System.String:this (FullOpts)
+Total bytes of code 347, prolog size 16, PerfScore 220.85, instruction count 97, allocated bytes for code 347 (MethodHash=79da6a7d) for method MS_jumps_cs.VT:ToStringHelper():System.String:this (FullOpts)
; ============================================================ Unwind Info:

-10 (-2.79%) : 230082.dasm - MSjumps2il.VT:ToStringHelper():System.String:this (FullOpts)

@@ -34,12 +34,12 @@ ;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp21 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp22 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp23 [V26,T11] ( 2, 7.58) byref -> rax "Inlining Arg" -; V27 tmp24 [V27,T12] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V26 tmp23 [V26,T11] ( 2, 7.58) byref -> rcx "Inlining Arg" +; V27 tmp24 [V27,T12] ( 2, 7.58) byref -> rdx "Inlining Arg"
;* V28 tmp25 [V28 ] ( 0, 0 ) long -> zero-ref "spilling arg" ; V29 cse0 [V29,T09] ( 5, 9.37) int -> rdi "CSE - aggressive" ; V30 cse1 [V30,T03] ( 9, 17.06) ref -> rdx multi-def "CSE - aggressive"
-; V31 rat0 [V31,T00] ( 3, 48 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V31 rat0 [V31,T00] ( 3, 48 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 32 @@ -58,35 +58,25 @@ G_M1125_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre mov rsi, gword ptr [rbx] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M1125_IG05
+ je SHORT G_M1125_IG08
;; size=8 bbWeight=8 PerfScore 26.00 G_M1125_IG03: ; bbWeight=1.84, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov edi, dword ptr [rsi+0x08] test edi, edi
- je SHORT G_M1125_IG05
+ je SHORT G_M1125_IG08
;; size=7 bbWeight=1.84 PerfScore 5.98 G_M1125_IG04: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov ebp, edi lea ecx, [rbp+0x10] test ecx, ecx
- jl G_M1125_IG19 - jmp SHORT G_M1125_IG06 - ;; size=15 bbWeight=1.90 PerfScore 7.58 -G_M1125_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[rsi] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - jmp G_M1125_IG13 - ;; size=15 bbWeight=2 PerfScore 4.50 -G_M1125_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rdx] +[rsi]
+ jl G_M1125_IG18
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 mov r14, rax ; gcrRegs +[r14] test r14, r14
- jne SHORT G_M1125_IG07
+ jne SHORT G_M1125_IG05
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -94,10 +84,10 @@ G_M1125_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx} call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- ;; size=32 bbWeight=1.90 PerfScore 11.38 -G_M1125_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=45 bbWeight=1.90 PerfScore 15.17 +G_M1125_IG05: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [r14+0x08], edi
- jge SHORT G_M1125_IG08
+ jge SHORT G_M1125_IG06
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -106,7 +96,7 @@ G_M1125_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 { ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=25 bbWeight=1.90 PerfScore 14.22
-G_M1125_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M1125_IG06: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r14+0x0C] ; byrRegs +[rcx] lea rdx, bword ptr [rsi+0x0C] @@ -114,26 +104,35 @@ G_M1125_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 { mov r8d, edi add r8, r8 cmp r8, 6
- jne SHORT G_M1125_IG10
+ jne SHORT G_M1125_IG09
;; size=20 bbWeight=1.90 PerfScore 5.21
-G_M1125_IG09: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
+G_M1125_IG07: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
; gcrRegs -[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_M1125_IG11
+ jmp SHORT G_M1125_IG10
;; size=14 bbWeight=0.95 PerfScore 7.58
-G_M1125_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+G_M1125_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs -[r14] + ; byrRegs -[rcx rdx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + jmp SHORT G_M1125_IG12 + ;; size=12 bbWeight=2 PerfScore 4.50 +G_M1125_IG09: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref + ; gcrRegs -[rdx] +[r14] + ; byrRegs +[rcx rdx]
call [<unknown method>] ; byrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M1125_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M1125_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [r14+0x08] sub ecx, ebp cmp ecx, 16
- jge SHORT G_M1125_IG12
+ jge SHORT G_M1125_IG11
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -142,46 +141,46 @@ G_M1125_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx} ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=30 bbWeight=1.90 PerfScore 13.27
-G_M1125_IG12: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref - movsxd rax, ebp - lea rax, bword ptr [r14+2*rax+0x0C] - ; byrRegs +[rax] - mov rcx, 0xD1FFAB1E
+G_M1125_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref + movsxd rcx, ebp + lea rcx, bword ptr [r14+2*rcx+0x0C]
; byrRegs +[rcx]
- vmovdqu ymm0, ymmword ptr [rcx] - vmovdqu ymmword ptr [rax], ymm0
+ mov rdx, 0xD1FFAB1E + ; byrRegs +[rdx] + vmovdqu ymm0, ymmword ptr [rdx] + vmovdqu ymmword ptr [rcx], ymm0
mov rdx, r14 ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
;; size=29 bbWeight=1.90 PerfScore 16.59
-G_M1125_IG13: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+G_M1125_IG12: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r14]
- ; byrRegs -[rax rcx]
+ ; byrRegs -[rcx]
mov rcx, rbx ; byrRegs +[rcx] call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx]
- mov r14d, dword ptr [rbx+0x08] - cmp r14d, 2 - ja SHORT G_M1125_IG20 - mov eax, r14d
+ mov eax, dword ptr [rbx+0x08] + cmp eax, 2 + ja SHORT G_M1125_IG19
lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rax] lea rdx, G_M1125_IG02 add rcx, rdx jmp rcx
- ;; size=43 bbWeight=8 PerfScore 84.00 -G_M1125_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=8 PerfScore 82.00 +G_M1125_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax mov dword ptr [rbx+0x08], eax jmp G_M1125_IG02 ;; size=10 bbWeight=4 PerfScore 13.00
-G_M1125_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1125_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx] mov rax, 0xD1FFAB1E ; gcrRegs +[rax] ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M1125_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M1125_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -190,7 +189,7 @@ G_M1125_IG16: ; bbWeight=0.50, epilog, nogc, extend pop r14 ret ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M1125_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M1125_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax] ; byrRegs +[rbx] xor ecx, ecx @@ -198,7 +197,7 @@ G_M1125_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 mov rcx, rbx ; byrRegs +[rcx] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M1125_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M1125_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -208,13 +207,13 @@ G_M1125_IG18: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M1125_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M1125_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx rbx] call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M1125_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1125_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -233,12 +232,12 @@ G_M1125_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M1125_IG15 - G_M1125_IG02 - dd G_M1125_IG14 - G_M1125_IG02 - dd G_M1125_IG17 - G_M1125_IG02
+RWD00 dd G_M1125_IG14 - G_M1125_IG02 + dd G_M1125_IG13 - G_M1125_IG02 + dd G_M1125_IG16 - G_M1125_IG02
-Total bytes of code 358, prolog size 16, PerfScore 226.64, instruction count 100, allocated bytes for code 358 (MethodHash=2715fb9a) for method MS_jumps2_il.VT:ToStringHelper():System.String:this (FullOpts)
+Total bytes of code 348, prolog size 16, PerfScore 220.85, instruction count 98, allocated bytes for code 348 (MethodHash=2715fb9a) for method MS_jumps2_il.VT:ToStringHelper():System.String:this (FullOpts)
; ============================================================ Unwind Info:

-10 (-2.72%) : 227237.dasm - MSjumpscs.VT:ToString():System.String:this (FullOpts)

@@ -33,12 +33,12 @@ ;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp21 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp22 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp23 [V25,T11] ( 2, 7.58) byref -> rax "Inlining Arg" -; V26 tmp24 [V26,T12] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V25 tmp23 [V25,T11] ( 2, 7.58) byref -> rcx "Inlining Arg" +; V26 tmp24 [V26,T12] ( 2, 7.58) byref -> rdx "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) long -> zero-ref "spilling arg" ; V28 cse0 [V28,T09] ( 5, 9.37) int -> rdi "CSE - aggressive" ; V29 cse1 [V29,T03] ( 9, 17.06) ref -> rdx multi-def "CSE - aggressive"
-; V30 rat0 [V30,T00] ( 3, 48 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V30 rat0 [V30,T00] ( 3, 48 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 32 @@ -57,35 +57,25 @@ G_M64964_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr mov rsi, gword ptr [rbx] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M64964_IG05
+ je SHORT G_M64964_IG08
;; size=8 bbWeight=8 PerfScore 26.00 G_M64964_IG03: ; bbWeight=1.84, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov edi, dword ptr [rsi+0x08] test edi, edi
- je SHORT G_M64964_IG05
+ je SHORT G_M64964_IG08
;; size=7 bbWeight=1.84 PerfScore 5.98 G_M64964_IG04: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov ebp, edi lea ecx, [rbp+0x0A] test ecx, ecx
- jl G_M64964_IG20 - jmp SHORT G_M64964_IG06 - ;; size=15 bbWeight=1.90 PerfScore 7.58 -G_M64964_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[rsi] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - jmp G_M64964_IG13 - ;; size=15 bbWeight=2 PerfScore 4.50 -G_M64964_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rdx] +[rsi]
+ jl G_M64964_IG19
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 mov r14, rax ; gcrRegs +[r14] test r14, r14
- jne SHORT G_M64964_IG07
+ jne SHORT G_M64964_IG05
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -93,10 +83,10 @@ G_M64964_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- ;; size=32 bbWeight=1.90 PerfScore 11.38 -G_M64964_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=45 bbWeight=1.90 PerfScore 15.17 +G_M64964_IG05: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [r14+0x08], edi
- jge SHORT G_M64964_IG08
+ jge SHORT G_M64964_IG06
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -105,7 +95,7 @@ G_M64964_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=25 bbWeight=1.90 PerfScore 14.22
-G_M64964_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M64964_IG06: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r14+0x0C] ; byrRegs +[rcx] lea rdx, bword ptr [rsi+0x0C] @@ -113,26 +103,35 @@ G_M64964_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 mov r8d, edi add r8, r8 cmp r8, 6
- jne SHORT G_M64964_IG10
+ jne SHORT G_M64964_IG09
;; size=20 bbWeight=1.90 PerfScore 5.21
-G_M64964_IG09: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
+G_M64964_IG07: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
; gcrRegs -[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_M64964_IG11
+ jmp SHORT G_M64964_IG10
;; size=14 bbWeight=0.95 PerfScore 7.58
-G_M64964_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+G_M64964_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs -[r14] + ; byrRegs -[rcx rdx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + jmp SHORT G_M64964_IG12 + ;; size=12 bbWeight=2 PerfScore 4.50 +G_M64964_IG09: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref + ; gcrRegs -[rdx] +[r14] + ; byrRegs +[rcx rdx]
call [<unknown method>] ; byrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M64964_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M64964_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [r14+0x08] sub ecx, ebp cmp ecx, 10
- jge SHORT G_M64964_IG12
+ jge SHORT G_M64964_IG11
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -141,48 +140,48 @@ G_M64964_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=30 bbWeight=1.90 PerfScore 13.27
-G_M64964_IG12: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref - movsxd rax, ebp - lea rax, bword ptr [r14+2*rax+0x0C] - ; byrRegs +[rax] - mov rcx, 0xD1FFAB1E
+G_M64964_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref + movsxd rcx, ebp + lea rcx, bword ptr [r14+2*rcx+0x0C]
; byrRegs +[rcx]
- vmovdqu xmm0, xmmword ptr [rcx] - vmovdqu xmm1, xmmword ptr [rcx+0x04] - vmovdqu xmmword ptr [rax], xmm0 - vmovdqu xmmword ptr [rax+0x04], xmm1
+ mov rdx, 0xD1FFAB1E + ; byrRegs +[rdx] + vmovdqu xmm0, xmmword ptr [rdx] + vmovdqu xmm1, xmmword ptr [rdx+0x04] + vmovdqu xmmword ptr [rcx], xmm0 + vmovdqu xmmword ptr [rcx+0x04], xmm1
mov rdx, r14 ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
;; size=39 bbWeight=1.90 PerfScore 26.07
-G_M64964_IG13: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+G_M64964_IG12: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r14]
- ; byrRegs -[rax rcx]
+ ; byrRegs -[rcx]
mov rcx, rbx ; byrRegs +[rcx] call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx]
- mov r14d, dword ptr [rbx+0x08] - cmp r14d, 2 - ja SHORT G_M64964_IG19 - mov eax, r14d
+ mov eax, dword ptr [rbx+0x08] + cmp eax, 2 + ja SHORT G_M64964_IG18
lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rax] lea rdx, G_M64964_IG02 add rcx, rdx jmp rcx
- ;; size=43 bbWeight=8 PerfScore 84.00 -G_M64964_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=8 PerfScore 82.00 +G_M64964_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax mov dword ptr [rbx+0x08], eax jmp G_M64964_IG02 ;; size=10 bbWeight=4 PerfScore 13.00
-G_M64964_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64964_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx] mov rax, 0xD1FFAB1E ; gcrRegs +[rax] ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M64964_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M64964_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -191,7 +190,7 @@ G_M64964_IG16: ; bbWeight=0.50, epilog, nogc, extend pop r14 ret ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M64964_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M64964_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax] ; byrRegs +[rbx] xor ecx, ecx @@ -199,7 +198,7 @@ G_M64964_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rcx, rbx ; byrRegs +[rcx] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M64964_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M64964_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -209,7 +208,7 @@ G_M64964_IG18: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [MS_jumps_cs.VT:ToStringHelper():System.String:this] ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M64964_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M64964_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx rbx] mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -228,17 +227,17 @@ G_M64964_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[rcx rbx] ; gcr arg pop 0 ;; size=35 bbWeight=0 PerfScore 0.00
-G_M64964_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64964_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M64964_IG15 - G_M64964_IG02 - dd G_M64964_IG17 - G_M64964_IG02 - dd G_M64964_IG14 - G_M64964_IG02
+RWD00 dd G_M64964_IG14 - G_M64964_IG02 + dd G_M64964_IG16 - G_M64964_IG02 + dd G_M64964_IG13 - G_M64964_IG02
-Total bytes of code 367, prolog size 16, PerfScore 236.12, instruction count 101, allocated bytes for code 367 (MethodHash=7e1c023b) for method MS_jumps_cs.VT:ToString():System.String:this (FullOpts)
+Total bytes of code 357, prolog size 16, PerfScore 230.33, instruction count 99, allocated bytes for code 357 (MethodHash=7e1c023b) for method MS_jumps_cs.VT:ToString():System.String:this (FullOpts)
; ============================================================ Unwind Info:

+12 (+2.92%) : 429266.dasm - System.String:Concat(System.String[]):System.String (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 10, 16 ) ref -> rbx class-hnd <System.String[]>
-; V01 loc0 [V01,T14] ( 5, 15 ) long -> rcx
+; V01 loc0 [V01,T15] ( 5, 15 ) long -> rcx
; V02 loc1 [V02,T16] ( 6, 10 ) int -> rdi ; V03 loc2 [V03,T10] ( 5, 20 ) ref -> rbp class-hnd exact <System.String> ; V04 loc3 [V04,T01] ( 9, 32 ) int -> r14 @@ -36,7 +36,7 @@ ; V24 tmp14 [V24,T21] ( 2, 0 ) ref -> rbx single-def "arg temp" ; V25 cse0 [V25,T00] ( 10,306 ) ref -> rdx multi-def "CSE - aggressive" ; V26 cse1 [V26,T03] ( 5, 29.05) int -> r12 "CSE - aggressive"
-; V27 cse2 [V27,T15] ( 6, 14 ) int -> rsi "CSE - moderate"
+; V27 cse2 [V27,T14] ( 8, 16 ) int -> rsi "CSE - moderate"
; ; Lcl frame size = 40 @@ -57,13 +57,15 @@ G_M46295_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr test rbx, rbx je G_M46295_IG24 ;; size=9 bbWeight=1 PerfScore 1.25
-G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [rbx+0x08] cmp esi, 1 jle G_M46295_IG25 xor ecx, ecx xor eax, eax
- ;; size=16 bbWeight=1 PerfScore 3.75
+ test esi, esi + jle SHORT G_M46295_IG06 + ;; size=20 bbWeight=1 PerfScore 5.00
G_M46295_IG04: ; bbWeight=6, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edx, eax mov rdx, gword ptr [rbx+8*rdx+0x10] @@ -93,7 +95,9 @@ G_M46295_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbp] xor r14d, r14d xor r15d, r15d
- ;; size=39 bbWeight=1 PerfScore 4.75
+ test esi, esi + jle G_M46295_IG17 + ;; size=47 bbWeight=1 PerfScore 6.00
G_M46295_IG07: ; bbWeight=6, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov ecx, r15d @@ -266,7 +270,7 @@ G_M46295_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 411, prolog size 19, PerfScore 592.20, instruction count 120, allocated bytes for code 411 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 423, prolog size 19, PerfScore 594.70, instruction count 124, allocated bytes for code 423 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================ Unwind Info:

+12 (+2.92%) : 465235.dasm - System.String:Concat(System.String[]):System.String (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 10, 16 ) ref -> rbx class-hnd <System.String[]>
-; V01 loc0 [V01,T14] ( 5, 15 ) long -> rcx
+; V01 loc0 [V01,T15] ( 5, 15 ) long -> rcx
; V02 loc1 [V02,T16] ( 6, 10 ) int -> rdi ; V03 loc2 [V03,T10] ( 5, 20 ) ref -> rbp class-hnd exact <System.String> ; V04 loc3 [V04,T01] ( 9, 32 ) int -> r14 @@ -36,7 +36,7 @@ ; V24 tmp14 [V24,T21] ( 2, 0 ) ref -> rbx single-def "arg temp" ; V25 cse0 [V25,T00] ( 10,306 ) ref -> rdx multi-def "CSE - aggressive" ; V26 cse1 [V26,T03] ( 5, 29.05) int -> r12 "CSE - aggressive"
-; V27 cse2 [V27,T15] ( 6, 14 ) int -> rsi "CSE - moderate"
+; V27 cse2 [V27,T14] ( 8, 16 ) int -> rsi "CSE - moderate"
; ; Lcl frame size = 40 @@ -57,13 +57,15 @@ G_M46295_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr test rbx, rbx je G_M46295_IG24 ;; size=9 bbWeight=1 PerfScore 1.25
-G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [rbx+0x08] cmp esi, 1 jle G_M46295_IG25 xor ecx, ecx xor eax, eax
- ;; size=16 bbWeight=1 PerfScore 3.75
+ test esi, esi + jle SHORT G_M46295_IG06 + ;; size=20 bbWeight=1 PerfScore 5.00
G_M46295_IG04: ; bbWeight=6, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edx, eax mov rdx, gword ptr [rbx+8*rdx+0x10] @@ -93,7 +95,9 @@ G_M46295_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbp] xor r14d, r14d xor r15d, r15d
- ;; size=39 bbWeight=1 PerfScore 4.75
+ test esi, esi + jle G_M46295_IG17 + ;; size=47 bbWeight=1 PerfScore 6.00
G_M46295_IG07: ; bbWeight=6, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov ecx, r15d @@ -266,7 +270,7 @@ G_M46295_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 411, prolog size 19, PerfScore 592.20, instruction count 120, allocated bytes for code 411 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 423, prolog size 19, PerfScore 594.70, instruction count 124, allocated bytes for code 423 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================ Unwind Info:

+12 (+2.92%) : 470991.dasm - System.String:Concat(System.String[]):System.String (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 10, 16 ) ref -> rbx class-hnd <System.String[]>
-; V01 loc0 [V01,T14] ( 5, 15 ) long -> rcx
+; V01 loc0 [V01,T15] ( 5, 15 ) long -> rcx
; V02 loc1 [V02,T16] ( 6, 10 ) int -> rdi ; V03 loc2 [V03,T10] ( 5, 20 ) ref -> rbp class-hnd exact <System.String> ; V04 loc3 [V04,T01] ( 9, 32 ) int -> r14 @@ -36,7 +36,7 @@ ; V24 tmp14 [V24,T21] ( 2, 0 ) ref -> rbx single-def "arg temp" ; V25 cse0 [V25,T00] ( 10,306 ) ref -> rdx multi-def "CSE - aggressive" ; V26 cse1 [V26,T03] ( 5, 29.05) int -> r12 "CSE - aggressive"
-; V27 cse2 [V27,T15] ( 6, 14 ) int -> rsi "CSE - moderate"
+; V27 cse2 [V27,T14] ( 8, 16 ) int -> rsi "CSE - moderate"
; ; Lcl frame size = 40 @@ -57,13 +57,15 @@ G_M46295_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr test rbx, rbx je G_M46295_IG24 ;; size=9 bbWeight=1 PerfScore 1.25
-G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [rbx+0x08] cmp esi, 1 jle G_M46295_IG25 xor ecx, ecx xor eax, eax
- ;; size=16 bbWeight=1 PerfScore 3.75
+ test esi, esi + jle SHORT G_M46295_IG06 + ;; size=20 bbWeight=1 PerfScore 5.00
G_M46295_IG04: ; bbWeight=6, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edx, eax mov rdx, gword ptr [rbx+8*rdx+0x10] @@ -93,7 +95,9 @@ G_M46295_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbp] xor r14d, r14d xor r15d, r15d
- ;; size=39 bbWeight=1 PerfScore 4.75
+ test esi, esi + jle G_M46295_IG17 + ;; size=47 bbWeight=1 PerfScore 6.00
G_M46295_IG07: ; bbWeight=6, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov ecx, r15d @@ -266,7 +270,7 @@ G_M46295_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 411, prolog size 19, PerfScore 592.20, instruction count 120, allocated bytes for code 411 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 423, prolog size 19, PerfScore 594.70, instruction count 124, allocated bytes for code 423 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================ Unwind Info:

libraries.crossgen2.windows.x64.checked.mch

-1 (-0.02%) : 1808.dasm - Program:Main(System.String[]):int (FullOpts)

@@ -1190,7 +1190,7 @@ G_M58511_IG22: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 xor r15d, r15d ;; size=37 bbWeight=1 PerfScore 11.50 G_M58511_IG23: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
- jmp G_M58511_IG31
+ jmp G_M58511_IG40
;; size=5 bbWeight=1 PerfScore 2.00 G_M58511_IG24: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz cmp dword ptr [rbx+0x08], 0 @@ -1271,34 +1271,15 @@ G_M58511_IG29: ; bbWeight=4, gcrefRegs=60C8 {rbx rsi rdi r13 r14}, byrefR mov ecx, dword ptr [r13+0x08] mov dword ptr [rbp-0x40], ecx ;; size=7 bbWeight=4 PerfScore 12.00
-G_M58511_IG30: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M58511_IG30: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov ecx, dword ptr [rbp-0x40] cmp ecx, dword ptr [rbp-0x3C]
- jne SHORT G_M58511_IG32 - mov rcx, r14 - ; gcrRegs +[rcx] - lea r11, [(reloc)] ; function address - call [r11]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - cmp rax, 0x2710 - jg G_M58511_IG40 - mov ecx, 5 - call [<unknown method>] - ; gcr arg pop 0 - mov ecx, dword ptr [rbp-0x44] - inc ecx - mov dword ptr [rbp-0x44], ecx - ;; size=52 bbWeight=4 PerfScore 58.00 -G_M58511_IG31: ; bbWeight=8, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref - cmp dword ptr [rbp-0x44], 40 - jge G_M58511_IG50 - jmp G_M58511_IG24 - ;; size=15 bbWeight=8 PerfScore 40.00 -G_M58511_IG32: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ je G_M58511_IG39 + ;; size=12 bbWeight=4 PerfScore 16.00 +G_M58511_IG31: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
cmp dword ptr [rbp-0x44], 2
- jge G_M58511_IG35
+ jge G_M58511_IG41
xorps xmm0, xmm0 movups xmmword ptr [rbp-0x160], xmm0 movups xmmword ptr [rbp-0x150], xmm0 @@ -1309,7 +1290,7 @@ G_M58511_IG32: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs= call [<unknown method>] ; gcr arg pop 0 ;; size=58 bbWeight=1 PerfScore 10.33
-G_M58511_IG33: ; bbWeight=1, nogc, extend
+G_M58511_IG32: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x160] movups xmmword ptr [rbp-0x70], xmm0 movups xmm0, xmmword ptr [rbp-0x150] @@ -1317,7 +1298,7 @@ G_M58511_IG33: ; bbWeight=1, nogc, extend mov rdx, qword ptr [rbp-0x140] mov qword ptr [rbp-0x50], rdx ;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG34: ; bbWeight=1, extend
+G_M58511_IG33: ; bbWeight=1, extend
mov rdx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] @@ -1358,9 +1339,94 @@ G_M58511_IG34: ; bbWeight=1, extend ; gcr arg pop 0 mov ecx, dword ptr [rbp-0x3C] mov dword ptr [rbp-0x40], ecx
- jmp G_M58511_IG39 - ;; size=116 bbWeight=1 PerfScore 42.25 -G_M58511_IG35: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ ;; size=111 bbWeight=1 PerfScore 40.25 +G_M58511_IG34: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref + mov r15d, 1 + ;; size=6 bbWeight=1 PerfScore 0.25 +G_M58511_IG35: ; bbWeight=8, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz + cmp dword ptr [rbp-0x44], 45 + jge SHORT G_M58511_IG36 + test r15d, r15d + je G_M58511_IG48 + ;; size=15 bbWeight=8 PerfScore 34.00 +G_M58511_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx rsi rdi r14] + mov eax, dword ptr [rbp-0x40] + cmp eax, dword ptr [rbp-0x3C] + jne G_M58511_IG62 + call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] + ; byrRegs +[rax] + ; gcr arg pop 0 + cmp byte ptr [rax+0x32], 0 + je G_M58511_IG62 + lea rcx, [rbp-0x98] + mov edx, 47 + mov r8d, 1 + call [<unknown method>] + ; byrRegs -[rax] + ; gcr arg pop 0 + ;; size=52 bbWeight=1 PerfScore 15.00 +G_M58511_IG37: ; bbWeight=1, nogc, extend + movups xmm0, xmmword ptr [rbp-0x98] + movups xmmword ptr [rbp-0x70], xmm0 + movups xmm0, xmmword ptr [rbp-0x88] + movups xmmword ptr [rbp-0x60], xmm0 + mov rdx, qword ptr [rbp-0x78] + mov qword ptr [rbp-0x50], rdx + ;; size=30 bbWeight=1 PerfScore 10.00 +G_M58511_IG38: ; bbWeight=1, extend + mov rdx, qword ptr [(reloc)] ; const ptr + mov rdx, gword ptr [rdx] + ; gcrRegs +[rdx] + lea rcx, [rbp-0x70] + call [<unknown method>] + ; gcrRegs -[rdx] + ; gcr arg pop 0 + lea rcx, [rbp-0x70] + mov edx, 45 + call [<unknown method>] + ; gcr arg pop 0 + mov rdx, qword ptr [(reloc)] ; const ptr + mov rdx, gword ptr [rdx] + ; gcrRegs +[rdx] + lea rcx, [rbp-0x70] + call [<unknown method>] + ; gcrRegs -[rdx] + ; gcr arg pop 0 + lea rcx, [rbp-0x70] + call [<unknown method>] + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rcx, rax + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rax rcx] + ; gcr arg pop 0 + jmp G_M58511_IG62 + ;; size=79 bbWeight=1 PerfScore 27.50 +G_M58511_IG39: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx rsi rdi r14] + mov rcx, r14 + ; gcrRegs +[rcx] + lea r11, [(reloc)] ; function address + call [r11]<unknown method> + ; gcrRegs -[rcx] + ; gcr arg pop 0 + cmp rax, 0x2710 + jg G_M58511_IG45 + mov ecx, 5 + call [<unknown method>] + ; gcr arg pop 0 + mov ecx, dword ptr [rbp-0x44] + inc ecx + mov dword ptr [rbp-0x44], ecx + ;; size=44 bbWeight=4 PerfScore 42.00 +G_M58511_IG40: ; bbWeight=8, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref + cmp dword ptr [rbp-0x44], 40 + jge G_M58511_IG35 + jmp G_M58511_IG24 + ;; size=15 bbWeight=8 PerfScore 40.00 +G_M58511_IG41: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
xorps xmm0, xmm0 movups xmmword ptr [rbp-0x138], xmm0 movups xmmword ptr [rbp-0x128], xmm0 @@ -1371,7 +1437,7 @@ G_M58511_IG35: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs= call [<unknown method>] ; gcr arg pop 0 ;; size=48 bbWeight=1 PerfScore 7.33
-G_M58511_IG36: ; bbWeight=1, nogc, extend
+G_M58511_IG42: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x138] movups xmmword ptr [rbp-0x70], xmm0 movups xmm0, xmmword ptr [rbp-0x128] @@ -1379,7 +1445,7 @@ G_M58511_IG36: ; bbWeight=1, nogc, extend mov rdx, qword ptr [rbp-0x118] mov qword ptr [rbp-0x50], rdx ;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG37: ; bbWeight=1, extend
+G_M58511_IG43: ; bbWeight=1, extend
mov rdx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] @@ -1421,7 +1487,7 @@ G_M58511_IG37: ; bbWeight=1, extend ; gcrRegs -[rdx] ; gcr arg pop 0 ;; size=119 bbWeight=1 PerfScore 43.50
-G_M58511_IG38: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M58511_IG44: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x70] call [<unknown method>] ; gcrRegs +[rax] @@ -1431,12 +1497,9 @@ G_M58511_IG38: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs= call [<unknown method>] ; gcrRegs -[rax rcx] ; gcr arg pop 0
- ;; size=19 bbWeight=1 PerfScore 6.75 -G_M58511_IG39: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref - mov r15d, 1 - jmp G_M58511_IG50 - ;; size=11 bbWeight=1 PerfScore 2.25 -G_M58511_IG40: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ jmp G_M58511_IG34 + ;; size=24 bbWeight=1 PerfScore 8.75 +G_M58511_IG45: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
xorps xmm0, xmm0 movups xmmword ptr [rbp-0x110], xmm0 movups xmmword ptr [rbp-0x100], xmm0 @@ -1447,7 +1510,7 @@ G_M58511_IG40: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs= call [<unknown method>] ; gcr arg pop 0 ;; size=48 bbWeight=1 PerfScore 7.33
-G_M58511_IG41: ; bbWeight=1, nogc, extend
+G_M58511_IG46: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x110] movups xmmword ptr [rbp-0x70], xmm0 movups xmm0, xmmword ptr [rbp-0x100] @@ -1455,7 +1518,7 @@ G_M58511_IG41: ; bbWeight=1, nogc, extend mov rdx, qword ptr [rbp-0xF0] mov qword ptr [rbp-0x50], rdx ;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG42: ; bbWeight=1, extend
+G_M58511_IG47: ; bbWeight=1, extend
mov rdx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] @@ -1489,11 +1552,11 @@ G_M58511_IG42: ; bbWeight=1, extend mov edx, dword ptr [rbp-0x44] call [<unknown method>] ; gcr arg pop 0
- jmp G_M58511_IG38
+ jmp G_M58511_IG44
;; size=97 bbWeight=1 PerfScore 99.00
-G_M58511_IG43: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M58511_IG48: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M58511_IG46
+ jne SHORT G_M58511_IG51
xor ecx, ecx call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs +[rax] @@ -1512,9 +1575,9 @@ G_M58511_IG43: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs= ; gcrRegs +[r13] mov rcx, qword ptr [(reloc)] ; <unknown class> cmp qword ptr [r13], rcx
- je SHORT G_M58511_IG45
+ je SHORT G_M58511_IG50
;; size=48 bbWeight=4 PerfScore 71.00
-G_M58511_IG44: ; bbWeight=2, gcrefRegs=60C8 {rbx rsi rdi r13 r14}, byrefRegs=0000 {}, byref
+G_M58511_IG49: ; bbWeight=2, gcrefRegs=60C8 {rbx rsi rdi r13 r14}, byrefRegs=0000 {}, byref
...

libraries.pmi.windows.x64.checked.mch

-35 (-30.97%) : 200149.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov r8d, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp r8d, eax + jae SHORT G_M3357_IG13
mov r10d, r8d movzx r10, word ptr [rcx+2*r10+0x0C] cmp r10d, 32 je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d cmp eax, r8d jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx] - cmp r8d, eax - jae SHORT G_M3357_IG17 - mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C] - cmp r10d, 32 - je SHORT G_M3357_IG12 - ;; size=20 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r10d, 9 - jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - cmp eax, r8d - jg SHORT G_M3357_IG10 - ;; size=8 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d sub eax, edx ;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-13 (-3.54%) : 88011.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)

@@ -11,12 +11,12 @@ ; V00 this [V00,T05] ( 7, 8 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol> ; V01 arg1 [V01,T10] ( 3, 3 ) ubyte -> rdx single-def ; V02 loc0 [V02,T03] ( 3, 13 ) byref -> rdi single-def
-; V03 loc1 [V03,T00] ( 6, 28 ) ref -> rbp class-hnd <<unknown class>>
+; V03 loc1 [V03,T01] ( 6, 28 ) ref -> rbp class-hnd <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ; V05 loc3 [V05,T02] ( 7, 13.88) ref -> r14 class-hnd exact <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T14] ( 3, 2 ) byref -> rdi
-; V08 tmp2 [V08,T01] ( 4, 24 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T00] ( 4, 32 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> ; V11 tmp5 [V11,T11] ( 4, 4.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder> @@ -39,7 +39,7 @@ ;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref ;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo> ; V30 tmp24 [V30,T04] ( 4, 12 ) long -> rax "Inline stloc first use temp"
-; V31 tmp25 [V31,T06] ( 5, 8 ) ref -> rdx class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
+; V31 tmp25 [V31,T06] ( 4, 10 ) ref -> rdx class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
; V32 tmp26 [V32,T13] ( 2, 2.77) ubyte -> rcx "Inline return value spill temp" ; V33 tmp27 [V33 ] ( 3, 4.15) byref -> [rsp+0x20] must-init pinned "Inline stloc first use temp" ;* V34 tmp28 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -88,16 +88,16 @@ G_M47296_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, G_M47296_IG06: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref mov rcx, qword ptr [rbp+0x08] and rcx, -2
- je G_M47296_IG16
+ je G_M47296_IG17
test cl, 2
- jne G_M47296_IG17
+ jne G_M47296_IG18
call <unknown method> ; gcrRegs +[rax] ; gcr arg pop 0 ;; size=28 bbWeight=2 PerfScore 11.00 G_M47296_IG07: ; bbWeight=2, gcrefRegs=0029 {rax rbx rbp}, byrefRegs=0080 {rdi}, byref test rax, rax
- jne G_M47296_IG15
+ jne G_M47296_IG16
;; size=9 bbWeight=2 PerfScore 2.50 G_M47296_IG08: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref ; gcrRegs -[rax] @@ -121,7 +121,7 @@ G_M47296_IG08: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rd ; gcrRegs -[rax rcx] ; gcr arg pop 0 test rax, rax
- je G_M47296_IG19
+ je G_M47296_IG20
;; size=51 bbWeight=4 PerfScore 32.00 G_M47296_IG09: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref, isz mov qword ptr [r15+0x08], rax @@ -143,17 +143,24 @@ G_M47296_IG10: ; bbWeight=1.38, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRe ; byrRegs +[rdx] mov bword ptr [rsp+0x20], rdx test ecx, ecx
- jne G_M47296_IG20
+ jne G_M47296_IG21
;; size=50 bbWeight=1.38 PerfScore 12.12
-G_M47296_IG11: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
+G_M47296_IG11: ; bbWeight=2, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
; byrRegs -[rdx] xor rdx, rdx ; gcrRegs +[rdx]
+ ;; size=2 bbWeight=2 PerfScore 0.50 +G_M47296_IG12: ; bbWeight=4, gcrefRegs=C02C {rdx rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref, isz
test rdx, rdx
- jne G_M47296_IG21 - ;; size=11 bbWeight=4 PerfScore 6.00 -G_M47296_IG12: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
+ je SHORT G_M47296_IG13 + lea rcx, bword ptr [r15+0x08] + ; byrRegs +[rcx] + call [<unknown method>]
; gcrRegs -[rdx]
+ ; byrRegs -[rcx] + ; gcr arg pop 0 + ;; size=15 bbWeight=4 PerfScore 19.00 +G_M47296_IG13: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
mov rcx, rdi ; byrRegs +[rcx] mov rdx, r15 @@ -167,13 +174,13 @@ G_M47296_IG12: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs= cmp rax, rbp jne G_M47296_IG05 ;; size=23 bbWeight=4 PerfScore 12.00
-G_M47296_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M47296_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx rbp] ; byrRegs -[rdi] mov rax, r14 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47296_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -183,7 +190,7 @@ G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend pop r15 ret ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M47296_IG16: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r14] add rsp, 40 pop rbx @@ -194,14 +201,14 @@ G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, pop r15 ret ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, gcvars, byref
+G_M47296_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs -[rax] +[rbx rbp] ; byrRegs +[rdi] xor rax, rax ; gcrRegs +[rax] jmp G_M47296_IG07 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M47296_IG17: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref, isz
+G_M47296_IG18: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rax] and rcx, -4 call <unknown method> @@ -213,17 +220,17 @@ G_M47296_IG17: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rd call <unknown method> ; gcr arg pop 0 test rax, rax
- jne SHORT G_M47296_IG18
+ jne SHORT G_M47296_IG19
mov rcx, r14 ; gcrRegs +[rcx] call [<unknown method>] ; gcrRegs -[rcx r14] ; gcr arg pop 0 ;; size=35 bbWeight=0 PerfScore 0.00
-G_M47296_IG18: ; bbWeight=0, gcrefRegs=0029 {rax rbx rbp}, byrefRegs=0080 {rdi}, byref
+G_M47296_IG19: ; bbWeight=0, gcrefRegs=0029 {rax rbx rbp}, byrefRegs=0080 {rdi}, byref
jmp G_M47296_IG07 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M47296_IG19: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
+G_M47296_IG20: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rax] +[r14-r15] mov rcx, r14 ; gcrRegs +[rcx] @@ -233,7 +240,7 @@ G_M47296_IG19: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs= ; gcr arg pop 0 jmp G_M47296_IG09 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M47296_IG20: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
+G_M47296_IG21: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
mov rcx, r14 ; gcrRegs +[rcx] call [<unknown method>] @@ -241,21 +248,10 @@ G_M47296_IG20: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs= ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- test rdx, rdx - je G_M47296_IG12 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M47296_IG21: ; bbWeight=0, gcrefRegs=C02C {rdx rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref - ; gcrRegs -[rax] - lea rcx, bword ptr [r15+0x08] - ; byrRegs +[rcx] - call [<unknown method>] - ; gcrRegs -[rdx] - ; byrRegs -[rcx] - ; gcr arg pop 0
jmp G_M47296_IG12
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
-Total bytes of code 367, prolog size 19, PerfScore 128.74, instruction count 106, allocated bytes for code 367 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
+Total bytes of code 354, prolog size 19, PerfScore 142.24, instruction count 104, allocated bytes for code 354 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
; ============================================================ Unwind Info:

-20 (-2.79%) : 258922.dasm - Microsoft.CSharp.CSharpCodeGenerator:System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch(System.CodeDom.Compiler.CompilerParameters,System.String[]):System.CodeDom.Compiler.CompilerResults:this (FullOpts)

@@ -38,14 +38,14 @@ ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.IO.Strategies.FileStreamStrategy> ; V28 tmp21 [V28,T08] ( 2, 16 ) ref -> r12 class-hnd "Inline return value spill temp" <System.IO.Strategies.FileStreamStrategy> ;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.IO.Strategies.AsyncWindowsFileStreamStrategy>
-; V30 tmp23 [V30,T02] ( 3, 48 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.IO.Strategies.SyncWindowsFileStreamStrategy>
+; V30 tmp23 [V30,T03] ( 3, 48 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.IO.Strategies.SyncWindowsFileStreamStrategy>
; V31 tmp24 [V31,T09] ( 2, 16 ) ref -> rdx class-hnd "Inline return value spill temp" <System.IO.Strategies.FileStreamStrategy>
-; V32 tmp25 [V32,T01] ( 4, 64 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.IO.Strategies.BufferedFileStreamStrategy>
+; V32 tmp25 [V32,T02] ( 4, 64 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.IO.Strategies.BufferedFileStreamStrategy>
;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V35 tmp28 [V35,T10] ( 2, 16 ) ref -> rdx class-hnd "Inline return value spill temp" <System.IO.Strategies.FileStreamStrategy> ;* V36 tmp29 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.IO.Strategies.DerivedFileStreamStrategy>
-; V37 tmp30 [V37,T04] ( 5, 44.40) ref -> r14 class-hnd "dup spill" <System.IO.Strategies.FileStreamStrategy>
+; V37 tmp30 [V37,T01] ( 5, 67.60) ref -> r14 class-hnd "dup spill" <System.IO.Strategies.FileStreamStrategy>
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref ; V39 tmp32 [V39,T19] ( 4, 7.18) ref -> r14 class-hnd exact "guarded devirt this exact temp" <System.IO.Strategies.SyncWindowsFileStreamStrategy> ; V40 tmp33 [V40,T20] ( 3, 7.17) ref -> r13 class-hnd exact "dup spill" <System.Threading.ThreadPoolBoundHandle> @@ -60,7 +60,7 @@ ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V24.value (fldOffset=0x4)" P-INDEP ;* V50 tmp43 [V50,T17] ( 0, 0 ) ubyte -> zero-ref "field V26.hasValue (fldOffset=0x0)" P-INDEP ;* V51 tmp44 [V51,T18] ( 0, 0 ) int -> zero-ref "field V26.value (fldOffset=0x4)" P-INDEP
-; V52 tmp45 [V52,T03] ( 3, 48 ) struct ( 8) [rbp-0x48] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V52 tmp45 [V52,T04] ( 3, 48 ) struct ( 8) [rbp-0x48] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V53 tmp46 [V53,T31] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V54 tmp47 [V54,T32] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V55 PSPSym [V55,T25] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" @@ -92,16 +92,16 @@ G_M64848_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=38 bbWeight=1 PerfScore 11.25 G_M64848_IG02: ; bbWeight=1, gcVars=0000000000400000 {V01}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref test rcx, rcx
- je G_M64848_IG19
+ je G_M64848_IG18
test rbx, rbx
- je G_M64848_IG20
+ je G_M64848_IG19
;; size=18 bbWeight=1 PerfScore 2.50 G_M64848_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] xor esi, esi mov edi, dword ptr [rbx+0x08] test edi, edi
- jle G_M64848_IG12
+ jle G_M64848_IG09
;; size=13 bbWeight=1 PerfScore 3.50 G_M64848_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov eax, esi @@ -145,7 +145,7 @@ G_M64848_IG06: ; bbWeight=8, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs= mov qword ptr [rsp+0x30], rdx mov byte ptr [rbp-0x48], 0 ;; size=9 bbWeight=8 PerfScore 16.00
-G_M64848_IG07: ; bbWeight=8, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M64848_IG07: ; bbWeight=8, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x44], edx mov rdx, qword ptr [rbp-0x48] mov qword ptr [rsp+0x38], rdx @@ -184,20 +184,47 @@ G_M64848_IG07: ; bbWeight=8, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs= mov r14, rcx ; gcrRegs +[r14] cmp qword ptr [r14], r13
- jne G_M64848_IG17 - ;; size=102 bbWeight=8 PerfScore 154.00 -G_M64848_IG08: ; bbWeight=1.80, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ je SHORT G_M64848_IG10 + mov rcx, r14 + mov edx, 1 + mov rax, qword ptr [r14] + mov rax, qword ptr [rax+0x58] + call [rax+0x20]<unknown method> + ; gcrRegs -[rcx r14] + ; gcr arg pop 0 + ;; size=116 bbWeight=8 PerfScore 214.00 +G_M64848_IG08: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + mov rcx, r15 + ; gcrRegs +[rcx] + call <unknown method> + ; gcrRegs -[rcx r15] + ; gcr arg pop 0 + inc esi + cmp edi, esi + jg G_M64848_IG04 + ;; size=18 bbWeight=8 PerfScore 22.00 +G_M64848_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp+0x18] + ; gcrRegs +[rcx] + mov rdx, rbx + ; gcrRegs +[rdx] + call [Microsoft.CSharp.CSharpCodeGenerator:FromFileBatch(System.CodeDom.Compiler.CompilerParameters,System.String[]):System.CodeDom.Compiler.CompilerResults] + ; gcrRegs -[rcx rdx rbx] +[rax] + ; gcr arg pop 0 + int3 + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M64848_IG10: ; bbWeight=1.80, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] +[rbx r14-r15]
mov rcx, gword ptr [r14+0x18] ; gcrRegs +[rcx] test rcx, rcx
- je G_M64848_IG18 - ;; size=13 bbWeight=1.80 PerfScore 5.85 -G_M64848_IG09: ; bbWeight=1.80, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref
+ je SHORT G_M64848_IG08 + ;; size=9 bbWeight=1.80 PerfScore 5.85 +G_M64848_IG11: ; bbWeight=1.80, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test byte ptr [rcx+0x18], 1
- jne G_M64848_IG18 - ;; size=10 bbWeight=1.80 PerfScore 7.19 -G_M64848_IG10: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M64848_IG08 + ;; size=6 bbWeight=1.80 PerfScore 7.19 +G_M64848_IG12: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, gword ptr [r14+0x18] ; gcrRegs +[rcx] @@ -206,9 +233,9 @@ G_M64848_IG10: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 mov r12, r13 ; gcrRegs +[r12] test r12, r12
- jne SHORT G_M64848_IG13
+ jne SHORT G_M64848_IG14
;; size=16 bbWeight=1.79 PerfScore 9.86
-G_M64848_IG11: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M64848_IG13: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx r12-r13] mov r12, gword ptr [r14+0x18] ; gcrRegs +[r12] @@ -224,45 +251,34 @@ G_M64848_IG11: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 call <unknown method> ; gcrRegs -[rcx r12] ; gcr arg pop 0
- jmp G_M64848_IG18 - ;; size=33 bbWeight=1.79 PerfScore 21.06 -G_M64848_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[r15] - mov rcx, gword ptr [rbp+0x18] - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [Microsoft.CSharp.CSharpCodeGenerator:FromFileBatch(System.CodeDom.Compiler.CompilerParameters,System.String[]):System.CodeDom.Compiler.CompilerResults] - ; gcrRegs -[rcx rdx rbx] +[rax] - ; gcr arg pop 0 - int3 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M64848_IG13: ; bbWeight=0, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] +[rbx r12-r15]
+ jmp SHORT G_M64848_IG08 + ;; size=30 bbWeight=1.79 PerfScore 21.06 +G_M64848_IG14: ; bbWeight=0, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r12-r14]
mov rcx, 0xD1FFAB1E mov edx, 819 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE ; gcr arg pop 0 cmp byte ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- je SHORT G_M64848_IG16
+ je SHORT G_M64848_IG17
lea rcx, bword ptr [r12+0x1C] ; byrRegs +[rcx] ;; size=34 bbWeight=0 PerfScore 0.00
-G_M64848_IG14: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0002 {rcx}, byref, isz
+G_M64848_IG15: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0002 {rcx}, byref, isz
; gcrRegs -[r13] mov eax, dword ptr [rcx] mov dword ptr [rbp-0x3C], eax test eax, eax
- jl SHORT G_M64848_IG15
+ jl SHORT G_M64848_IG16
mov r11d, eax neg r11d dec r11d lock cmpxchg dword ptr [rcx], r11d cmp eax, dword ptr [rbp-0x3C]
- jne SHORT G_M64848_IG14 - cmp r11d, -1
jne SHORT G_M64848_IG15
+ cmp r11d, -1 + jne SHORT G_M64848_IG16
mov rcx, r12 ; gcrRegs +[rcx] ; byrRegs -[rcx] @@ -272,43 +288,21 @@ G_M64848_IG14: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs= ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=55 bbWeight=0 PerfScore 0.00
-G_M64848_IG15: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M64848_IG16: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, r12 ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx r12] ; gcr arg pop 0
- jmp G_M64848_IG11
+ jmp G_M64848_IG13
;; size=13 bbWeight=0 PerfScore 0.00
-G_M64848_IG16: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M64848_IG17: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r13] mov byte ptr [r13+0x18], 1
- jmp G_M64848_IG11
+ jmp G_M64848_IG13
;; size=10 bbWeight=0 PerfScore 0.00
-G_M64848_IG17: ; bbWeight=2.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13] - mov rcx, r14 - ; gcrRegs +[rcx] - mov edx, 1 - mov rax, qword ptr [r14] - mov rax, qword ptr [rax+0x58] - call [rax+0x20]<unknown method> - ; gcrRegs -[rcx r14] - ; gcr arg pop 0 - ;; size=18 bbWeight=2.20 PerfScore 16.49 -G_M64848_IG18: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rcx, r15 - ; gcrRegs +[rcx] - call <unknown method> - ; gcrRegs -[rcx r15] - ; gcr arg pop 0 - inc esi - cmp edi, esi - jle G_M64848_IG12 - jmp G_M64848_IG04 - ;; size=23 bbWeight=8 PerfScore 38.00 -G_M64848_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx]
+G_M64848_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rbx r13-r15]
; GC ptr vars -{V01} mov rcx, 0xD1FFAB1E ; System.ArgumentNullException call CORINFO_HELP_NEWSFAST @@ -333,7 +327,7 @@ G_M64848_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[rcx r13] ; gcr arg pop 0 ;; size=58 bbWeight=0 PerfScore 0.00
-G_M64848_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64848_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.ArgumentNullException call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -358,7 +352,7 @@ G_M64848_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=59 bbWeight=0 PerfScore 0.00
-G_M64848_IG21: ; bbWeight=0, gcVars=0000000000400000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M64848_IG20: ; bbWeight=0, gcVars=0000000000400000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V01 V22} push rbp push r15 @@ -373,7 +367,7 @@ G_M64848_IG21: ; bbWeight=0, gcVars=0000000000400000 {V01}, gcrefRegs=000 ...

+48 (+6.11%) : 142772.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper2[ubyte,System.Nullable1[int]]:IntroSort(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment1[ubyte],System.Span1[System.Nullable`1[int]],int) (FullOpts)

@@ -9,14 +9,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 23, 82 ) byref -> rbx ld-addr-op single-def
-; V01 arg1 [V01,T17] ( 4, 8 ) byref -> rdx ld-addr-op single-def
+; V01 arg1 [V01,T18] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T06] ( 6, 18 ) int -> rsi
-; V03 loc0 [V03,T02] ( 21, 39.50) int -> r14 -; V04 loc1 [V04,T14] ( 3, 12 ) int -> r15
+; V03 loc0 [V03,T01] ( 23, 44 ) int -> r14 +; V04 loc1 [V04,T15] ( 3, 12 ) int -> r15
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06 ] ( 5, 40 ) struct (24) [rsp+0x98] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
-; V08 tmp3 [V08,T01] ( 5, 40 ) struct (24) [rsp+0x80] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
+; V08 tmp3 [V08,T02] ( 5, 40 ) struct (24) [rsp+0x80] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]> ; V10 tmp5 [V10 ] ( 5, 5 ) struct (24) [rsp+0x68] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]> ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]> @@ -55,7 +55,7 @@ ;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp40 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V46 tmp41 [V46,T07] ( 9, 12 ) byref -> rdi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V47 tmp42 [V47,T13] ( 9, 12 ) int -> rbp single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V47 tmp42 [V47,T14] ( 9, 12 ) int -> rbp single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V50 tmp45 [V50 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP @@ -68,18 +68,18 @@ ; V57 tmp52 [V57,T33] ( 2, 1 ) int -> rdx single-def "field V14._length (fldOffset=0x8)" P-INDEP ; V58 tmp53 [V58,T30] ( 2, 1 ) byref -> rdi single-def "field V17._reference (fldOffset=0x0)" P-INDEP ; V59 tmp54 [V59,T34] ( 2, 1 ) int -> rdx single-def "field V17._length (fldOffset=0x8)" P-INDEP
-; V60 tmp55 [V60,T31] ( 2, 1 ) ref -> rdx single-def "field V21._items (fldOffset=0x0)" P-INDEP -; V61 tmp56 [V61,T35] ( 2, 1 ) int -> rcx single-def "field V21._length (fldOffset=0x8)" P-INDEP
+; V60 tmp55 [V60,T31] ( 2, 1 ) ref -> rcx single-def "field V21._items (fldOffset=0x0)" P-INDEP +; V61 tmp56 [V61,T35] ( 2, 1 ) int -> rdx single-def "field V21._length (fldOffset=0x8)" P-INDEP
; V62 tmp57 [V62,T32] ( 2, 1 ) byref -> rdx single-def "field V24._reference (fldOffset=0x0)" P-INDEP ; V63 tmp58 [V63,T36] ( 2, 1 ) int -> rcx single-def "field V24._length (fldOffset=0x8)" P-INDEP
-; V64 tmp59 [V64,T18] ( 2, 8 ) ref -> rdx "field V28._items (fldOffset=0x0)" P-INDEP -; V65 tmp60 [V65,T21] ( 2, 8 ) int -> rcx "field V28._length (fldOffset=0x8)" P-INDEP
+; V64 tmp59 [V64,T19] ( 2, 8 ) ref -> rcx "field V28._items (fldOffset=0x0)" P-INDEP +; V65 tmp60 [V65,T22] ( 2, 8 ) int -> rdx "field V28._length (fldOffset=0x8)" P-INDEP
;* V66 tmp61 [V66,T26] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
-; V67 tmp62 [V67,T22] ( 2, 8 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP -; V68 tmp63 [V68,T19] ( 2, 8 ) ref -> r10 "field V37._items (fldOffset=0x0)" P-INDEP -; V69 tmp64 [V69,T23] ( 2, 8 ) int -> r9 "field V37._length (fldOffset=0x8)" P-INDEP -; V70 tmp65 [V70,T20] ( 2, 8 ) byref -> r13 "field V42._reference (fldOffset=0x0)" P-INDEP -; V71 tmp66 [V71,T24] ( 2, 8 ) int -> r14 "field V42._length (fldOffset=0x8)" P-INDEP
+; V67 tmp62 [V67,T23] ( 2, 8 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP +; V68 tmp63 [V68,T20] ( 2, 8 ) ref -> r10 "field V37._items (fldOffset=0x0)" P-INDEP +; V69 tmp64 [V69,T24] ( 2, 8 ) int -> r9 "field V37._length (fldOffset=0x8)" P-INDEP +; V70 tmp65 [V70,T21] ( 2, 8 ) byref -> r13 "field V42._reference (fldOffset=0x0)" P-INDEP +; V71 tmp66 [V71,T25] ( 2, 8 ) int -> r14 "field V42._length (fldOffset=0x8)" P-INDEP
;* V72 tmp67 [V72 ] ( 0, 0 ) int -> zero-ref "V15.[000..004)" ;* V73 tmp68 [V73 ] ( 0, 0 ) int -> zero-ref "V15.[004..008)" ;* V74 tmp69 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "V15.[008..016)" @@ -99,10 +99,10 @@ ;* V88 tmp83 [V88 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Nullable`1[int]]> ; V89 tmp84 [V89 ] ( 24, 66 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[System.Nullable`1[int]]> ; V90 tmp85 [V90 ] ( 6, 20 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
-; V91 cse0 [V91,T15] ( 3, 12 ) int -> r14 "CSE - moderate" -; V92 cse1 [V92,T16] ( 3, 12 ) long -> r8 "CSE - moderate"
+; V91 cse0 [V91,T16] ( 3, 12 ) int -> r14 "CSE - moderate" +; V92 cse1 [V92,T17] ( 3, 12 ) long -> r8 "CSE - moderate"
; V93 cse2 [V93,T08] ( 4, 16 ) int -> rcx "CSE - aggressive"
-; V94 cse3 [V94,T25] ( 6, 7.50) ref -> rdx multi-def "CSE - moderate"
+; V94 cse3 [V94,T13] ( 12, 15 ) ref -> rdx multi-def "CSE - aggressive"
; ; Lcl frame size = 176 @@ -134,29 +134,42 @@ G_M23383_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, mov ebp, dword ptr [rdx+0x08] mov r14d, dword ptr [rbx+0x04] cmp r14d, 1
- jle G_M23383_IG17
+ jle G_M23383_IG20
;; size=20 bbWeight=1 PerfScore 7.25 G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz ; byrRegs -[rdx] cmp r14d, 16
- jle G_M23383_IG08
+ jle G_M23383_IG10
test esi, esi
- je G_M23383_IG16
+ je G_M23383_IG18
dec esi cmp r14d, dword ptr [rbx+0x04]
- ja G_M23383_IG19 - mov rdx, gword ptr [rbx+0x08] - ; gcrRegs +[rdx] - mov ecx, dword ptr [rbx+0x10]
+ ja G_M23383_IG22 + mov rcx, gword ptr [rbx+0x08] + ; gcrRegs +[rcx] + mov edx, dword ptr [rbx+0x10]
mov eax, dword ptr [rbx] mov dword ptr [rsp+0x98], eax mov dword ptr [rsp+0x9C], r14d
- mov gword ptr [rsp+0xA0], rdx - mov dword ptr [rsp+0xA8], ecx
+ mov gword ptr [rsp+0xA0], rcx + mov dword ptr [rsp+0xA8], edx
cmp r14d, ebp
- ja G_M23383_IG20
+ ja G_M23383_IG23 + test r14d, r14d + jge SHORT G_M23383_IG05 + ;; size=83 bbWeight=4 PerfScore 77.00 +G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref + ; gcrRegs -[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + mov rcx, rdx + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M23383_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
mov edx, r14d
- ; gcrRegs -[rdx]
mov bword ptr [rsp+0x40], rdi mov dword ptr [rsp+0x48], edx lea rdx, [rsp+0x40] @@ -173,7 +186,7 @@ G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, add r8, r10 mov r10d, dword ptr [rbx+0x04] cmp r8, r10
- ja G_M23383_IG19
+ ja G_M23383_IG22
mov r10, gword ptr [rbx+0x08] ; gcrRegs +[r10] mov r9d, dword ptr [rbx+0x10] @@ -184,13 +197,13 @@ G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, mov dword ptr [rsp+0x90], r9d mov edx, ebp cmp r8, rdx
- ja G_M23383_IG20
+ ja G_M23383_IG23
lea r13, bword ptr [rdi+8*rcx] ; byrRegs +[r13] test r14d, r14d
- jge SHORT G_M23383_IG05 - ;; size=206 bbWeight=4 PerfScore 176.00 -G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref
+ jge SHORT G_M23383_IG07 + ;; size=128 bbWeight=4 PerfScore 104.00 +G_M23383_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref
; gcrRegs -[r10] mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] @@ -200,13 +213,13 @@ G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=2 PerfScore 7.00
-G_M23383_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref, nogc
+G_M23383_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref, nogc
vmovdqu xmm0, xmmword ptr [rsp+0x80] vmovdqu xmmword ptr [rsp+0x28], xmm0 mov rcx, qword ptr [rsp+0x90] mov qword ptr [rsp+0x38], rcx ;; size=28 bbWeight=4 PerfScore 24.00
-G_M23383_IG06: ; bbWeight=4, extend
+G_M23383_IG08: ; bbWeight=4, extend
mov bword ptr [rsp+0x40], r13 mov dword ptr [rsp+0x48], r14d lea rcx, [rsp+0x28] @@ -219,14 +232,14 @@ G_M23383_IG06: ; bbWeight=4, extend cmp r14d, 1 jg G_M23383_IG03 ;; size=42 bbWeight=4 PerfScore 31.00
-G_M23383_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23383_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rdi]
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=5 bbWeight=1 PerfScore 2.00
-G_M23383_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M23383_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs +[rbx rdi] cmp r14d, 2
- jne SHORT G_M23383_IG09
+ jne SHORT G_M23383_IG11
mov bword ptr [rsp+0x40], rdi mov dword ptr [rsp+0x48], ebp lea rdx, [rsp+0x40] @@ -237,20 +250,20 @@ G_M23383_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd call [<unknown method>] ; byrRegs -[rcx rbx rdi] ; gcr arg pop 0
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=43 bbWeight=0.50 PerfScore 4.75
-G_M23383_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+G_M23383_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
; byrRegs +[rbx rdi] cmp r14d, 3
- jne G_M23383_IG14
+ jne G_M23383_IG16
;; size=10 bbWeight=0.50 PerfScore 0.62
-G_M23383_IG10: ; bbWeight=0.50, nogc, extend
+G_M23383_IG12: ; bbWeight=0.50, nogc, extend
vmovdqu xmm0, xmmword ptr [rbx] vmovdqu xmmword ptr [rsp+0x28], xmm0 mov rcx, qword ptr [rbx+0x10] mov qword ptr [rsp+0x38], rcx ;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M23383_IG11: ; bbWeight=0.50, extend
+G_M23383_IG13: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x40], rdi mov dword ptr [rsp+0x48], ebp lea rcx, [rsp+0x28] @@ -260,13 +273,13 @@ G_M23383_IG11: ; bbWeight=0.50, extend call [<unknown method>] ; gcr arg pop 0 ;; size=34 bbWeight=0.50 PerfScore 3.25
-G_M23383_IG12: ; bbWeight=0.50, nogc, extend
+G_M23383_IG14: ; bbWeight=0.50, nogc, extend
vmovdqu xmm0, xmmword ptr [rbx] vmovdqu xmmword ptr [rsp+0x28], xmm0 mov rcx, qword ptr [rbx+0x10] mov qword ptr [rsp+0x38], rcx ;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M23383_IG13: ; bbWeight=0.50, extend
+G_M23383_IG15: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x40], rdi mov dword ptr [rsp+0x48], ebp lea rcx, [rsp+0x28] @@ -285,12 +298,12 @@ G_M23383_IG13: ; bbWeight=0.50, extend call [<unknown method>] ; byrRegs -[rcx rbx rdi] ; gcr arg pop 0
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=74 bbWeight=0.50 PerfScore 7.38
-G_M23383_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M23383_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs +[rbx rdi] cmp r14d, dword ptr [rbx+0x04]
- ja G_M23383_IG19
+ ja G_M23383_IG22
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov edx, dword ptr [rbx+0x10] @@ -300,9 +313,9 @@ G_M23383_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd mov gword ptr [rsp+0x58], rcx mov dword ptr [rsp+0x60], edx cmp r14d, ebp
- ja G_M23383_IG20
+ ja G_M23383_IG23
...

+48 (+6.11%) : 178412.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper2[ubyte,System.Nullable1[int]]:IntroSort(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment1[ubyte],System.Span1[System.Nullable`1[int]],int) (FullOpts)

@@ -9,14 +9,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 23, 82 ) byref -> rbx ld-addr-op single-def
-; V01 arg1 [V01,T17] ( 4, 8 ) byref -> rdx ld-addr-op single-def
+; V01 arg1 [V01,T18] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T06] ( 6, 18 ) int -> rsi
-; V03 loc0 [V03,T02] ( 21, 39.50) int -> r14 -; V04 loc1 [V04,T14] ( 3, 12 ) int -> r15
+; V03 loc0 [V03,T01] ( 23, 44 ) int -> r14 +; V04 loc1 [V04,T15] ( 3, 12 ) int -> r15
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06 ] ( 5, 40 ) struct (24) [rsp+0x98] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
-; V08 tmp3 [V08,T01] ( 5, 40 ) struct (24) [rsp+0x80] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
+; V08 tmp3 [V08,T02] ( 5, 40 ) struct (24) [rsp+0x80] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]> ; V10 tmp5 [V10 ] ( 5, 5 ) struct (24) [rsp+0x68] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]> ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]> @@ -55,7 +55,7 @@ ;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp40 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V46 tmp41 [V46,T07] ( 9, 12 ) byref -> rdi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V47 tmp42 [V47,T13] ( 9, 12 ) int -> rbp single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V47 tmp42 [V47,T14] ( 9, 12 ) int -> rbp single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V50 tmp45 [V50 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP @@ -68,18 +68,18 @@ ; V57 tmp52 [V57,T33] ( 2, 1 ) int -> rdx single-def "field V14._length (fldOffset=0x8)" P-INDEP ; V58 tmp53 [V58,T30] ( 2, 1 ) byref -> rdi single-def "field V17._reference (fldOffset=0x0)" P-INDEP ; V59 tmp54 [V59,T34] ( 2, 1 ) int -> rdx single-def "field V17._length (fldOffset=0x8)" P-INDEP
-; V60 tmp55 [V60,T31] ( 2, 1 ) ref -> rdx single-def "field V21._items (fldOffset=0x0)" P-INDEP -; V61 tmp56 [V61,T35] ( 2, 1 ) int -> rcx single-def "field V21._length (fldOffset=0x8)" P-INDEP
+; V60 tmp55 [V60,T31] ( 2, 1 ) ref -> rcx single-def "field V21._items (fldOffset=0x0)" P-INDEP +; V61 tmp56 [V61,T35] ( 2, 1 ) int -> rdx single-def "field V21._length (fldOffset=0x8)" P-INDEP
; V62 tmp57 [V62,T32] ( 2, 1 ) byref -> rdx single-def "field V24._reference (fldOffset=0x0)" P-INDEP ; V63 tmp58 [V63,T36] ( 2, 1 ) int -> rcx single-def "field V24._length (fldOffset=0x8)" P-INDEP
-; V64 tmp59 [V64,T18] ( 2, 8 ) ref -> rdx "field V28._items (fldOffset=0x0)" P-INDEP -; V65 tmp60 [V65,T21] ( 2, 8 ) int -> rcx "field V28._length (fldOffset=0x8)" P-INDEP
+; V64 tmp59 [V64,T19] ( 2, 8 ) ref -> rcx "field V28._items (fldOffset=0x0)" P-INDEP +; V65 tmp60 [V65,T22] ( 2, 8 ) int -> rdx "field V28._length (fldOffset=0x8)" P-INDEP
;* V66 tmp61 [V66,T26] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
-; V67 tmp62 [V67,T22] ( 2, 8 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP -; V68 tmp63 [V68,T19] ( 2, 8 ) ref -> r10 "field V37._items (fldOffset=0x0)" P-INDEP -; V69 tmp64 [V69,T23] ( 2, 8 ) int -> r9 "field V37._length (fldOffset=0x8)" P-INDEP -; V70 tmp65 [V70,T20] ( 2, 8 ) byref -> r13 "field V42._reference (fldOffset=0x0)" P-INDEP -; V71 tmp66 [V71,T24] ( 2, 8 ) int -> r14 "field V42._length (fldOffset=0x8)" P-INDEP
+; V67 tmp62 [V67,T23] ( 2, 8 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP +; V68 tmp63 [V68,T20] ( 2, 8 ) ref -> r10 "field V37._items (fldOffset=0x0)" P-INDEP +; V69 tmp64 [V69,T24] ( 2, 8 ) int -> r9 "field V37._length (fldOffset=0x8)" P-INDEP +; V70 tmp65 [V70,T21] ( 2, 8 ) byref -> r13 "field V42._reference (fldOffset=0x0)" P-INDEP +; V71 tmp66 [V71,T25] ( 2, 8 ) int -> r14 "field V42._length (fldOffset=0x8)" P-INDEP
;* V72 tmp67 [V72 ] ( 0, 0 ) int -> zero-ref "V15.[000..004)" ;* V73 tmp68 [V73 ] ( 0, 0 ) int -> zero-ref "V15.[004..008)" ;* V74 tmp69 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "V15.[008..016)" @@ -99,10 +99,10 @@ ;* V88 tmp83 [V88 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Nullable`1[int]]> ; V89 tmp84 [V89 ] ( 24, 66 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[System.Nullable`1[int]]> ; V90 tmp85 [V90 ] ( 6, 20 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
-; V91 cse0 [V91,T15] ( 3, 12 ) int -> r14 "CSE - moderate" -; V92 cse1 [V92,T16] ( 3, 12 ) long -> r8 "CSE - moderate"
+; V91 cse0 [V91,T16] ( 3, 12 ) int -> r14 "CSE - moderate" +; V92 cse1 [V92,T17] ( 3, 12 ) long -> r8 "CSE - moderate"
; V93 cse2 [V93,T08] ( 4, 16 ) int -> rcx "CSE - aggressive"
-; V94 cse3 [V94,T25] ( 6, 7.50) ref -> rdx multi-def "CSE - moderate"
+; V94 cse3 [V94,T13] ( 12, 15 ) ref -> rdx multi-def "CSE - aggressive"
; ; Lcl frame size = 176 @@ -134,29 +134,42 @@ G_M23383_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, mov ebp, dword ptr [rdx+0x08] mov r14d, dword ptr [rbx+0x04] cmp r14d, 1
- jle G_M23383_IG17
+ jle G_M23383_IG20
;; size=20 bbWeight=1 PerfScore 7.25 G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz ; byrRegs -[rdx] cmp r14d, 16
- jle G_M23383_IG08
+ jle G_M23383_IG10
test esi, esi
- je G_M23383_IG16
+ je G_M23383_IG18
dec esi cmp r14d, dword ptr [rbx+0x04]
- ja G_M23383_IG19 - mov rdx, gword ptr [rbx+0x08] - ; gcrRegs +[rdx] - mov ecx, dword ptr [rbx+0x10]
+ ja G_M23383_IG22 + mov rcx, gword ptr [rbx+0x08] + ; gcrRegs +[rcx] + mov edx, dword ptr [rbx+0x10]
mov eax, dword ptr [rbx] mov dword ptr [rsp+0x98], eax mov dword ptr [rsp+0x9C], r14d
- mov gword ptr [rsp+0xA0], rdx - mov dword ptr [rsp+0xA8], ecx
+ mov gword ptr [rsp+0xA0], rcx + mov dword ptr [rsp+0xA8], edx
cmp r14d, ebp
- ja G_M23383_IG20
+ ja G_M23383_IG23 + test r14d, r14d + jge SHORT G_M23383_IG05 + ;; size=83 bbWeight=4 PerfScore 77.00 +G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref + ; gcrRegs -[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + mov rcx, rdx + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=19 bbWeight=2 PerfScore 7.00 +G_M23383_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
mov edx, r14d
- ; gcrRegs -[rdx]
mov bword ptr [rsp+0x40], rdi mov dword ptr [rsp+0x48], edx lea rdx, [rsp+0x40] @@ -173,7 +186,7 @@ G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, add r8, r10 mov r10d, dword ptr [rbx+0x04] cmp r8, r10
- ja G_M23383_IG19
+ ja G_M23383_IG22
mov r10, gword ptr [rbx+0x08] ; gcrRegs +[r10] mov r9d, dword ptr [rbx+0x10] @@ -184,13 +197,13 @@ G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, mov dword ptr [rsp+0x90], r9d mov edx, ebp cmp r8, rdx
- ja G_M23383_IG20
+ ja G_M23383_IG23
lea r13, bword ptr [rdi+8*rcx] ; byrRegs +[r13] test r14d, r14d
- jge SHORT G_M23383_IG05 - ;; size=206 bbWeight=4 PerfScore 176.00 -G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref
+ jge SHORT G_M23383_IG07 + ;; size=128 bbWeight=4 PerfScore 104.00 +G_M23383_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref
; gcrRegs -[r10] mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] @@ -200,13 +213,13 @@ G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=2 PerfScore 7.00
-G_M23383_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref, nogc
+G_M23383_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref, nogc
vmovdqu xmm0, xmmword ptr [rsp+0x80] vmovdqu xmmword ptr [rsp+0x28], xmm0 mov rcx, qword ptr [rsp+0x90] mov qword ptr [rsp+0x38], rcx ;; size=28 bbWeight=4 PerfScore 24.00
-G_M23383_IG06: ; bbWeight=4, extend
+G_M23383_IG08: ; bbWeight=4, extend
mov bword ptr [rsp+0x40], r13 mov dword ptr [rsp+0x48], r14d lea rcx, [rsp+0x28] @@ -219,14 +232,14 @@ G_M23383_IG06: ; bbWeight=4, extend cmp r14d, 1 jg G_M23383_IG03 ;; size=42 bbWeight=4 PerfScore 31.00
-G_M23383_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23383_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rdi]
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=5 bbWeight=1 PerfScore 2.00
-G_M23383_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M23383_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs +[rbx rdi] cmp r14d, 2
- jne SHORT G_M23383_IG09
+ jne SHORT G_M23383_IG11
mov bword ptr [rsp+0x40], rdi mov dword ptr [rsp+0x48], ebp lea rdx, [rsp+0x40] @@ -237,20 +250,20 @@ G_M23383_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd call [<unknown method>] ; byrRegs -[rcx rbx rdi] ; gcr arg pop 0
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=43 bbWeight=0.50 PerfScore 4.75
-G_M23383_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+G_M23383_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
; byrRegs +[rbx rdi] cmp r14d, 3
- jne G_M23383_IG14
+ jne G_M23383_IG16
;; size=10 bbWeight=0.50 PerfScore 0.62
-G_M23383_IG10: ; bbWeight=0.50, nogc, extend
+G_M23383_IG12: ; bbWeight=0.50, nogc, extend
vmovdqu xmm0, xmmword ptr [rbx] vmovdqu xmmword ptr [rsp+0x28], xmm0 mov rcx, qword ptr [rbx+0x10] mov qword ptr [rsp+0x38], rcx ;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M23383_IG11: ; bbWeight=0.50, extend
+G_M23383_IG13: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x40], rdi mov dword ptr [rsp+0x48], ebp lea rcx, [rsp+0x28] @@ -260,13 +273,13 @@ G_M23383_IG11: ; bbWeight=0.50, extend call [<unknown method>] ; gcr arg pop 0 ;; size=34 bbWeight=0.50 PerfScore 3.25
-G_M23383_IG12: ; bbWeight=0.50, nogc, extend
+G_M23383_IG14: ; bbWeight=0.50, nogc, extend
vmovdqu xmm0, xmmword ptr [rbx] vmovdqu xmmword ptr [rsp+0x28], xmm0 mov rcx, qword ptr [rbx+0x10] mov qword ptr [rsp+0x38], rcx ;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M23383_IG13: ; bbWeight=0.50, extend
+G_M23383_IG15: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x40], rdi mov dword ptr [rsp+0x48], ebp lea rcx, [rsp+0x28] @@ -285,12 +298,12 @@ G_M23383_IG13: ; bbWeight=0.50, extend call [<unknown method>] ; byrRegs -[rcx rbx rdi] ; gcr arg pop 0
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=74 bbWeight=0.50 PerfScore 7.38
-G_M23383_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M23383_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs +[rbx rdi] cmp r14d, dword ptr [rbx+0x04]
- ja G_M23383_IG19
+ ja G_M23383_IG22
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov edx, dword ptr [rbx+0x10] @@ -300,9 +313,9 @@ G_M23383_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd mov gword ptr [rsp+0x58], rcx mov dword ptr [rsp+0x60], edx cmp r14d, ebp
- ja G_M23383_IG20
+ ja G_M23383_IG23
...

+45 (+52.33%) : 27574.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)

@@ -8,73 +8,100 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 4, 10 ) ref -> rcx this class-hnd single-def <System.Buffers.Latin1CharSearchValues>
+; V00 this [V00,T04] ( 4, 10 ) ref -> rbx this class-hnd single-def <System.Buffers.Latin1CharSearchValues>
; V01 arg1 [V01,T05] ( 4, 8 ) byref -> rdx single-def ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T01] ( 5, 17 ) int -> r8 -; V04 loc2 [V04,T02] ( 4, 16 ) ushort -> r10
+; V03 loc1 [V03,T02] ( 5, 17 ) int -> rbp +; V04 loc2 [V04,T01] ( 5, 20 ) ushort -> r14
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 2, 8 ) int -> r11 "Inline stloc first use temp" -; V07 tmp2 [V07,T07] ( 2, 8 ) int -> r10 "Inline stloc first use temp" -; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r9 "Inlining Arg" -; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r9 "dup spill"
+; V06 tmp1 [V06,T06] ( 2, 8 ) int -> rax "Inline stloc first use temp" +; V07 tmp2 [V07,T07] ( 2, 8 ) int -> rcx "Inline stloc first use temp" +; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r15 "Inlining Arg" +; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> rax "dup spill"
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP ;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp9 [V14,T09] ( 2, 5 ) byref -> rax single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V15 tmp10 [V15,T08] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp9 [V14,T10] ( 2, 5 ) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V15 tmp10 [V15,T09] ( 3, 6 ) int -> rdi "field V02._length (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
+; V17 cse0 [V17,T08] ( 3, 6 ) ref -> rdx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M159_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, 32 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M159_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz - ; gcrRegs +[rcx]
+ sub rsp, 40 + mov rbx, rcx + ; gcrRegs +[rbx] + ;; size=15 bbWeight=1 PerfScore 6.50 +G_M159_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx]
- mov rax, bword ptr [rdx] - ; byrRegs +[rax] - mov edx, dword ptr [rdx+0x08]
+ mov rsi, bword ptr [rdx] + ; byrRegs +[rsi] + mov edi, dword ptr [rdx+0x08] + xor ebp, ebp + test edi, edi + jle SHORT G_M159_IG06 + ;; size=12 bbWeight=1 PerfScore 5.50 +G_M159_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs -[rdx]
- xor r8d, r8d - test edx, edx - jle SHORT G_M159_IG04 - ;; size=13 bbWeight=1 PerfScore 5.50 -G_M159_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0001 {rax}, byref, isz - mov r10d, r8d - movzx r10, word ptr [rax+2*r10] - cmp r10d, 255 - jg SHORT G_M159_IG05 - cmp byte ptr [rcx], cl - lea r9, bword ptr [rcx+0x08] - ; byrRegs +[r9] - mov r11d, r10d - sar r11d, 5 - mov ebx, 1 - shlx r10d, ebx, r10d - lea r9, bword ptr [r9+4*r11] - or dword ptr [r9], r10d - inc r8d - cmp r8d, edx
+ mov ecx, ebp + movzx r14, word ptr [rsi+2*rcx] + cmp r14d, 255 + jg SHORT G_M159_IG07 + cmp byte ptr [rbx], bl + lea r15, bword ptr [rbx+0x08] + ; byrRegs +[r15] + cmp r14d, 256 + jl SHORT G_M159_IG05 + ;; size=31 bbWeight=4 PerfScore 33.00 +G_M159_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=8040 {rsi r15}, byref + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + mov rcx, rdx + ; gcrRegs +[rcx] + mov rax, 0xD1FFAB1E ; code for <unknown method> + call [rax]<unknown method> + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=25 bbWeight=2 PerfScore 7.50 +G_M159_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=8040 {rsi r15}, byref, isz + mov eax, r14d + sar eax, 5 + mov ecx, 1 + shlx ecx, ecx, r14d + lea rax, bword ptr [r15+4*rax] + ; byrRegs +[rax] + or dword ptr [rax], ecx + inc ebp + cmp ebp, edi
jl SHORT G_M159_IG03
- ;; size=55 bbWeight=4 PerfScore 54.00 -G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rcx] - ; byrRegs -[rax r9] - add rsp, 32
+ ;; size=28 bbWeight=4 PerfScore 26.00 +G_M159_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx] + ; byrRegs -[rax rsi r15] + add rsp, 40
pop rbx
+ pop rbp + pop rsi + pop rdi + pop r14 + pop r15
ret
- ;; size=6 bbWeight=1 PerfScore 1.75 -G_M159_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=1 PerfScore 4.25 +G_M159_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 86, prolog size 5, PerfScore 62.50, instruction count 27, allocated bytes for code 86 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
+Total bytes of code 131, prolog size 15, PerfScore 82.75, instruction count 44, allocated bytes for code 131 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
; ============================================================ Unwind Info: @@ -82,10 +109,15 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 7
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: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

libraries_tests.run.windows.x64.Release.mch

-35 (-30.97%) : 348158.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,12 +8,12 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 17712 ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 4.33) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 5.91) int -> rdx single-def -; V02 loc0 [V02,T01] ( 11, 7.28) int -> r8 -; V03 loc1 [V03,T03] ( 6, 3.62) ushort -> r10
+; V00 arg0 [V00,T02] ( 4, 4.33) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 6, 4.94) int -> rdx single-def +; V02 loc0 [V02,T00] ( 7, 8.60) int -> r8 +; V03 loc1 [V03,T04] ( 3, 3.62) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 3.36) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 4.67) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -24,80 +24,58 @@ G_M3357_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x08] cmp eax, edx
- jle SHORT G_M3357_IG08
+ jle SHORT G_M3357_IG11
;; size=7 bbWeight=1 PerfScore 3.25
-G_M3357_IG03: ; bbWeight=0.97, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG03: ; bbWeight=0.97, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov r8d, edx
- test edx, edx - jl SHORT G_M3357_IG12 - ;; size=7 bbWeight=0.97 PerfScore 1.45 -G_M3357_IG04: ; bbWeight=1.32, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.97 PerfScore 0.24 +G_M3357_IG04: ; bbWeight=1.33, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp r8d, eax + jae SHORT G_M3357_IG13
mov r10d, r8d movzx r10, word ptr [rcx+2*r10+0x0C] cmp r10d, 32 je SHORT G_M3357_IG06
- ;; size=15 bbWeight=1.32 PerfScore 4.60 -G_M3357_IG05: ; bbWeight=0.95, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1.33 PerfScore 6.31 +G_M3357_IG05: ; bbWeight=0.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.95 PerfScore 1.19 -G_M3357_IG06: ; bbWeight=1.32, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG09 + ;; size=6 bbWeight=0.96 PerfScore 1.20 +G_M3357_IG06: ; bbWeight=1.34, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d cmp eax, r8d jg SHORT G_M3357_IG04
- ;; size=8 bbWeight=1.32 PerfScore 1.98 -G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - jmp SHORT G_M3357_IG15 - ;; size=2 bbWeight=0.01 PerfScore 0.01 -G_M3357_IG08: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor eax, eax - ;; size=2 bbWeight=0.03 PerfScore 0.01 -G_M3357_IG09: ; bbWeight=0.03, epilog, nogc, extend - add rsp, 40 - ret - ;; size=5 bbWeight=0.03 PerfScore 0.04 -G_M3357_IG10: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov eax, r8d - sub eax, edx - ;; size=5 bbWeight=0.96 PerfScore 0.48 -G_M3357_IG11: ; bbWeight=0.96, epilog, nogc, extend - add rsp, 40 - ret - ;; size=5 bbWeight=0.96 PerfScore 1.20 -G_M3357_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rcx] - cmp r8d, eax - jae SHORT G_M3357_IG17 - mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C] - cmp r10d, 32 - je SHORT G_M3357_IG14 - ;; size=20 bbWeight=0.01 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r10d, 9 - jne SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.01 PerfScore 0.01 -G_M3357_IG14: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - cmp eax, r8d - jg SHORT G_M3357_IG12 - ;; size=8 bbWeight=0.01 PerfScore 0.02 -G_M3357_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.34 PerfScore 2.00 +G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] sub eax, edx ;; size=2 bbWeight=0.01 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0.01, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.01, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG09: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, r8d + sub eax, edx + ;; size=5 bbWeight=0.96 PerfScore 0.48 +G_M3357_IG10: ; bbWeight=0.96, epilog, nogc, extend + add rsp, 40 + ret + ;; size=5 bbWeight=0.96 PerfScore 1.20 +G_M3357_IG11: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.03 PerfScore 0.01 +G_M3357_IG12: ; bbWeight=0.03, epilog, nogc, extend + add rsp, 40 + ret + ;; size=5 bbWeight=0.03 PerfScore 0.04 +G_M3357_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 113, prolog size 4, PerfScore 14.58, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 78, prolog size 4, PerfScore 15.00, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info:

-35 (-30.70%) : 371906.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,12 +8,12 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 549 ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 3.52) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 4.55) int -> rdx single-def -; V02 loc0 [V02,T02] ( 11, 3.13) int -> r8 -; V03 loc1 [V03,T04] ( 6, 1.56) ushort -> r10
+; V00 arg0 [V00,T01] ( 4, 3.52) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 6, 4.03) int -> rdx single-def +; V02 loc0 [V02,T02] ( 7, 3.65) int -> r8 +; V03 loc1 [V03,T04] ( 3, 1.56) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.53) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 3.05) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -34,68 +34,50 @@ G_M3357_IG04: ; bbWeight=0.48, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.48 PerfScore 0.60
-G_M3357_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov r8d, edx
- test edx, edx - jl SHORT G_M3357_IG09 - ;; size=7 bbWeight=0.52 PerfScore 0.78
+ ;; size=3 bbWeight=0.52 PerfScore 0.13
G_M3357_IG06: ; bbWeight=0.52, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax + jae SHORT G_M3357_IG11
mov r10d, r8d movzx r10, word ptr [rcx+2*r10+0x0C] cmp r10d, 32 je SHORT G_M3357_IG08
- ;; size=15 bbWeight=0.52 PerfScore 1.81 -G_M3357_IG07: ; bbWeight=0.51, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.52 PerfScore 2.48 +G_M3357_IG07: ; bbWeight=0.52, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG12 - ;; size=6 bbWeight=0.51 PerfScore 0.64
+ jne SHORT G_M3357_IG09 + ;; size=6 bbWeight=0.52 PerfScore 0.65
G_M3357_IG08: ; bbWeight=0.52, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz inc r8d cmp eax, r8d
- jle SHORT G_M3357_IG15
+ jle SHORT G_M3357_IG12
jmp SHORT G_M3357_IG06
- ;; size=10 bbWeight=0.52 PerfScore 1.81 -G_M3357_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r8d, eax - jae SHORT G_M3357_IG14 - mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C] - cmp r10d, 32 - je SHORT G_M3357_IG11 - ;; size=20 bbWeight=0.01 PerfScore 0.02 -G_M3357_IG10: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r10d, 9 - jne SHORT G_M3357_IG12 - ;; size=6 bbWeight=0.01 PerfScore 0.01 -G_M3357_IG11: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - cmp eax, r8d - jle SHORT G_M3357_IG15 - jmp SHORT G_M3357_IG09 - ;; size=10 bbWeight=0.01 PerfScore 0.02 -G_M3357_IG12: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=0.52 PerfScore 1.83 +G_M3357_IG09: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov eax, r8d sub eax, edx ;; size=5 bbWeight=0.52 PerfScore 0.26
-G_M3357_IG13: ; bbWeight=0.52, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.52, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.52 PerfScore 0.65
-G_M3357_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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_M3357_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub eax, edx ;; size=2 bbWeight=0 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG13: ; bbWeight=0, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0 PerfScore 0.00
-Total bytes of code 114, prolog size 4, PerfScore 10.22, instruction count 40, allocated bytes for code 114 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 79, prolog size 4, PerfScore 10.22, instruction count 28, allocated bytes for code 79 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info:

-35 (-30.70%) : 353476.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)

@@ -8,12 +8,12 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 195 ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 3.50) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 4.49) int -> rdx single-def -; V02 loc0 [V02,T02] ( 11, 3.01) int -> r8 -; V03 loc1 [V03,T04] ( 6, 1.50) ushort -> r10
+; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 6, 3.99) int -> rdx single-def +; V02 loc0 [V02,T02] ( 7, 3.51) int -> r8 +; V03 loc1 [V03,T04] ( 3, 1.50) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.51) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 3.01) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -34,68 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.63
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov r8d, edx
- test edx, edx - jl SHORT G_M3357_IG09 - ;; size=7 bbWeight=0.50 PerfScore 0.75
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax + jae SHORT G_M3357_IG11
mov r10d, r8d movzx r10, word ptr [rcx+2*r10+0x0C] cmp r10d, 32 je SHORT G_M3357_IG08
- ;; size=15 bbWeight=0.50 PerfScore 1.74 -G_M3357_IG07: ; bbWeight=0.49, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 2.39 +G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG12 - ;; size=6 bbWeight=0.49 PerfScore 0.62
+ jne SHORT G_M3357_IG09 + ;; size=6 bbWeight=0.50 PerfScore 0.62
G_M3357_IG08: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz inc r8d cmp eax, r8d
- jle SHORT G_M3357_IG15
+ jle SHORT G_M3357_IG12
jmp SHORT G_M3357_IG06
- ;; size=10 bbWeight=0.50 PerfScore 1.74 -G_M3357_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r8d, eax - jae SHORT G_M3357_IG14 - mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C] - cmp r10d, 32 - jne SHORT G_M3357_IG11 - ;; size=20 bbWeight=0.01 PerfScore 0.02 -G_M3357_IG10: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - cmp eax, r8d - jle SHORT G_M3357_IG15 - jmp SHORT G_M3357_IG09 - ;; size=10 bbWeight=0.01 PerfScore 0.02 -G_M3357_IG11: ; bbWeight=0.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r10d, 9 - je SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.00 PerfScore 0.01 -G_M3357_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=0.50 PerfScore 1.76 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov eax, r8d sub eax, edx ;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; 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_M3357_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub eax, edx ;; size=2 bbWeight=0 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG13: ; bbWeight=0, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0 PerfScore 0.00
-Total bytes of code 114, prolog size 4, PerfScore 10.02, instruction count 40, allocated bytes for code 114 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 79, prolog size 4, PerfScore 10.02, instruction count 28, allocated bytes for code 79 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================ Unwind Info:

+43 (+5.77%) : 642586.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+FullInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+FullNullabilityHandler[ulong]](System.ReadOnlySpan1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1)

@@ -24,56 +24,56 @@ ; V12 loc2 [V12,T37] ( 4, 2.72) int -> [rbp-0x44] do-not-enreg[Z] EH-live ; V13 loc3 [V13,T38] ( 4, 2.72) int -> [rbp-0x48] do-not-enreg[Z] EH-live ; V14 loc4 [V14,T35] ( 5, 3.76) int -> [rbp-0x4C] do-not-enreg[Z] EH-live
-; V15 loc5 [V15,T03] ( 5,3394.88) ubyte -> r13
+; V15 loc5 [V15,T03] ( 6,3394.88) ubyte -> r13
;* V16 loc6 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 loc7 [V17,T39] ( 4, 2 ) ubyte -> rdx
+; V17 loc7 [V17,T39] ( 4, 2 ) ubyte -> rcx
; V18 OutArgs [V18 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V19 tmp1 [V19,T13] ( 6,1529.66) int -> r12 "Inline return value spill temp" ;* V20 tmp2 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V21 tmp3 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V22 tmp4 [V22,T11] ( 5,1852.05) int -> rdx "Inline stloc first use temp"
+; V22 tmp4 [V22,T11] ( 5,1852.05) int -> [rbp-0x50] spill-single-def "Inline stloc first use temp"
; V23 tmp5 [V23,T18] ( 3, 907.15) int -> r12 "Inline return value spill temp"
-; V24 tmp6 [V24,T12] ( 3,1814.30) ref -> rcx class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier> -; V25 tmp7 [V25,T15] ( 3,1360.72) ref -> r12 class-hnd "Inline stloc first use temp" <<unknown class>> -; V26 tmp8 [V26,T09] ( 2,1358.39) ubyte -> rax "Inline return value spill temp"
+; V24 tmp6 [V24,T12] ( 3,1814.30) ref -> r12 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier> +; V25 tmp7 [V25,T15] ( 3,1360.72) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>> +; V26 tmp8 [V26,T09] ( 2,1358.39) ubyte -> rdx "Inline return value spill temp"
; V27 tmp9 [V27,T30] ( 2, 149.16) int -> rdx "Inlining Arg" ; V28 tmp10 [V28,T31] ( 3, 111.87) ref -> rcx class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]> ;* V29 tmp11 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]> ; V31 tmp13 [V31,T33] ( 2, 43.71) int -> rdx "Inline stloc first use temp" ;* V32 tmp14 [V32 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V33 tmp15 [V33,T22] ( 3, 716.49) ubyte -> rax "Inline return value spill temp"
+; V33 tmp15 [V33,T22] ( 3, 716.49) ubyte -> registers "Inline return value spill temp"
; V34 tmp16 [V34,T26] ( 4, 223.74) ref -> rcx class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V35 tmp17 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V36 tmp18 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V37 tmp19 [V37,T16] ( 3,1222.40) ubyte -> r13 "Inline return value spill temp"
-; V38 tmp20 [V38,T08] ( 4,2170.22) int -> [rbp-0x50] spill-single-def "Inline stloc first use temp"
+; V38 tmp20 [V38,T08] ( 4,2170.22) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
; V39 tmp21 [V39,T10] ( 3,1900.92) int -> rdx "Inline stloc first use temp"
-; V40 tmp22 [V40 ] ( 3, 947.82) ref -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V40 tmp22 [V40 ] ( 3, 947.82) ref -> [rbp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V41 tmp23 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V42 tmp24 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]> ;* V43 tmp25 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp26 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
-; V45 tmp27 [V45,T24] ( 2, 538.60) ref -> rcx class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V45 tmp27 [V45,T24] ( 2, 538.60) ref -> rax class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V46 tmp28 [V46 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp29 [V47 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP ; V48 tmp30 [V48,T17] ( 2,1151.65) byref -> rcx "field V21._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp31 [V49,T14] ( 3,1435.71) int -> r12 "field V21._length (fldOffset=0x8)" P-INDEP
+; V49 tmp31 [V49,T14] ( 3,1435.71) int -> rdx "field V21._length (fldOffset=0x8)" P-INDEP
;* V50 tmp32 [V50 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> ; V51 tmp33 [V51,T00] ( 3,4077.15) ref -> rcx "arr expr" ; V52 tmp34 [V52,T01] ( 3,4077.15) int -> rdx "index expr" ; V53 tmp35 [V53,T27] ( 3, 223.74) ref -> rcx "arr expr" ; V54 tmp36 [V54,T28] ( 3, 223.74) ref -> rcx "arr expr"
-; V55 tmp37 [V55,T29] ( 3, 223.74) int -> rax "index expr"
+; V55 tmp37 [V55,T29] ( 3, 223.74) int -> r13 "index expr"
; V56 tmp38 [V56,T02] ( 3,4071.15) ref -> rdx "arr expr" ; V57 tmp39 [V57,T20] ( 3, 807.89) ref -> rdx "arr expr" ; V58 tmp40 [V58,T21] ( 3, 807.89) int -> r13 "index expr" ; V59 tmp41 [V59,T25] ( 2, 538.60) ref -> rdx "argument with side effect"
-; V60 PSPSym [V60,T45] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V60 PSPSym [V60,T45] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
; V61 cse0 [V61,T19] ( 2, 907.15) int -> rax "CSE - moderate" ; V62 cse1 [V62,T32] ( 3, 111.87) int -> rdx "CSE - moderate" ;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M6149_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp @@ -84,11 +84,11 @@ G_M6149_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {} push rdi push rsi push rbx
- sub rsp, 88 - lea rbp, [rsp+0x90]
+ sub rsp, 104 + lea rbp, [rsp+0xA0]
xor eax, eax
- mov qword ptr [rbp-0x58], rax - mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x60], rax + mov qword ptr [rbp-0x70], rsp
mov rbx, rcx ; gcrRegs +[rbx] mov rsi, rdx @@ -126,232 +126,243 @@ G_M6149_IG03: ; bbWeight=679.52, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rs ; gcrRegs +[rcx] mov edx, dword ptr [rdi+0x08] cmp edx, dword ptr [rcx+0x08]
- jae SHORT G_M6149_IG10
+ jae SHORT G_M6149_IG07
movzx r13, byte ptr [rcx+rdx+0x10] test r13b, 1
- jne SHORT G_M6149_IG09
+ jne SHORT G_M6149_IG06
;; size=24 bbWeight=679.52 PerfScore 7644.65
-G_M6149_IG04: ; bbWeight=679.52, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG04: ; bbWeight=679.52, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[rcx] test r13b, 2
- jne G_M6149_IG32 - ;; size=10 bbWeight=679.52 PerfScore 849.41 -G_M6149_IG05: ; bbWeight=679.20, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - mov rcx, bword ptr [rsi] - ; byrRegs +[rcx] - mov r12d, dword ptr [rsi+0x08] - cmp dword ptr [rbp-0x3C], r12d - jae SHORT G_M6149_IG08 - ;; size=13 bbWeight=679.20 PerfScore 4754.38 -G_M6149_IG06: ; bbWeight=472.45, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref, isz - mov edx, dword ptr [rbp-0x3C] - movzx rdx, word ptr [rcx+2*rdx] - cmp edx, 10 - jne SHORT G_M6149_IG14 - ;; size=12 bbWeight=472.45 PerfScore 2007.92 -G_M6149_IG07: ; bbWeight=77.32, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - ; byrRegs -[rcx] - jmp SHORT G_M6149_IG13 - ;; size=2 bbWeight=77.32 PerfScore 154.64 -G_M6149_IG08: ; bbWeight=206.75, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - mov r12d, -1 - jmp SHORT G_M6149_IG15 - ;; size=8 bbWeight=206.75 PerfScore 465.18 -G_M6149_IG09: ; bbWeight=1.04, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ je SHORT G_M6149_IG10 + ;; size=6 bbWeight=679.52 PerfScore 849.41 +G_M6149_IG05: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rsi rdi] + jmp G_M6149_IG32 + ;; size=5 bbWeight=0.33 PerfScore 0.65 +G_M6149_IG06: ; bbWeight=1.04, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs +[rbx] + ; byrRegs +[rsi rdi]
mov ecx, dword ptr [rbp-0x3C] mov dword ptr [rbp-0x4C], ecx jmp SHORT G_M6149_IG04 ;; size=8 bbWeight=1.04 PerfScore 4.17
-G_M6149_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6149_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] ; byrRegs -[rsi rdi] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M6149_IG11: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - ; gcrRegs +[rcx rbx]
+G_M6149_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref + ; gcrRegs +[rbx]
; byrRegs +[rsi rdi]
- mov rcx, gword ptr [rcx+0x10]
+ xor r13d, r13d + jmp G_M6149_IG25 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M6149_IG09: ; bbWeight=0, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs +[r12] + mov rcx, gword ptr [r12+0x10] + ; gcrRegs +[rcx] + mov edx, dword ptr [rbp-0x50]
mov r12, 0xD1FFAB1E ; code for System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this
+ ; gcrRegs -[r12]
cmp dword ptr [rcx], ecx call [r12]System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this ; gcrRegs -[rcx] ; gcr arg pop 0 mov r12d, eax
- jmp SHORT G_M6149_IG15 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M6149_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref - xor r13d, r13d - jmp G_M6149_IG29 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M6149_IG13: ; bbWeight=77.32, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref - dec r12d - cmp dword ptr [rbp-0x3C], r12d - je G_M6149_IG25 - ;; size=13 bbWeight=77.32 PerfScore 251.29 -G_M6149_IG14: ; bbWeight=453.57, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz - mov rcx, gword ptr [rbx+0x50] - ; gcrRegs +[rcx] - mov r12, gword ptr [rcx+0x08]
+ jmp SHORT G_M6149_IG13 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M6149_IG10: ; bbWeight=679.20, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref + mov rcx, bword ptr [rsi] + ; byrRegs +[rcx] + mov edx, dword ptr [rsi+0x08] + cmp dword ptr [rbp-0x3C], edx + jae G_M6149_IG26 + ;; size=15 bbWeight=679.20 PerfScore 4754.38 +G_M6149_IG11: ; bbWeight=472.45, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref + mov r12d, dword ptr [rbp-0x3C] + movzx rcx, word ptr [rcx+2*r12] + ; byrRegs -[rcx] + mov dword ptr [rbp-0x50], ecx + cmp ecx, 10 + je G_M6149_IG28 + ;; size=21 bbWeight=472.45 PerfScore 2480.37 +G_M6149_IG12: ; bbWeight=453.57, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + mov r12, gword ptr [rbx+0x50]
; gcrRegs +[r12]
- mov eax, dword ptr [r12+0x08] - cmp eax, edx - jbe SHORT G_M6149_IG11 - mov ecx, edx - ; gcrRegs -[rcx] - mov r12d, dword ptr [r12+4*rcx+0x10]
+ mov rdx, gword ptr [r12+0x08] + ; gcrRegs +[rdx] + mov eax, dword ptr [rdx+0x08] + cmp eax, ecx + jbe SHORT G_M6149_IG09 + mov ecx, ecx + mov r12d, dword ptr [rdx+4*rcx+0x10]
; gcrRegs -[r12]
- ;; size=24 bbWeight=453.57 PerfScore 4308.95 -G_M6149_IG15: ; bbWeight=679.20, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ;; size=23 bbWeight=453.57 PerfScore 4308.95 +G_M6149_IG13: ; bbWeight=660.32, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz + ; gcrRegs -[rdx]
test r13b, 4
- jne SHORT G_M6149_IG22 - ;; size=6 bbWeight=679.20 PerfScore 849.00 -G_M6149_IG16: ; bbWeight=677.11, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jne SHORT G_M6149_IG20 + ;; size=6 bbWeight=660.32 PerfScore 825.40 +G_M6149_IG14: ; bbWeight=677.11, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 8
- je SHORT G_M6149_IG23
+ je SHORT G_M6149_IG21
;; size=6 bbWeight=677.11 PerfScore 846.39
-G_M6149_IG17: ; bbWeight=37.29, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M6149_IG15: ; bbWeight=37.29, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov rcx, gword ptr [rbx+0x98] ; gcrRegs +[rcx] lea edx, [r12+0x01] cmp edx, dword ptr [rcx+0x08]
- jae SHORT G_M6149_IG10
+ jae G_M6149_IG07
mov edx, dword ptr [rcx+4*rdx+0x10] mov rcx, gword ptr [rbx+0x10]
- mov eax, dword ptr [rdi+0x08] - cmp eax, dword ptr [rcx+0x08] - jae SHORT G_M6149_IG10 - mov rcx, gword ptr [rcx+8*rax+0x10]
+ mov r13d, dword ptr [rdi+0x08] + cmp r13d, dword ptr [rcx+0x08] + jae G_M6149_IG07
...

+18 (+5.81%) : 60075.dasm - Microsoft.CodeAnalysis.HashSetExtensions:AnyMicrosoft.CodeAnalysis.SyntaxToken:ubyte (Tier1)

@@ -15,7 +15,7 @@ ; V03 loc1 [V03 ] ( 5, 0 ) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.SyntaxToken> ;* V04 loc2 [V04,T24] ( 0, 0 ) ubyte -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T21] ( 3, 1.14) int -> r8 "guarded devirt return temp"
+; V06 tmp1 [V06,T21] ( 4, 1.14) int -> r8 "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxReplacer+Replacer`1+<>c[System.__Canon]> ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.SyntaxToken]> ;* V09 tmp4 [V09 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxToken> @@ -87,27 +87,15 @@ G_M26426_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, G_M26426_IG03: ; bbWeight=1.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] cmp esi, dword ptr [rdi+0x34]
- jne G_M26426_IG12
+ jne G_M26426_IG19
mov ecx, dword ptr [rdi+0x28] ;; size=12 bbWeight=1.57 PerfScore 9.41 G_M26426_IG04: ; bbWeight=1.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz cmp ebp, ecx
- jb SHORT G_M26426_IG11 - xor eax, eax - ;; size=6 bbWeight=1.57 PerfScore 2.35 -G_M26426_IG05: ; bbWeight=1.57, epilog, nogc, extend - add rsp, 56 - pop rbx - pop rbp - pop rsi - pop rdi - pop r12 - pop r13 - pop r14 - pop r15 - ret - ;; size=17 bbWeight=1.57 PerfScore 8.24 -G_M26426_IG06: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ jb SHORT G_M26426_IG10 + jmp G_M26426_IG11 + ;; size=9 bbWeight=1.57 PerfScore 5.10 +G_M26426_IG05: ; bbWeight=0.57, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r14-r15] mov rcx, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxReplacer+Replacer`1+<>c[System.__Canon]:<.ctor>b__10_4(Microsoft.CodeAnalysis.SyntaxToken):ubyte:this cmp qword ptr [rbx+0x18], rcx @@ -117,34 +105,34 @@ G_M26426_IG06: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=C08 mov r15, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterfaceDeclarationSyntax ; gcrRegs -[r15] ;; size=39 bbWeight=0.57 PerfScore 3.27
-G_M26426_IG07: ; bbWeight=1.98, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M26426_IG06: ; bbWeight=1.98, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r14+0x18] ; gcrRegs +[rcx] mov rax, qword ptr [rcx] cmp rax, r15
- je SHORT G_M26426_IG08
+ je SHORT G_M26426_IG07
mov rax, qword ptr [rax+0x48] call [rax+0x30]Microsoft.CodeAnalysis.GreenNode:get_IsStructuredTrivia():ubyte:this ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M26426_IG17 - ;; size=23 bbWeight=1.98 PerfScore 22.77 -G_M26426_IG08: ; bbWeight=1.98, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+ jne G_M26426_IG17 + ;; size=27 bbWeight=1.98 PerfScore 22.77 +G_M26426_IG07: ; bbWeight=1.98, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
mov r14, gword ptr [r14+0x08] test r14, r14
- jne SHORT G_M26426_IG07
+ jne SHORT G_M26426_IG06
;; size=9 bbWeight=1.98 PerfScore 6.44
-G_M26426_IG09: ; bbWeight=0.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M26426_IG08: ; bbWeight=0.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] xor r8d, r8d ;; size=3 bbWeight=0.57 PerfScore 0.14
-G_M26426_IG10: ; bbWeight=0.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M26426_IG09: ; bbWeight=0.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r8d, r8d jne SHORT G_M26426_IG13 jmp SHORT G_M26426_IG03 ;; size=7 bbWeight=0.57 PerfScore 1.85
-G_M26426_IG11: ; bbWeight=0.64, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M26426_IG10: ; bbWeight=0.64, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rdi+0x10] ; gcrRegs +[rax] lea edx, [rbp+0x01] @@ -166,16 +154,26 @@ G_M26426_IG11: ; bbWeight=0.64, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcrRegs +[r15] mov r13d, dword ptr [rax+0x10] mov r12d, dword ptr [rax+0x14]
- jmp G_M26426_IG06
+ jmp G_M26426_IG05
;; size=63 bbWeight=0.64 PerfScore 14.83
-G_M26426_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26426_IG11: ; bbWeight=1.57, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi r14-r15] ; byrRegs -[rax]
- call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M26426_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor eax, eax + ;; size=2 bbWeight=1.57 PerfScore 0.39 +G_M26426_IG12: ; bbWeight=1.57, epilog, nogc, extend + add rsp, 56 + pop rbx + pop rbp + pop rsi + pop rdi + pop r12 + pop r13 + pop r14 + pop r15 + ret + ;; size=17 bbWeight=1.57 PerfScore 8.24 +G_M26426_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1 ;; size=5 bbWeight=0 PerfScore 0.00 G_M26426_IG14: ; bbWeight=0, epilog, nogc, extend @@ -197,13 +195,13 @@ G_M26426_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { G_M26426_IG16: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx rdi] xor r8d, r8d
- jmp SHORT G_M26426_IG10
+ jmp SHORT G_M26426_IG09
;; size=5 bbWeight=0 PerfScore 0.00
-G_M26426_IG17: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M26426_IG17: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov r8d, 1
- jmp SHORT G_M26426_IG10 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M26426_IG18: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M26426_IG09 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M26426_IG18: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14-r15] mov gword ptr [rsp+0x20], r14 mov gword ptr [rsp+0x28], r15 @@ -216,10 +214,18 @@ G_M26426_IG18: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs= ; gcrRegs -[rcx r14-r15] ; gcr arg pop 0 mov r8d, eax
- jmp G_M26426_IG10 - ;; size=40 bbWeight=0 PerfScore 0.00
+ test r8d, r8d + je G_M26426_IG03 + jmp SHORT G_M26426_IG13 + ;; size=46 bbWeight=0 PerfScore 0.00 +G_M26426_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx rdi] + call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 310, prolog size 36, PerfScore 83.89, instruction count 98, allocated bytes for code 310 (MethodHash=541198c5) for method Microsoft.CodeAnalysis.HashSetExtensions:Any[Microsoft.CodeAnalysis.SyntaxToken](System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken],System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]):ubyte (Tier1)
+Total bytes of code 328, prolog size 36, PerfScore 87.03, instruction count 101, allocated bytes for code 328 (MethodHash=541198c5) for method Microsoft.CodeAnalysis.HashSetExtensions:Any[Microsoft.CodeAnalysis.SyntaxToken](System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken],System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]):ubyte (Tier1)
; ============================================================ Unwind Info:

+31 (+7.33%) : 622565.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:g_anyOverriddenMethodHasExplicitImplementation|2130(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)

@@ -16,12 +16,12 @@ ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple> ;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V06 tmp4 [V06,T03] ( 4, 1.99) ref -> rbx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V07 tmp5 [V07,T09] ( 3, 0.51) ref -> rax "CASTCLASS eval op1"
+; V07 tmp5 [V07,T08] ( 3, 0.51) ref -> rax "CASTCLASS eval op1"
; V08 tmp6 [V08,T10] ( 3, 0.28) long -> rcx "fgMakeTemp is creating a new local variable" ; V09 tmp7 [V09,T07] ( 5, 0.85) ref -> rbx class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> ; V10 tmp8 [V10,T05] ( 2, 1.99) int -> rax "guarded devirt return temp" ;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple>
-; V12 tmp10 [V12,T08] ( 2, 0.23) ref -> rax "guarded devirt return temp"
+; V12 tmp10 [V12,T09] ( 2, 0.23) ref -> rax "guarded devirt return temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple> ; V14 tmp12 [V14,T11] ( 3, 0.23) ref -> rcx "guarded devirt return temp" ;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple> @@ -64,8 +64,8 @@ G_M52252_IG04: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, G_M52252_IG05: ; bbWeight=0.58, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test dword ptr [rbx+0x68], 0xD1FFAB1E je SHORT G_M52252_IG07
- jmp SHORT G_M52252_IG14 - ;; size=11 bbWeight=0.58 PerfScore 3.46
+ jmp G_M52252_IG21 + ;; size=14 bbWeight=0.58 PerfScore 3.46
G_M52252_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rcx, rbx ; gcrRegs +[rcx] @@ -82,8 +82,8 @@ G_M52252_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M52252_IG13 - ;; size=31 bbWeight=1.00 PerfScore 12.94
+ jne G_M52252_IG20 + ;; size=35 bbWeight=1.00 PerfScore 12.94
G_M52252_IG07: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] xor rbx, rbx @@ -114,33 +114,10 @@ G_M52252_IG12: ; bbWeight=0.82, epilog, nogc, extend pop rdi ret ;; size=8 bbWeight=0.82 PerfScore 2.24
-G_M52252_IG13: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52252_IG13: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx]
- mov rax, qword ptr [rsi+0xF8] - call [rax]Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_ConstructedFrom():Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this - ; gcrRegs -[rcx] +[rax] - ; gcr arg pop 0 - cmp rax, rbx - jne SHORT G_M52252_IG07 - ;; size=17 bbWeight=0.11 PerfScore 0.74 -G_M52252_IG14: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rsi, qword ptr [rbx] - mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple - cmp rsi, rcx - jne SHORT G_M52252_IG16 - ;; size=18 bbWeight=0.11 PerfScore 0.40 -G_M52252_IG15: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rdi, rbx - ; gcrRegs +[rdi] - jmp SHORT G_M52252_IG17 - ;; size=5 bbWeight=0.15 PerfScore 0.35 -G_M52252_IG16: ; bbWeight=0.30, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - mov rcx, rbx - ; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0xD0] call [rax+0x30]Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_OriginalDefinition():Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this ; gcrRegs -[rcx] +[rax] @@ -148,15 +125,15 @@ G_M52252_IG16: ; bbWeight=0.30, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdi, rax ; gcrRegs +[rdi] ;; size=16 bbWeight=0.30 PerfScore 1.64
-G_M52252_IG17: ; bbWeight=0.11, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M52252_IG14: ; bbWeight=0.11, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] cmp rbx, rdi jne G_M52252_IG26 mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple cmp qword ptr [rdi], rcx
- jne SHORT G_M52252_IG25 - ;; size=24 bbWeight=0.11 PerfScore 0.62 -G_M52252_IG18: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M52252_IG28 + ;; size=28 bbWeight=0.11 PerfScore 0.62 +G_M52252_IG15: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] mov rcx, rdi ; gcrRegs +[rcx] @@ -165,13 +142,13 @@ G_M52252_IG18: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs -[rcx] ; gcr arg pop 0 cmp gword ptr [rdi+0x48], 0
- je SHORT G_M52252_IG24
+ je SHORT G_M52252_IG19
;; size=22 bbWeight=0.11 PerfScore 0.85
-G_M52252_IG19: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M52252_IG16: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rdi+0x48] ; gcrRegs +[rcx] ;; size=4 bbWeight=0.11 PerfScore 0.23
-G_M52252_IG20: ; bbWeight=0.11, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M52252_IG17: ; bbWeight=0.11, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Symbols.OverriddenOrHiddenMembersResult:GetOverriddenMember():Microsoft.CodeAnalysis.CSharp.Symbol:this cmp dword ptr [rcx], ecx @@ -181,29 +158,13 @@ G_M52252_IG20: ; bbWeight=0.11, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je SHORT G_M52252_IG23
+ je SHORT G_M52252_IG25
;; size=22 bbWeight=0.11 PerfScore 0.88
-G_M52252_IG21: ; bbWeight=0.06, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz - mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol - cmp qword ptr [rbx], rcx - je SHORT G_M52252_IG23 - ;; size=15 bbWeight=0.06 PerfScore 0.24 -G_M52252_IG22: ; bbWeight=0.03, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - mov rdx, rax - ; gcrRegs +[rdx] - call CORINFO_HELP_CHKCASTCLASS_SPECIAL - ; gcrRegs -[rdx] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - ;; size=11 bbWeight=0.03 PerfScore 0.04 -G_M52252_IG23: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - jmp G_M52252_IG08 - ;; size=5 bbWeight=0.11 PerfScore 0.23 -G_M52252_IG24: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx] +[rdi]
+G_M52252_IG18: ; bbWeight=0.06, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M52252_IG23 + ;; size=2 bbWeight=0.06 PerfScore 0.11 +G_M52252_IG19: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rbx] +[rdi]
lea rbx, bword ptr [rdi+0x48] ; byrRegs +[rbx] mov rcx, rdi @@ -215,7 +176,7 @@ G_M52252_IG24: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, mov rdx, rax ; gcrRegs +[rdx] test rbx, rbx
- je SHORT G_M52252_IG27
+ je G_M52252_IG27
mov rcx, rbx ; byrRegs +[rcx] xor r8, r8 @@ -224,23 +185,52 @@ G_M52252_IG24: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs -[rdx r8] ; byrRegs -[rcx rbx] ; gcr arg pop 0
- jmp SHORT G_M52252_IG19 - ;; size=40 bbWeight=0.02 PerfScore 0.17 -G_M52252_IG25: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rcx, rdi
+ jmp SHORT G_M52252_IG16 + ;; size=44 bbWeight=0.02 PerfScore 0.17 +G_M52252_IG20: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdi] +[rbx] + mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x100] - call [rax+0x30]<unknown method> - ; gcrRegs -[rcx rdi] +[rax]
+ mov rax, qword ptr [rsi+0xF8] + call [rax]Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_ConstructedFrom():Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this + ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov rcx, rax - ; gcrRegs +[rcx] - jmp SHORT G_M52252_IG20 - ;; size=21 bbWeight=0 PerfScore 0.00
+ cmp rax, rbx + jne G_M52252_IG07 + ;; size=21 bbWeight=0.11 PerfScore 0.74 +G_M52252_IG21: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + mov rsi, qword ptr [rbx] + mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple + cmp rsi, rcx + jne G_M52252_IG13 + ;; size=22 bbWeight=0.11 PerfScore 0.40 +G_M52252_IG22: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdi, rbx + ; gcrRegs +[rdi] + jmp G_M52252_IG14 + ;; size=8 bbWeight=0.15 PerfScore 0.35 +G_M52252_IG23: ; bbWeight=0.06, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] +[rax] + mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol + cmp qword ptr [rbx], rcx + je SHORT G_M52252_IG25 + ;; size=15 bbWeight=0.06 PerfScore 0.24 +G_M52252_IG24: ; bbWeight=0.03, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + mov rdx, rax + ; gcrRegs +[rdx] + call CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[rdx] + ; gcr arg pop 0 + mov rbx, rax + ; gcrRegs +[rbx] + ;; size=11 bbWeight=0.03 PerfScore 0.04 +G_M52252_IG25: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + jmp G_M52252_IG08 + ;; size=5 bbWeight=0.11 PerfScore 0.23
G_M52252_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx] +[rbx]
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rsi+0xD0] @@ -281,8 +271,21 @@ G_M52252_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 int3 ;; size=13 bbWeight=0 PerfScore 0.00
+G_M52252_IG28: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs +[rdi] + mov rcx, rdi + ; gcrRegs +[rcx] + mov rax, qword ptr [rdi] + mov rax, qword ptr [rax+0x100] + call [rax+0x30]<unknown method> + ; gcrRegs -[rcx rdi] +[rax] + ; gcr arg pop 0 + mov rcx, rax + ; gcrRegs +[rcx] + jmp G_M52252_IG17 + ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 423, prolog size 7, PerfScore 40.78, instruction count 118, allocated bytes for code 423 (MethodHash=162c33e3) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__anyOverriddenMethodHasExplicitImplementation|213_0(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
+Total bytes of code 454, prolog size 7, PerfScore 40.89, instruction count 119, allocated bytes for code 454 (MethodHash=162c33e3) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__anyOverriddenMethodHasExplicitImplementation|213_0(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-35 (-30.97%) : 154417.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov r8d, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp r8d, eax + jae SHORT G_M3357_IG13
mov r10d, r8d movzx r10, word ptr [rcx+2*r10+0x0C] cmp r10d, 32 je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d cmp eax, r8d jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx] - cmp r8d, eax - jae SHORT G_M3357_IG17 - mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C] - cmp r10d, 32 - je SHORT G_M3357_IG12 - ;; size=20 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r10d, 9 - jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - cmp eax, r8d - jg SHORT G_M3357_IG10 - ;; size=8 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d sub eax, edx ;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-35 (-30.97%) : 20163.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov r8d, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp r8d, eax + jae SHORT G_M3357_IG13
mov r10d, r8d movzx r10, word ptr [rcx+2*r10+0x0C] cmp r10d, 32 je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d cmp eax, r8d jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx] - cmp r8d, eax - jae SHORT G_M3357_IG17 - mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C] - cmp r10d, 32 - je SHORT G_M3357_IG12 - ;; size=20 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r10d, 9 - jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - cmp eax, r8d - jg SHORT G_M3357_IG10 - ;; size=8 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d sub eax, edx ;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-38 (-7.44%) : 148114.dasm - System.Linq.Tests.SelectManyTests:CollectionInterleavedWithLazyEnumerables_ToArray(System.Collections.Generic.IEnumerable`1[int][]):this (FullOpts)

@@ -13,28 +13,25 @@ ; V02 loc0 [V02,T07] ( 3, 6.06) ref -> rbx class-hnd single-def <int[]> ; V03 loc1 [V03,T03] ( 6, 21.31) int -> rsi ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T16] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
+; V05 tmp1 [V05,T13] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp3 [V07,T15] ( 5, 4 ) ref -> rsi -; V08 tmp4 [V08,T13] ( 5, 5 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V09 tmp5 [V09,T19] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V10 tmp6 [V10,T18] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[int]> -; V11 tmp7 [V11,T14] ( 5, 5 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V12 tmp8 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V13 tmp9 [V13,T17] ( 3, 2.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.IEnumerable`1[int][]> -; V14 tmp10 [V14,T04] ( 2, 16.25) int -> r12 "Inlining Arg" -; V15 tmp11 [V15,T02] ( 3, 24.37) ref -> [rsp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V07 tmp3 [V07,T12] ( 5, 4 ) ref -> rsi +; V08 tmp4 [V08,T10] ( 5, 5 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V09 tmp5 [V09,T16] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V10 tmp6 [V10,T15] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[int]> +; V11 tmp7 [V11,T11] ( 5, 5 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V12 tmp8 [V12,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V13 tmp9 [V13,T14] ( 3, 2.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.IEnumerable`1[int][]> +; V14 tmp10 [V14,T04] ( 2, 16.25) int -> r14 "Inlining Arg" +; V15 tmp11 [V15,T02] ( 3, 24.37) ref -> r15 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V17 tmp13 [V17,T05] ( 3, 12.19) ref -> [rsp+0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V18 tmp14 [V18,T00] ( 4, 32.50) ref -> [rsp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V19 tmp15 [V19,T01] ( 4, 32.50) ref -> [rsp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V20 cse0 [V20,T09] ( 2, 5.06) long -> rbp hoist "CSE - aggressive" -; V21 cse1 [V21,T10] ( 2, 5.06) long -> r14 hoist "CSE - aggressive" -; V22 cse2 [V22,T11] ( 2, 5.06) long -> r15 hoist "CSE - aggressive" -; V23 cse3 [V23,T12] ( 2, 5.06) long -> r13 hoist "CSE - moderate" -; V24 cse4 [V24,T08] ( 3, 6.06) int -> rdi "CSE - moderate"
+; V17 tmp13 [V17,T05] ( 3, 12.19) ref -> r13 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V18 tmp14 [V18,T00] ( 4, 32.50) ref -> r12 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V19 tmp15 [V19,T01] ( 4, 32.50) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V20 cse0 [V20,T08] ( 3, 6.06) int -> rdi "CSE - aggressive" +; V21 cse1 [V21,T09] ( 2, 5.06) long -> rbp hoist "CSE - aggressive"
;
-; Lcl frame size = 72
+; Lcl frame size = 40
G_M61860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -45,7 +42,7 @@ G_M61860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 72
+ sub rsp, 40
mov rbx, rdx ; gcrRegs +[rbx] ;; size=19 bbWeight=1 PerfScore 8.50 @@ -142,98 +139,86 @@ G_M61860_IG07: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr test edi, edi jle G_M61860_IG09 mov rbp, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int]
- mov r14, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] - mov r15, 0xD1FFAB1E ; <unknown class> - mov r13, 0xD1FFAB1E ; <unknown class> - ;; size=62 bbWeight=1 PerfScore 7.75
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M61860_IG08: ; bbWeight=4.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov ecx, esi
- mov r12d, dword ptr [rbx+4*rcx+0x10]
+ mov r14d, dword ptr [rbx+4*rcx+0x10]
mov rcx, rbp call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
- mov gword ptr [rsp+0x40], rax - ; GC ptr vars +{V15} - mov rcx, r14
+ mov r15, rax + ; gcrRegs +[r15] + mov rcx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]
call CORINFO_HELP_NEWSFAST ; gcr arg pop 0
- mov gword ptr [rsp+0x38], rax - ; GC ptr vars +{V17}
+ mov r13, rax + ; gcrRegs +[r13]
xor rcx, rcx ; gcrRegs +[rcx]
- mov gword ptr [rax+0x08], rcx - mov rcx, r15
+ mov gword ptr [r13+0x08], rcx + mov rcx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[rcx] call CORINFO_HELP_NEWSFAST ; gcr arg pop 0
- mov gword ptr [rsp+0x30], rax - ; GC ptr vars +{V18} - lea rcx, bword ptr [rax+0x08]
+ mov r12, rax + ; gcrRegs +[r12] + lea rcx, bword ptr [r12+0x08]
; byrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x38]
+ mov rdx, r13
; gcrRegs +[rdx]
- ; GC ptr vars -{V17}
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx r13]
; byrRegs -[rcx] mov rcx, 0xD1FFAB1E ; code for <unknown method>
- mov rax, gword ptr [rsp+0x30] - ; gcrRegs +[rax] - mov qword ptr [rax+0x18], rcx - mov rcx, r13
+ mov qword ptr [r12+0x18], rcx + mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x28], rax - ; GC ptr vars +{V19} - lea rcx, bword ptr [rax+0x10]
+ mov r13, rax + ; gcrRegs +[r13] + lea rcx, bword ptr [r13+0x10]
; byrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, r12
; gcrRegs +[rdx]
- ; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx r12]
; byrRegs -[rcx] mov ecx, 2 xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[rax] ; gcr arg pop 0
- mov r8, gword ptr [rsp+0x28] - ; gcrRegs +[r8] - lea rcx, bword ptr [r8+0x08]
+ lea rcx, bword ptr [r13+0x08]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx r8] - ; byrRegs -[rcx] - mov rax, gword ptr [rsp+0x40] - ; gcrRegs +[rax] - lea rcx, bword ptr [rax+0x08] - ; byrRegs +[rcx] - mov rdx, gword ptr [rsp+0x28] - ; gcrRegs +[rdx] - ; GC ptr vars -{V19} - call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx] ; byrRegs -[rcx]
+ lea rcx, bword ptr [r15+0x08] + ; byrRegs +[rcx] + mov rdx, r13 + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rdx r13] + ; byrRegs -[rcx]
mov ecx, esi
- mov edx, r12d - mov r8, gword ptr [rsp+0x40]
+ mov edx, r14d + mov r8, r15
; gcrRegs +[r8]
- ; GC ptr vars -{V15}
call [<unknown method>]
- ; gcrRegs -[r8]
+ ; gcrRegs -[r8 r15]
; gcr arg pop 0 inc esi cmp edi, esi jg G_M61860_IG08
- ;; size=187 bbWeight=4.06 PerfScore 144.21
+ ;; size=179 bbWeight=4.06 PerfScore 107.65
G_M61860_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rbx]
- add rsp, 72
+ add rsp, 40
pop rbx pop rbp pop rsi @@ -257,7 +242,7 @@ G_M61860_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 511, prolog size 16, PerfScore 185.21, instruction count 120, allocated bytes for code 511 (MethodHash=0aa00e5b) for method System.Linq.Tests.SelectManyTests:CollectionInterleavedWithLazyEnumerables_ToArray(System.Collections.Generic.IEnumerable`1[int][]):this (FullOpts)
+Total bytes of code 473, prolog size 16, PerfScore 147.90, instruction count 114, allocated bytes for code 473 (MethodHash=0aa00e5b) for method System.Linq.Tests.SelectManyTests:CollectionInterleavedWithLazyEnumerables_ToArray(System.Collections.Generic.IEnumerable`1[int][]):this (FullOpts)
; ============================================================ Unwind Info: @@ -270,7 +255,7 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+20 (+3.03%) : 102926.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)

@@ -13,14 +13,14 @@ ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V03 loc2 [V03,T03] ( 3, 9 ) ref -> rbp class-hnd exact single-def <<unknown class>> ; V04 loc3 [V04 ] ( 8, 14 ) struct (40) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V05 loc4 [V05,T01] ( 4, 16 ) ref -> r15 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_1>
+; V05 loc4 [V05,T01] ( 4, 16 ) ref -> r12 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_1>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_0> ; V08 tmp2 [V08,T02] ( 7, 14 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp3 [V09,T08] ( 2, 4 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
+; V09 tmp3 [V09,T10] ( 2, 4 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref single-def ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
-; V12 tmp6 [V12,T10] ( 4, 3.50) ref -> r8
+; V12 tmp6 [V12,T12] ( 4, 3.50) ref -> r8
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref single-def ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref @@ -30,27 +30,30 @@ ;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V21 tmp15 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V22 tmp16 [V22,T13] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V23 tmp17 [V23,T09] ( 2, 4 ) struct (40) [rsp+0x28] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> -; V24 tmp18 [V24,T15] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V22 tmp16 [V22,T14] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V23 tmp17 [V23,T11] ( 2, 4 ) struct (40) [rsp+0x28] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]> +; V24 tmp18 [V24,T16] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "V23.[000..008)"
-; V27 tmp21 [V27,T14] ( 2, 2 ) int -> rcx single-def "V23.[008..012)"
+; V27 tmp21 [V27,T15] ( 2, 2 ) int -> rcx single-def "V23.[008..012)"
;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref single-def "V23.[012..016)" ;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref single-def "V23.[016..020)" ;* V30 tmp24 [V30 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V32 tmp26 [V32,T16] ( 2, 0 ) ref -> rcx "argument with side effect" -; V33 tmp27 [V33,T17] ( 2, 0 ) ref -> rdx "argument with side effect" -; V34 cse0 [V34,T05] ( 3, 6 ) long -> r14 "CSE - aggressive" -; V35 cse1 [V35,T11] ( 6, 3 ) ref -> rdx multi-def "CSE - aggressive" -; V36 cse2 [V36,T12] ( 3, 3 ) ref -> rbp "CSE - aggressive"
+; V32 tmp26 [V32,T17] ( 2, 0 ) ref -> rcx "argument with side effect" +; V33 tmp27 [V33,T18] ( 2, 0 ) ref -> rdx "argument with side effect" +; V34 cse0 [V34,T08] ( 2, 5 ) long -> r15 hoist "CSE - aggressive" +; V35 cse1 [V35,T09] ( 2, 5 ) long -> r13 hoist "CSE - aggressive" +; V36 cse2 [V36,T05] ( 3, 6 ) long -> r14 "CSE - aggressive" +; V37 cse3 [V37,T13] ( 6, 3 ) ref -> rdx multi-def "CSE - moderate"
; ; Lcl frame size = 120 G_M16238_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 push r14
+ push r13 + push r12
push rdi push rsi push rbp @@ -65,7 +68,7 @@ G_M16238_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x70], rax mov rsi, rcx ; gcrRegs +[rsi]
- ;; size=46 bbWeight=1 PerfScore 14.08
+ ;; size=50 bbWeight=1 PerfScore 16.08
G_M16238_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz mov rcx, 0xD1FFAB1E ; System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_0 call CORINFO_HELP_NEWSFAST @@ -91,9 +94,7 @@ G_M16238_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rbp, 0xD1FFAB1E - ; gcrRegs +[rbp] - mov r8, rbp
+ mov r8, 0xD1FFAB1E
; gcrRegs +[r8] mov r9d, 2 call [<unknown method>] @@ -101,8 +102,8 @@ G_M16238_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; gcr arg pop 0 test eax, eax jne SHORT G_M16238_IG04
- ;; size=102 bbWeight=1 PerfScore 14.25 -G_M16238_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=99 bbWeight=1 PerfScore 14.00 +G_M16238_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -111,20 +112,20 @@ G_M16238_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M16238_IG04: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M16238_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov r8, rbp
+ mov r8, 0xD1FFAB1E
; gcrRegs +[r8] mov r9d, 2 call [<unknown method>]
- ; gcrRegs -[rcx rdx rbp r8]
+ ; gcrRegs -[rcx rdx r8]
; gcr arg pop 0 test eax, eax jne SHORT G_M16238_IG06
- ;; size=32 bbWeight=1 PerfScore 5.25
+ ;; size=39 bbWeight=1 PerfScore 5.25
G_M16238_IG05: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] @@ -203,28 +204,30 @@ G_M16238_IG10: ; bbWeight=1, extend ; gcr arg pop 0 test eax, eax je G_M16238_IG12
- ;; size=55 bbWeight=1 PerfScore 9.50
+ mov r15, 0xD1FFAB1E ; System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_1 + mov r13, 0xD1FFAB1E ; <unknown class> + ;; size=75 bbWeight=1 PerfScore 10.00
G_M16238_IG11: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_1
+ mov rcx, r15
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
- mov r15, rax - ; gcrRegs +[r15] - lea rcx, bword ptr [r15+0x08]
+ mov r12, rax + ; gcrRegs +[r12] + lea rcx, bword ptr [r12+0x08]
; byrRegs +[rcx] mov rdx, rbx ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- lea rdi, bword ptr [r15+0x10]
+ lea rdi, bword ptr [r12+0x10]
; byrRegs +[rdi] lea rsi, bword ptr [rsp+0x68] ; byrRegs +[rsi] call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF
- mov rcx, 0xD1FFAB1E ; <unknown class>
+ mov rcx, r13
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; byrRegs -[rsi rdi] @@ -233,10 +236,10 @@ G_M16238_IG11: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, ; gcrRegs +[rsi] lea rcx, bword ptr [rsi+0x08] ; byrRegs +[rcx]
- mov rdx, r15
+ mov rdx, r12
; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx r15]
+ ; gcrRegs -[rax rdx r12]
; byrRegs -[rcx] mov r8, 0xD1FFAB1E ; code for <unknown method> mov qword ptr [rsi+0x18], r8 @@ -259,7 +262,7 @@ G_M16238_IG11: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, ; gcr arg pop 0 test eax, eax jne G_M16238_IG11
- ;; size=152 bbWeight=4 PerfScore 84.00
+ ;; size=140 bbWeight=4 PerfScore 84.00
G_M16238_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rbx rbp] add rsp, 120 @@ -267,10 +270,12 @@ G_M16238_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp pop rsi pop rdi
+ pop r12 + pop r13
pop r14 pop r15 ret
- ;; size=13 bbWeight=1 PerfScore 4.25
+ ;; size=17 bbWeight=1 PerfScore 5.25
G_M16238_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -303,7 +308,7 @@ G_M16238_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=73 bbWeight=0 PerfScore 0.00
-Total bytes of code 661, prolog size 43, PerfScore 157.54, instruction count 140, allocated bytes for code 661 (MethodHash=aa32c091) for method System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
+Total bytes of code 681, prolog size 47, PerfScore 160.79, instruction count 145, allocated bytes for code 681 (MethodHash=aa32c091) for method System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
; ============================================================ Unwind Info: @@ -311,15 +316,17 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x10 + CountOfUnwindCodes: 9
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78 + CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+20 (+3.68%) : 9669.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)

@@ -22,20 +22,20 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> r10 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rax "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> rbx "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> rdx single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r9 "field V03._index (fldOffset=0x8)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r10 "field V03._index (fldOffset=0x8)" P-INDEP
; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r11 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP ;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> r10 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rax "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [rbp-0x28] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP ; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> rsi "field V06.array (fldOffset=0x0)" P-INDEP ; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rdx single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> rdx single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> r10 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rax "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> r8 "CSE - aggressive" ; @@ -92,83 +92,62 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x20], rax
+ mov r9, rax + ; gcrRegs +[r9] + mov gword ptr [rbp-0x20], r9
; GC ptr vars +{V02}
- ;; size=62 bbWeight=0.50 PerfScore 7.50 -G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=65 bbWeight=0.50 PerfScore 7.62 +G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax]
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, gword ptr [rcx+0x68] ; gcrRegs +[rdx] mov r8d, dword ptr [rdx+0x08]
+ xor eax, eax
xor r10d, r10d
- xor r9d, r9d
test r8d, r8d
- jle SHORT G_M10501_IG11 - ;; size=23 bbWeight=0.50 PerfScore 3.38 -G_M10501_IG07: ; bbWeight=4, gcrefRegs=000F {rax rcx rdx rbx}, byrefRegs=0000 {}, byref, isz - mov r10d, r10d - lea r10, [r10+2*r10] - lea r10, bword ptr [rdx+8*r10+0x10] - ; byrRegs +[r10] - mov r11, gword ptr [r10]
+ jle G_M10501_IG17 + ;; size=26 bbWeight=0.50 PerfScore 3.38 +G_M10501_IG07: ; bbWeight=4, gcrefRegs=020E {rcx rdx rbx r9}, byrefRegs=0000 {}, byref, isz + mov eax, eax + lea rax, [rax+2*rax] + lea rax, bword ptr [rdx+8*rax+0x10] + ; byrRegs +[rax] + mov r11, gword ptr [rax]
; gcrRegs +[r11]
- mov r10, gword ptr [r10+0x10] - ; gcrRegs +[r10] - ; byrRegs -[r10]
+ mov rax, gword ptr [rax+0x10] + ; gcrRegs +[rax] + ; byrRegs -[rax]
cmp r11, gword ptr [rcx+0x50] je SHORT G_M10501_IG09
- ;; size=25 bbWeight=4 PerfScore 39.00 -G_M10501_IG08: ; bbWeight=2, gcrefRegs=0C0F {rax rcx rdx rbx r10 r11}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=4 PerfScore 39.00 +G_M10501_IG08: ; bbWeight=2, gcrefRegs=0A0F {rax rcx rdx rbx r9 r11}, byrefRegs=0000 {}, byref
cmp r11, gword ptr [rcx+0x48]
- jne SHORT G_M10501_IG10 - ;; size=6 bbWeight=2 PerfScore 8.00 -G_M10501_IG09: ; bbWeight=2, gcrefRegs=0407 {rax rcx rdx r10}, byrefRegs=0000 {}, byref, isz
+ jne G_M10501_IG12 + ;; size=10 bbWeight=2 PerfScore 8.00 +G_M10501_IG09: ; bbWeight=2, gcrefRegs=0207 {rax rcx rdx r9}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r11]
- mov rbx, r10
+ mov rbx, rax
; gcrRegs +[rbx] cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M10501_IG12 - ;; size=9 bbWeight=2 PerfScore 8.50 -G_M10501_IG10: ; bbWeight=4, gcrefRegs=000F {rax rcx rdx rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r10] - lea r10d, [r9+0x01] - mov r9d, r10d - cmp r8d, r9d - jg SHORT G_M10501_IG07 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rcx rdx] - mov rcx, gword ptr [rbp+0x10] - ; gcrRegs +[rcx] - mov rax, gword ptr [rbp-0x20] - ; gcrRegs +[rax] - mov rdx, rbx - ; gcrRegs +[rdx] - mov r8, rax - ; gcrRegs +[r8] - ; GC ptr vars -{V00} - call [<unknown method>] - ; gcrRegs -[rax rcx rdx rbx r8] - ; gcr arg pop 0 - jmp G_M10501_IG17 - ;; size=25 bbWeight=0.50 PerfScore 3.75 -G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rax rcx rbx] - ; GC ptr vars +{V00}
+ je G_M10501_IG12 + ;; size=13 bbWeight=2 PerfScore 8.50 +G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=020A {rcx rbx r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rdx]
movzx rdx, byte ptr [rcx+0x42] movzx r8, byte ptr [rcx+0x44] or edx, r8d
- je SHORT G_M10501_IG13
+ je SHORT G_M10501_IG11
mov rcx, gword ptr [rcx+0x08] mov rsi, gword ptr [rbp+0x10] ; gcrRegs +[rsi] mov rdx, gword ptr [rsi+0x18] ; gcrRegs +[rdx]
- mov r8, rax
+ mov r8, r9
; gcrRegs +[r8] call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])]
- ; gcrRegs -[rax rcx rdx r8]
+ ; gcrRegs -[rcx rdx r8-r9]
; gcr arg pop 0 mov rcx, gword ptr [rsi+0x10] ; gcrRegs +[rcx] @@ -179,24 +158,24 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])] ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0
+ ;; size=53 bbWeight=0.50 PerfScore 10.75 +G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + mov rsi, gword ptr [rbp+0x10] + ; gcrRegs +[rsi] + movzx r8, byte ptr [rsi+0x43] + movzx rdx, byte ptr [rsi+0x44] + or r8d, edx
mov rcx, rsi ; gcrRegs +[rcx]
- mov rax, gword ptr [rbp-0x20] - ; gcrRegs +[rax] - ;; size=60 bbWeight=0.50 PerfScore 11.38 -G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - movzx r8, byte ptr [rcx+0x43] - movzx rdx, byte ptr [rcx+0x44] - or r8d, edx - je SHORT G_M10501_IG11
+ je G_M10501_IG17
mov r8, gword ptr [rcx+0x70] ; gcrRegs +[r8] mov rdx, gword ptr [rcx+0x28] ; gcrRegs +[rdx] mov rcx, rbx call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]]
- ; gcrRegs -[rcx rdx r8]
+ ; gcrRegs -[rcx rdx rsi r8] +[rax]
; gcr arg pop 0 mov gword ptr [rbp-0x28], rax ; GC ptr vars +{V21} @@ -210,24 +189,41 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0 mov rsi, rax ; gcrRegs +[rsi] cmp dword ptr [rsi+0x08], 0
- je G_M10501_IG11 - ;; size=62 bbWeight=0.50 PerfScore 11.38 -G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rdi, gword ptr [rbp+0x10] - ; gcrRegs +[rdi] - cmp byte ptr [rdi+0x43], 0 - je SHORT G_M10501_IG15 - mov r8, gword ptr [rdi+0x08] - ; gcrRegs +[r8] - mov rcx, rdi
+ mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
+ je SHORT G_M10501_IG17 + mov r9, gword ptr [rbp-0x20] + ; gcrRegs +[r9] + jmp SHORT G_M10501_IG14 + ;; size=79 bbWeight=0.50 PerfScore 14.00 +G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=020E {rcx rdx rbx r9}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax rsi] +[rdx] + ; GC ptr vars -{V21} + lea eax, [r10+0x01] + mov r10d, eax + cmp r8d, r10d + jg G_M10501_IG07 + ;; size=16 bbWeight=4 PerfScore 8.00 +G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=020A {rcx rbx r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdx] + jmp SHORT G_M10501_IG17 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M10501_IG14: ; bbWeight=0.50, gcVars=0000000000000A02 {V00 V02 V21}, gcrefRegs=024A {rcx rbx rsi r9}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rsi] + ; GC ptr vars +{V21} + cmp byte ptr [rcx+0x43], 0 + je SHORT G_M10501_IG15 + mov r8, gword ptr [rcx+0x08] + ; gcrRegs +[r8]
mov rdx, rsi ; gcrRegs +[rdx] xor r9d, r9d
+ ; gcrRegs -[r9]
call [<unknown method>] ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0
+ mov rdi, gword ptr [rbp+0x10] + ; gcrRegs +[rdi]
mov r8, gword ptr [rdi+0x10] ; gcrRegs +[r8] mov rcx, rdi @@ -238,23 +234,26 @@ G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0
- ;; size=51 bbWeight=0.50 PerfScore 8.25 -G_M10501_IG15: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi ; gcrRegs +[rcx]
+ mov r9, gword ptr [rbp-0x20] + ; gcrRegs +[r9] + ;; size=55 bbWeight=0.50 PerfScore 8.75 +G_M10501_IG15: ; bbWeight=0.50, gcrefRegs=024A {rcx rbx rsi r9}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi]
mov rdx, gword ptr [rbp-0x28] ; gcrRegs +[rdx] mov r8, rsi ; gcrRegs +[r8]
- mov r9, gword ptr [rbp-0x20] - ; gcrRegs +[r9]
call [<unknown method>] ; gcrRegs -[rcx rdx rsi r8-r9] ; gcr arg pop 0 ...

+12 (+3.82%) : 129188.dasm - System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)

@@ -23,9 +23,9 @@ ;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp8 [V13,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp9 [V14,T10] ( 3, 20 ) ref -> rcx class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
-; V15 tmp10 [V15,T12] ( 2, 16 ) ref -> rax class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
+; V15 tmp10 [V15,T12] ( 2, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
; V16 tmp11 [V16,T07] ( 4, 28 ) ref -> rdx class-hnd "Inlining Arg" <ubyte[]>
-; V17 tmp12 [V17,T01] ( 6, 48 ) ref -> r13 class-hnd exact "Inlining Arg" <System.IO.Compression.InputBuffer>
+; V17 tmp12 [V17,T01] ( 6, 48 ) ref -> registers class-hnd exact "Inlining Arg" <System.IO.Compression.InputBuffer>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]> ;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -40,7 +40,7 @@ ;* V29 tmp24 [V29,T21] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x8)" P-INDEP ; V30 tmp25 [V30,T18] ( 2, 8 ) int -> r15 "field V19._length (fldOffset=0xc)" P-INDEP ;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
-; V32 tmp27 [V32 ] ( 3, 48 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
+; V32 tmp27 [V32 ] ( 3, 48 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
; V33 tmp28 [V33,T06] ( 2, 32 ) ref -> rcx "argument with side effect" ; V34 tmp29 [V34,T09] ( 3, 24 ) ref -> rcx "argument with side effect" ; V35 tmp30 [V35,T25] ( 2, 0 ) ref -> rdx "argument with side effect" @@ -48,44 +48,43 @@ ; V37 cse1 [V37,T15] ( 3, 12 ) ref -> rdx "CSE - moderate" ; V38 cse2 [V38,T20] ( 3, 6 ) ref -> rdx "CSE - moderate" ;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M58280_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 push r14
- push r13
push rdi push rsi push rbp push rbx
- sub rsp, 48
+ sub rsp, 56
xor eax, eax
- mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rax
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 8.75
+ ;; size=22 bbWeight=1 PerfScore 7.75
G_M58280_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref ; byrRegs +[rdx] mov rsi, bword ptr [rdx] ; byrRegs +[rsi] mov edi, dword ptr [rdx+0x08] cmp gword ptr [rbx+0x10], 0
- je G_M58280_IG13
+ je G_M58280_IG14
mov ebp, edi ;; size=19 bbWeight=1 PerfScore 8.25 G_M58280_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz ; byrRegs -[rdx] mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx]
- mov bword ptr [rsp+0x20], rsi - mov dword ptr [rsp+0x28], edi - lea rdx, [rsp+0x20]
+ mov bword ptr [rsp+0x28], rsi + mov dword ptr [rsp+0x30], edi + lea rdx, [rsp+0x28]
cmp dword ptr [rcx], ecx call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0 cmp eax, edi
- ja G_M58280_IG15
+ ja G_M58280_IG16
mov r14d, eax add rsi, r14 sub edi, eax @@ -100,20 +99,20 @@ G_M58280_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=2 PerfScore 7.00
-G_M58280_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+G_M58280_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov r14d, edi test r14d, r14d
- je SHORT G_M58280_IG11 - ;; size=8 bbWeight=8 PerfScore 12.00
+ je G_M58280_IG12 + ;; size=12 bbWeight=8 PerfScore 12.00
G_M58280_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp dword ptr [rcx+0x58], 24
- je SHORT G_M58280_IG11
+ je SHORT G_M58280_IG12
;; size=10 bbWeight=4 PerfScore 24.00 G_M58280_IG07: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref, isz cmp dword ptr [rcx+0x58], 23
- je SHORT G_M58280_IG11
+ je SHORT G_M58280_IG12
;; size=6 bbWeight=2 PerfScore 8.00 G_M58280_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz ; gcrRegs -[rcx] @@ -130,56 +129,65 @@ G_M58280_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, ; gcr arg pop 0 mov r15d, eax test r15d, r15d
- jle SHORT G_M58280_IG11
+ jle SHORT G_M58280_IG12
mov rdx, gword ptr [rbx+0x20] ; gcrRegs +[rdx] cmp dword ptr [rdx+0x08], r15d
- jl SHORT G_M58280_IG14 - mov rax, gword ptr [rbx+0x18] - ; gcrRegs +[rax] - mov r13, gword ptr [rax+0x10] - ; gcrRegs +[r13] - cmp byte ptr [r13], r13b
+ jl SHORT G_M58280_IG15 + mov rcx, gword ptr [rbx+0x18] + ; gcrRegs +[rcx] + mov rdi, gword ptr [rcx+0x10] + ; gcrRegs +[rdi] + cmp byte ptr [rdi], dil
test rdx, rdx
- je SHORT G_M58280_IG15 - ;; size=60 bbWeight=4 PerfScore 116.00 -G_M58280_IG09: ; bbWeight=2, gcrefRegs=200C {rdx rbx r13}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs -[rax]
+ je G_M58280_IG16 + ;; size=63 bbWeight=4 PerfScore 116.00 +G_M58280_IG09: ; bbWeight=2, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0040 {rsi}, byref, isz + ; gcrRegs -[rcx]
cmp dword ptr [rdx+0x08], r15d
- jb SHORT G_M58280_IG15
+ jb SHORT G_M58280_IG16
;; size=6 bbWeight=2 PerfScore 8.00
-G_M58280_IG10: ; bbWeight=4, gcrefRegs=200C {rdx rbx r13}, byrefRegs=0040 {rsi}, byref - cmp dword ptr [r13+0x1C], 0
+G_M58280_IG10: ; bbWeight=4, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0040 {rsi}, byref, isz + cmp dword ptr [rdi+0x1C], 0 + jne SHORT G_M58280_IG11 + mov rax, rdi + ; gcrRegs +[rax]
mov edi, r14d
- jne G_M58280_IG03 - lea rcx, bword ptr [r13+0x10]
+ ; gcrRegs -[rdi] + mov r14, rax + ; gcrRegs +[r14] + lea rcx, bword ptr [r14+0x10]
; byrRegs +[rcx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- xor ecx, ecx - mov dword ptr [r13+0x18], ecx - mov dword ptr [r13+0x1C], r15d
+ xor eax, eax + mov dword ptr [r14+0x18], eax + mov dword ptr [r14+0x1C], r15d
jmp G_M58280_IG03
- ;; size=38 bbWeight=4 PerfScore 40.00 -G_M58280_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r13]
+ ;; size=39 bbWeight=4 PerfScore 42.00 +G_M58280_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref + ; gcrRegs -[r14] + mov edi, r14d + jmp G_M58280_IG03 + ;; size=8 bbWeight=2 PerfScore 4.50 +G_M58280_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx]
; byrRegs -[rsi] mov eax, ebp sub eax, edi ;; size=4 bbWeight=1 PerfScore 0.50
-G_M58280_IG12: ; bbWeight=1, epilog, nogc, extend - add rsp, 48
+G_M58280_IG13: ; bbWeight=1, epilog, nogc, extend + add rsp, 56
pop rbx pop rbp pop rsi pop rdi
- pop r13
pop r14 pop r15 ret
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M58280_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=1 PerfScore 4.25 +G_M58280_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -188,7 +196,7 @@ G_M58280_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { ; gcr arg pop 0 int3 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M58280_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58280_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -210,13 +218,13 @@ G_M58280_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx rbx] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M58280_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58280_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 314, prolog size 21, PerfScore 345.25, instruction count 93, allocated bytes for code 314 (MethodHash=bf671c57) for method System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
+Total bytes of code 326, prolog size 19, PerfScore 350.25, instruction count 95, allocated bytes for code 326 (MethodHash=bf671c57) for method System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -224,16 +232,15 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0E - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 7
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

realworld.run.windows.x64.checked.mch

-35 (-30.97%) : 18178.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,12 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov r8d, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=7 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp r8d, eax + jae SHORT G_M3357_IG13
mov r10d, r8d movzx r10, word ptr [rcx+2*r10+0x0C] cmp r10d, 32 je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d cmp eax, r8d jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx] - cmp r8d, eax - jae SHORT G_M3357_IG17 - mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C] - cmp r10d, 32 - je SHORT G_M3357_IG12 - ;; size=20 bbWeight=0.04 PerfScore 0.19 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp r10d, 9 - jne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - cmp eax, r8d - jg SHORT G_M3357_IG10 - ;; size=8 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d sub eax, edx ;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_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 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info:

-15 (-1.87%) : 24009.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)

@@ -77,7 +77,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, cmp edx, 1 je G_M39186_IG23 xor ebx, ebx
- jmp G_M39186_IG36
+ jmp G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.75 G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz mov dword ptr [rcx+0x28], -1 @@ -262,7 +262,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, ; gcrRegs +[rbx] xor esi, esi cmp dword ptr [rcx+0x30], 0
- jle G_M39186_IG30
+ jle G_M39186_IG37
;; size=21 bbWeight=0.50 PerfScore 2.75 G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx] @@ -271,10 +271,10 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r11, gword ptr [rcx+0x20] ; gcrRegs +[r11] cmp esi, dword ptr [r11+0x10]
- jae G_M39186_IG31
+ jae SHORT G_M39186_IG27
mov r11, gword ptr [r11+0x08] cmp esi, dword ptr [r11+0x08]
- jae G_M39186_IG32
+ jae SHORT G_M39186_IG26
mov eax, esi mov rdi, gword ptr [r11+8*rax+0x10] ; gcrRegs +[rdi] @@ -285,11 +285,36 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- je G_M39186_IG35 - test rbx, rbx
jne SHORT G_M39186_IG28
- ;; size=68 bbWeight=4 PerfScore 85.00 -G_M39186_IG25: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=51 bbWeight=4 PerfScore 80.00 +G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx rdi] + xor ebx, ebx + mov rcx, gword ptr [rbp+0x10] + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx] + ; gcr arg pop 0 + mov rcx, gword ptr [rbp+0x10] + ; gcrRegs +[rcx] + jmp G_M39186_IG38 + ;; size=21 bbWeight=0.50 PerfScore 3.62 +G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M39186_IG28: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx rdi] + test rbx, rbx + jne SHORT G_M39186_IG33 + ;; size=5 bbWeight=4 PerfScore 5.00 +G_M39186_IG29: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] mov rbx, gword ptr [rbp+0x10] ; gcrRegs +[rbx] @@ -298,12 +323,19 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr mov rdx, qword ptr [rdx] mov rax, qword ptr [rdx+0x38] test rax, rax
- je SHORT G_M39186_IG33
+ je SHORT G_M39186_IG31
;; size=23 bbWeight=2 PerfScore 20.50
-G_M39186_IG26: ; bbWeight=1.60, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rax
- ;; size=3 bbWeight=1.60 PerfScore 0.40 -G_M39186_IG27: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M39186_IG32 + ;; size=5 bbWeight=1.60 PerfScore 3.60 +G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov rcx, rax + ;; size=18 bbWeight=0.40 PerfScore 0.60 +G_M39186_IG32: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
movsxd rdx, dword ptr [rbx+0x30] call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] @@ -312,7 +344,7 @@ G_M39186_IG27: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, ; gcrRegs +[r14] mov rbx, r14 ;; size=15 bbWeight=2 PerfScore 11.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r14] mov r14, gword ptr [rbp+0x10] ; gcrRegs +[r14] @@ -321,9 +353,18 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, mov rdx, qword ptr [rdx] mov r11, qword ptr [rdx+0x30] test r11, r11
- je SHORT G_M39186_IG34
+ je SHORT G_M39186_IG35
;; size=23 bbWeight=4 PerfScore 41.00
-G_M39186_IG29: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M39186_IG36 + ;; size=2 bbWeight=3.20 PerfScore 6.40 +G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r11, rax + ;; size=18 bbWeight=0.80 PerfScore 1.20 +G_M39186_IG36: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
mov rcx, rdi ; gcrRegs +[rcx] call [r11] @@ -341,7 +382,7 @@ G_M39186_IG29: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 cmp esi, dword ptr [r14+0x30] jl G_M39186_IG24 ;; size=32 bbWeight=4 PerfScore 37.00
-G_M39186_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] mov r14, gword ptr [rbp+0x10] ; gcrRegs +[r14] @@ -356,51 +397,12 @@ G_M39186_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov ebx, 1 mov rcx, r14 ; gcrRegs +[rcx]
- jmp SHORT G_M39186_IG36 - ;; size=34 bbWeight=0.50 PerfScore 3.12 -G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx r14] - call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M39186_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M39186_IG33: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rdi] - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov rcx, rax - jmp G_M39186_IG27 - ;; size=23 bbWeight=0.40 PerfScore 1.40 -G_M39186_IG34: ; bbWeight=0.80, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r14] - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov r11, rax - jmp SHORT G_M39186_IG29 - ;; size=20 bbWeight=0.80 PerfScore 2.80 -G_M39186_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx rdi r14] - mov r14, gword ptr [rbp+0x10] - ; gcrRegs +[r14] - xor ebx, ebx - mov rcx, r14 - ; gcrRegs +[rcx] - call [<unknown method>] - ; gcrRegs -[rcx r14] - ; gcr arg pop 0 - mov rcx, gword ptr [rbp+0x10] - ; gcrRegs +[rcx] - ;; size=19 bbWeight=0.50 PerfScore 2.75 -G_M39186_IG36: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 2.12 +G_M39186_IG38: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
mov eax, ebx ;; size=2 bbWeight=1 PerfScore 0.25
-G_M39186_IG37: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
add rsp, 64 pop rbx pop rsi @@ -409,7 +411,7 @@ G_M39186_IG37: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.75
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[rcx] ; GC ptr vars +{V03 V23} push rbp @@ -422,9 +424,9 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x60] ;; size=23 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x30], 0
- je SHORT G_M39186_IG40
+ je SHORT G_M39186_IG42
mov rcx, gword ptr [rbp-0x30] ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -433,10 +435,10 @@ G_M39186_IG39: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, funclet epilog, nogc, extend
+G_M39186_IG43: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -445,7 +447,7 @@ G_M39186_IG41: ; bbWeight=0, funclet epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0 PerfScore 0.00
-G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp push r14 push rdi @@ -456,7 +458,7 @@ G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x60] ;; size=23 bbWeight=0 PerfScore 0.00
-G_M39186_IG43: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG45: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] call [<unknown method>] @@ -464,7 +466,7 @@ G_M39186_IG43: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000 ; gcr arg pop 0 nop ;; size=11 bbWeight=0 PerfScore 0.00
-G_M39186_IG44: ; bbWeight=0, funclet epilog, nogc, extend
+G_M39186_IG46: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 ...

-2 (-0.08%) : 2140.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -28,19 +28,19 @@ ; V17 loc13 [V17,T42] ( 6, 12 ) int -> r10 ; V18 loc14 [V18,T43] ( 3, 12 ) ref -> rax class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [rsp+0x50] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [rsp+0x50] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]> ; V22 OutArgs [V22 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T72] ( 3, 2 ) ref -> rdx ;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> rdx
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> rdx
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V27 tmp5 [V27,T37] ( 2, 16 ) int -> rdx "impAppendStmt" ;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [rsp+0xAC] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [rsp+0xAC] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T34] ( 2, 16 ) byref -> [rsp+0x48] spill-single-def "Inlining Arg" ;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -51,7 +51,7 @@ ;* V40 tmp18 [V40,T59] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V41 tmp19 [V41,T60] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V42 tmp20 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V43 tmp21 [V43,T20] ( 6, 24 ) int -> [rsp+0xA8] spill-single-def "Inline return value spill temp"
+; V43 tmp21 [V43,T30] ( 5, 20 ) int -> [rsp+0xA8] spill-single-def "Inline return value spill temp"
;* V44 tmp22 [V44 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg" ;* V45 tmp23 [V45 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg" ;* V46 tmp24 [V46 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg" @@ -74,13 +74,13 @@ ;* V63 tmp41 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V64 tmp42 [V64,T51] ( 2, 8 ) byref -> [rsp+0x40] spill-single-def "Inlining Arg" ;* V65 tmp43 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V66 tmp44 [V66,T23] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <ushort[]> -; V67 tmp45 [V67,T26] ( 3, 24 ) int -> rcx "Inlining Arg" -; V68 tmp46 [V68,T27] ( 3, 24 ) int -> rdx "Inlining Arg"
+; V66 tmp44 [V66,T22] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <ushort[]> +; V67 tmp45 [V67,T25] ( 3, 24 ) int -> rcx "Inlining Arg" +; V68 tmp46 [V68,T26] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V69 tmp47 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V70 tmp48 [V70,T35] ( 2, 16 ) ref -> r8 class-hnd "Inlining Arg" <ushort[]> ; V71 tmp49 [V71,T38] ( 2, 16 ) int -> r10 "Inlining Arg"
-; V72 tmp50 [V72,T28] ( 3, 24 ) int -> r9 "Inlining Arg"
+; V72 tmp50 [V72,T27] ( 3, 24 ) int -> r9 "Inlining Arg"
;* V73 tmp51 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V74 tmp52 [V74,T15] ( 8, 40 ) int -> r12 "Inlining Arg" ; V75 tmp53 [V75,T63] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" <ushort[]> @@ -97,14 +97,14 @@ ;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V87 tmp65 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder> ; V88 tmp66 [V88,T04] ( 8, 256 ) int -> r12 "Inlining Arg"
-; V89 tmp67 [V89,T24] ( 3, 24 ) ref -> rcx class-hnd "Inline stloc first use temp" <ushort[]> -; V90 tmp68 [V90,T29] ( 3, 24 ) int -> r8 "Inline stloc first use temp"
+; V89 tmp67 [V89,T23] ( 3, 24 ) ref -> rcx class-hnd "Inline stloc first use temp" <ushort[]> +; V90 tmp68 [V90,T28] ( 3, 24 ) int -> r8 "Inline stloc first use temp"
;* V91 tmp69 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V92 tmp70 [V92 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V93 tmp71 [V93 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ; V94 tmp72 [V94,T65] ( 2, 5 ) byref -> rbp single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V95 tmp73 [V95,T66] ( 2, 5 ) int -> r14 "field V03._length (fldOffset=0x8)" P-INDEP
-; V96 tmp74 [V96,T30] ( 5, 20 ) byref -> [rsp+0x38] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp74 [V96,T29] ( 5, 20 ) byref -> [rsp+0x38] "field V09._reference (fldOffset=0x0)" P-INDEP
; V97 tmp75 [V97,T19] ( 7, 30 ) int -> [rsp+0xA0] "field V09._length (fldOffset=0x8)" P-INDEP ;* V98 tmp76 [V98 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V99 tmp77 [V99 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP @@ -295,9 +295,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 jl G_M4730_IG61 cmp eax, dword ptr [rsp+0x9C] ja G_M4730_IG75
- mov ecx, eax - not ecx - shr ecx, 31
+ mov ecx, 1
call [<unknown method>] ; gcr arg pop 0 mov rcx, rbx @@ -312,7 +310,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ; gcr arg pop 0 add r13d, dword ptr [rsp+0xA8] cmp r13d, r12d
- ;; size=233 bbWeight=4 PerfScore 214.00
+ ;; size=231 bbWeight=4 PerfScore 211.00
G_M4730_IG08: ; bbWeight=4, isz, extend jae G_M4730_IG63 mov ecx, r13d @@ -516,7 +514,7 @@ G_M4730_IG28: ; bbWeight=16, gcVars=00000000000000000000000000000000 {}, je G_M4730_IG68 jmp SHORT G_M4730_IG28 ;; size=36 bbWeight=16 PerfScore 132.00
-G_M4730_IG29: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG29: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; GC ptr vars +{V96} mov dword ptr [rsp+0xC0], r8d mov dword ptr [rsp+0xB8], edx @@ -555,7 +553,7 @@ G_M4730_IG30: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g mov edx, r9d mov dword ptr [rsp+0xA0], edx ;; size=108 bbWeight=2 PerfScore 33.00
-G_M4730_IG31: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs -[r10] ; GC ptr vars -{V64} cmp r13d, r12d @@ -582,7 +580,7 @@ G_M4730_IG31: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V96} test r15, r15 je SHORT G_M4730_IG34 ;; size=71 bbWeight=4 PerfScore 65.00
-G_M4730_IG32: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V96}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG32: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V96}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[rdx r12] mov r12d, dword ptr [rsp+0xA0] test r12d, r12d @@ -618,7 +616,7 @@ G_M4730_IG33: ; bbWeight=2, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRe ; gcrRegs +[r12] mov rax, gword ptr [rsp+0x60] ;; size=51 bbWeight=2 PerfScore 17.00
-G_M4730_IG34: ; bbWeight=4, gcVars=00000000000000000000000040010000 {V13 V96}, gcrefRegs=90C9 {rax rbx rsi rdi r12 r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M4730_IG34: ; bbWeight=4, gcVars=00000000000000000000000020010000 {V13 V96}, gcrefRegs=90C9 {rax rbx rsi rdi r12 r15}, byrefRegs=0020 {rbp}, gcvars, byref
; gcrRegs -[rdx] ; GC ptr vars -{V12} test r12, r12 @@ -637,7 +635,7 @@ G_M4730_IG35: ; bbWeight=2, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRe ; GC ptr vars +{V12} jne G_M4730_IG43 ;; size=19 bbWeight=2 PerfScore 8.00
-G_M4730_IG36: ; bbWeight=4, gcVars=00000000000000000000000040030000 {V12 V13 V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M4730_IG36: ; bbWeight=4, gcVars=00000000000000000000000020030000 {V12 V13 V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
; gcrRegs -[rax] mov rdx, gword ptr [rsp+0x58] ; gcrRegs +[rdx] @@ -739,7 +737,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g add dword ptr [rbx+0x18], r12d jmp SHORT G_M4730_IG42 ;; size=45 bbWeight=2 PerfScore 27.50
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V96}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V96}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
; gcrRegs +[rax] ; GC ptr vars +{V13 V16 V96} mov gword ptr [rsp+0x60], rax @@ -770,7 +768,7 @@ G_M4730_IG42: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs= ; gcr arg pop 0 jmp G_M4730_IG06 ;; size=14 bbWeight=16 PerfScore 84.00
-G_M4730_IG43: ; bbWeight=8, gcVars=00000000000000000000000040030000 {V12 V13 V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG43: ; bbWeight=8, gcVars=00000000000000000000000020030000 {V12 V13 V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; GC ptr vars +{V12 V13 V16 V17 V96} mov rdx, gword ptr [rsp+0x58] ; gcrRegs +[rdx] @@ -807,7 +805,7 @@ G_M4730_IG43: ; bbWeight=8, gcVars=00000000000000000000000040030000 {V12 ; GC ptr vars +{V12} mov rax, gword ptr [rsp+0x50] ;; size=107 bbWeight=8 PerfScore 142.00
-G_M4730_IG44: ; bbWeight=8, gcVars=00000000000000000000000000220000 {V12 V20}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG44: ; bbWeight=8, gcVars=00000000000000000000000000120000 {V12 V20}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[rdx] mov rcx, rax ; gcrRegs +[rcx] @@ -1144,7 +1142,7 @@ G_M4730_IG75: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 2489, prolog size 56, PerfScore 5564.58, instruction count 583, allocated bytes for code 2489 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2487, prolog size 56, PerfScore 5561.58, instruction count 581, allocated bytes for code 2487 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================ Unwind Info:

+5 (+1.71%) : 28333.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int

@@ -10,15 +10,15 @@ ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T03] ( 6, 10 ) ref -> rsi class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]>
-; V04 loc0 [V04 ] ( 8, 13.50) struct ( 8) [rsp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
+; V04 loc0 [V04 ] ( 9, 14 ) struct ( 8) [rsp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
; V05 loc1 [V05,T07] ( 5, 8.50) ref -> r14 ld-addr-op class-hnd <System.__Canon> ;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]> ; V07 loc3 [V07,T00] ( 6, 18.50) int -> r15 ; V08 loc4 [V08,T04] ( 4, 12 ) ref -> r13 class-hnd <System.__Canon> ; V09 loc5 [V09,T09] ( 4, 8 ) int -> rax
-; V10 loc6 [V10,T02] ( 6, 12.50) int -> r15
+; V10 loc6 [V10,T01] ( 7, 17 ) int -> r15
; V11 loc7 [V11,T11] ( 3, 6 ) ref -> r13 class-hnd <System.__Canon> ; V12 loc8 [V12,T12] ( 3, 6 ) int -> rax ; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -28,7 +28,7 @@ ;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V18 tmp5 [V18,T05] ( 4, 8 ) ref -> rdi single-def "field V01.array (fldOffset=0x0)" P-INDEP ; V19 tmp6 [V19,T10] ( 6, 7.50) ubyte -> [rsp+0x28] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp7 [V20,T06] ( 5, 9 ) int -> [rsp+0x2C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
+; V20 tmp7 [V20,T06] ( 6, 9.50) int -> [rsp+0x2C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP ;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP ; V23 cse0 [V23,T08] ( 5, 8.50) int -> rbp "CSE - aggressive" @@ -162,11 +162,12 @@ G_M52223_IG15: ; bbWeight=0.50, epilog, nogc, extend ;; size=15 bbWeight=0.50 PerfScore 2.38 G_M52223_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz xor r15d, r15d
- jmp SHORT G_M52223_IG19 - ;; size=5 bbWeight=0.50 PerfScore 1.12
+ cmp r15d, dword ptr [rsp+0x2C] + jge SHORT G_M52223_IG19 + ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M52223_IG17: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz cmp r15d, ebp
- jae SHORT G_M52223_IG24
+ jae SHORT G_M52223_IG23
mov edx, r15d mov r13, gword ptr [rdi+8*rdx+0x10] ; gcrRegs +[r13] @@ -191,20 +192,18 @@ G_M52223_IG17: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs= test eax, eax je SHORT G_M52223_IG18 cmp eax, 3
- jne SHORT G_M52223_IG22
+ jne SHORT G_M52223_IG21
;; size=49 bbWeight=2 PerfScore 36.00
-G_M52223_IG18: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M52223_IG18: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
inc r15d
- ;; size=3 bbWeight=2 PerfScore 0.50 -G_M52223_IG19: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp r15d, dword ptr [rsp+0x2C] jl SHORT G_M52223_IG17
- ;; size=7 bbWeight=4 PerfScore 12.00 -G_M52223_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 13.00 +G_M52223_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi rdi r14] mov rax, qword ptr [rsp+0x28] ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M52223_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48 pop rbx pop rbp @@ -215,10 +214,10 @@ G_M52223_IG21: ; bbWeight=0.50, epilog, nogc, extend pop r15 ret ;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M52223_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M52223_IG23: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG22: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48 pop rbx pop rbp @@ -229,13 +228,13 @@ G_M52223_IG23: ; bbWeight=0.50, epilog, nogc, extend pop r15 ret ;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M52223_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG23: ; 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 292, prolog size 21, PerfScore 152.50, instruction count 117, allocated bytes for code 292 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 297, prolog size 21, PerfScore 153.50, instruction count 118, allocated bytes for code 297 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================ Unwind Info:

+10 (+1.81%) : 35075.dasm - System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)

@@ -84,14 +84,14 @@ G_M55093_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[r14] mov r15d, dword ptr [rdi+0x08] test r15d, r15d
- je G_M55093_IG14
+ je G_M55093_IG16
;; size=118 bbWeight=1 PerfScore 16.75 G_M55093_IG03: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rcx, gword ptr [rsi+0x50] ; gcrRegs +[rcx] test rcx, rcx
- je G_M55093_IG14
+ je G_M55093_IG16
mov rcx, gword ptr [rcx+0x08] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> @@ -108,9 +108,9 @@ G_M55093_IG04: ; bbWeight=0.50, gcVars=0000000000000100 {V04}, gcrefRegs= ; gcrRegs -[rax rcx] ; gcr arg pop 0 test eax, eax
- je G_M55093_IG13
+ je G_M55093_IG15
;; size=24 bbWeight=0.50 PerfScore 2.38
-G_M55093_IG05: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M55093_IG05: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp-0x38] ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -121,9 +121,9 @@ G_M55093_IG05: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 ; gcrRegs +[rsi] xor r13d, r13d test r15d, r15d
- jle SHORT G_M55093_IG07 - ;; size=28 bbWeight=4 PerfScore 24.00 -G_M55093_IG06: ; bbWeight=16, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ jle G_M55093_IG09 + ;; size=32 bbWeight=4 PerfScore 24.00 +G_M55093_IG06: ; bbWeight=16, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov edx, r13d mov rdx, gword ptr [rdi+8*rdx+0x10] @@ -136,41 +136,12 @@ G_M55093_IG06: ; bbWeight=16, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M55093_IG11 - inc r13d - cmp r15d, r13d - jg SHORT G_M55093_IG06 - ;; size=37 bbWeight=16 PerfScore 184.00 -G_M55093_IG07: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+ je G_M55093_IG13 + ;; size=33 bbWeight=16 PerfScore 160.00 +G_M55093_IG07: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- mov rcx, gword ptr [rbp-0x38] - ; gcrRegs +[rcx] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - jne SHORT G_M55093_IG05 - ;; size=21 bbWeight=4 PerfScore 22.00 -G_M55093_IG08: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx rdi] - jmp G_M55093_IG13 - ;; size=5 bbWeight=0.50 PerfScore 1.00 -G_M55093_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r14] - mov ecx, 8 - call [System.ThrowHelper:ThrowNotSupportedException(int)] - ; gcr arg pop 0 - int3 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M55093_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M55093_IG11: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rdi r14]
test r14, r14
- jne SHORT G_M55093_IG12
+ jne SHORT G_M55093_IG08
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs -[r14] +[rax] @@ -192,9 +163,9 @@ G_M55093_IG11: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 ; gcrRegs -[rax rdx] ; byrRegs -[rcx] ;; size=64 bbWeight=2 PerfScore 14.00
-G_M55093_IG12: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M55093_IG08: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
cmp r13d, dword ptr [rbx+0x08]
- jae SHORT G_M55093_IG10
+ jae SHORT G_M55093_IG12
mov ecx, r13d mov rsi, gword ptr [rbx+8*rcx+0x10] ; gcrRegs +[rsi] @@ -205,7 +176,7 @@ G_M55093_IG12: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M55093_IG09
+ jne SHORT G_M55093_IG11
mov rcx, gword ptr [r14+0x08] ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -222,9 +193,43 @@ G_M55093_IG12: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 call [rax+0x08]<unknown method> ; gcrRegs -[rcx rsi r8] ; gcr arg pop 0
- jmp G_M55093_IG07 - ;; size=75 bbWeight=2 PerfScore 55.50 -G_M55093_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ ;; size=70 bbWeight=2 PerfScore 51.50 +G_M55093_IG09: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp-0x38] + ; gcrRegs +[rcx] + mov r11, 0xD1FFAB1E ; code for <unknown method> + call [r11]<unknown method> + ; gcrRegs -[rcx] + ; gcr arg pop 0 + test eax, eax + jne G_M55093_IG05 + ;; size=25 bbWeight=4 PerfScore 22.00 +G_M55093_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx rdi] + jmp SHORT G_M55093_IG15 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M55093_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14] + mov ecx, 8 + call [System.ThrowHelper:ThrowNotSupportedException(int)] + ; gcr arg pop 0 + int3 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M55093_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M55093_IG13: ; bbWeight=16, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx rsi rdi r14] + inc r13d + cmp r15d, r13d + jg G_M55093_IG06 + ;; size=12 bbWeight=16 PerfScore 24.00 +G_M55093_IG14: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + jmp SHORT G_M55093_IG09 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M55093_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi] mov rcx, gword ptr [rbp-0x38] ; gcrRegs +[rcx] @@ -234,11 +239,11 @@ G_M55093_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=17 bbWeight=0.50 PerfScore 2.12
-G_M55093_IG14: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M55093_IG16: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rax, r14 ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M55093_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M55093_IG17: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -249,7 +254,7 @@ G_M55093_IG15: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.75
-G_M55093_IG16: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M55093_IG18: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[rax r14] ; GC ptr vars +{V04 V08} push rbp @@ -264,9 +269,9 @@ G_M55093_IG16: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=000 mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x60] ;; size=27 bbWeight=0 PerfScore 0.00
-G_M55093_IG17: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55093_IG19: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x38], 0
- je SHORT G_M55093_IG18
+ je SHORT G_M55093_IG20
mov rcx, gword ptr [rbp-0x38] ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -275,10 +280,10 @@ G_M55093_IG17: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=000 ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M55093_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55093_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M55093_IG19: ; bbWeight=0, funclet epilog, nogc, extend
+G_M55093_IG21: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -290,7 +295,7 @@ G_M55093_IG19: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 554, prolog size 29, PerfScore 340.75, instruction count 144, allocated bytes for code 554 (MethodHash=c6d028ca) for method System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)
+Total bytes of code 564, prolog size 29, PerfScore 344.75, instruction count 144, allocated bytes for code 564 (MethodHash=c6d028ca) for method System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)
; ============================================================ Unwind Info: @@ -331,4 +336,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M55093_IG04..G_M55093_IG13) handled by [G_M55093_IG16..END) (fault)
+EH#0: try [G_M55093_IG04..G_M55093_IG15) handled by [G_M55093_IG18..END) (fault)
+12 (+3.32%) : 2931.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -12,7 +12,7 @@ ; V01 loc0 [V01,T12] ( 5, 28 ) long -> rcx ; V02 loc1 [V02,T13] ( 5, 24 ) int -> rdi ; V03 loc2 [V03,T11] ( 5, 28.50) ref -> rbp class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> r14
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> r14
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax ; V06 loc5 [V06,T07] ( 3, 40 ) ref -> rdx class-hnd exact <System.String> ; V07 loc6 [V07,T01] ( 5, 68 ) int -> r15 @@ -28,7 +28,7 @@ ;* V17 tmp7 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V18 tmp8 [V18,T17] ( 4, 5 ) ref -> rax "Single return block return value" ; V19 tmp9 [V19,T15] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V20 cse0 [V20,T04] ( 6, 49 ) int -> rsi "CSE - aggressive"
+; V20 cse0 [V20,T03] ( 8, 57 ) int -> rsi "CSE - aggressive"
; V21 cse1 [V21,T06] ( 5, 40 ) int -> r12 "CSE - aggressive" ; ; Lcl frame size = 40 @@ -53,10 +53,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp esi, 1 jle G_M46295_IG14 ;; size=21 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor ecx, ecx xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test esi, esi + jle SHORT G_M46295_IG07 + ;; size=8 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edx, eax mov rdx, gword ptr [rbx+8*rdx+0x10] @@ -88,7 +90,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbp] xor r14d, r14d xor r15d, r15d
- ;; size=39 bbWeight=4 PerfScore 19.00
+ test esi, esi + jle G_M46295_IG13 + ;; size=47 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov ecx, r15d @@ -222,7 +226,7 @@ G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 361, prolog size 19, PerfScore 521.50, instruction count 110, allocated bytes for code 361 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 373, prolog size 19, PerfScore 531.50, instruction count 114, allocated bytes for code 373 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x64.checked.mch 21 8 9 4 -287 +283
benchmarks.run_pgo.windows.x64.checked.mch 323 225 69 29 -8,399 +2,081
benchmarks.run_tiered.windows.x64.checked.mch 7 1 4 2 -15 +112
coreclr_tests.run.windows.x64.checked.mch 311 116 135 60 -1,246 +1,093
libraries.crossgen2.windows.x64.checked.mch 1 1 0 0 -1 +0
libraries.pmi.windows.x64.checked.mch 181 46 89 46 -458 +1,496
libraries_tests.run.windows.x64.Release.mch 994 500 281 213 -6,901 +3,073
librariestestsnotieredcompilation.run.windows.x64.Release.mch 303 80 71 152 -1,665 +967
realworld.run.windows.x64.checked.mch 26 6 13 7 -128 +142
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
2,167 983 671 513 -19,100 +9,247

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x64.checked.mch 27,917 4 27,913 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 102,635 50,161 52,474 19 (0.02%) 19 (0.02%)
benchmarks.run_tiered.windows.x64.checked.mch 54,333 36,871 17,462 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 573,722 341,128 232,594 8 (0.00%) 8 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 2,104 0 2,104 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 309,148 6 309,142 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.x64.Release.mch 671,224 476,124 195,100 111 (0.02%) 111 (0.02%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 320,489 21,924 298,565 0 (0.00%) 0 (0.00%)
realworld.run.windows.x64.checked.mch 36,887 3 36,884 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 67 0 67 0 (0.00%) 0 (0.00%)
2,098,526 926,221 1,172,305 138 (0.01%) 138 (0.01%)

jit-analyze output

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: 8737750 (overridden on cmd)
Total bytes of diff: 8737746 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 35778033 (overridden on cmd)
Total bytes of diff: 35771715 (overridden on cmd)
Total bytes of delta: -6318 (-0.02 % of base)
    relative diff is a regression.

Detail diffs



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


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: 12549088 (overridden on cmd)
Total bytes of diff: 12549185 (overridden on cmd)
Total bytes of delta: 97 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

0 total methods with Code Size differences (0 improved, 0 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: 392964649 (overridden on cmd)
Total bytes of diff: 392964496 (overridden on cmd)
Total bytes of delta: -153 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 214877 (overridden on cmd)
Total bytes of diff: 214876 (overridden on cmd)
Total bytes of delta: -1 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 61646281 (overridden on cmd)
Total bytes of diff: 61647319 (overridden on cmd)
Total bytes of delta: 1038 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 278843071 (overridden on cmd)
Total bytes of diff: 278839243 (overridden on cmd)
Total bytes of delta: -3828 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 137561184 (overridden on cmd)
Total bytes of diff: 137560486 (overridden on cmd)
Total bytes of delta: -698 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 14184922 (overridden on cmd)
Total bytes of diff: 14184936 (overridden on cmd)
Total bytes of delta: 14 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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