Assembly Diffs

linux arm

Diffs are based on 2,053,507 contexts (830,101 MinOpts, 1,223,406 FullOpts).

MISSED contexts: 71,368 (3.36%)

Overall (-1,482 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,773,010 -14
benchmarks.run_pgo.linux.arm.checked.mch 68,606,114 -726
benchmarks.run_tiered.linux.arm.checked.mch 18,109,340 -14
coreclr_tests.run.linux.arm.checked.mch 321,786,766 +1,192
libraries.crossgen2.linux.arm.checked.mch 213,944 +8
libraries.pmi.linux.arm.checked.mch 49,829,328 +452
libraries_tests.run.linux.arm.Release.mch 244,097,424 -3,054
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,426,298 +650
realworld.run.linux.arm.checked.mch 13,618,802 +24

FullOpts (-1,482 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,411,504 -14
benchmarks.run_pgo.linux.arm.checked.mch 55,932,312 -726
benchmarks.run_tiered.linux.arm.checked.mch 10,725,358 -14
coreclr_tests.run.linux.arm.checked.mch 109,314,330 +1,192
libraries.crossgen2.linux.arm.checked.mch 213,944 +8
libraries.pmi.linux.arm.checked.mch 49,723,104 +452
libraries_tests.run.linux.arm.Release.mch 122,244,916 -3,054
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,355,560 +650
realworld.run.linux.arm.checked.mch 13,183,502 +24

Example diffs

benchmarks.run.linux.arm.checked.mch

-32 (-29.63%) : 4675.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 -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-1.24%) : 24793.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)

@@ -10,14 +10,14 @@ ; ; V00 this [V00,T27] ( 9, 227 ) ref -> [sp+0x44] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T38] ( 8, 82 ) ref -> [sp+0x40] class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
-; V02 arg2 [V02,T36] ( 12, 132.18) ref -> [sp+0x3C] class-hnd single-def <System.__Canon[]>
+; V02 arg2 [V02,T36] ( 12, 132.18) ref -> r6 class-hnd single-def <System.__Canon[]>
; V03 arg3 [V03 ] ( 5, 6 ) struct ( 4) [sp+0xB4] ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V04 arg4 [V04,T41] ( 5, 64 ) int -> [sp+0xB8] single-def
-; V05 loc0 [V05,T01] ( 41,1378 ) ref -> [sp+0x38] class-hnd EH-live spill-single-def <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]> -; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [sp+0x34] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V05 loc0 [V05,T01] ( 41,1378 ) ref -> [sp+0x3C] class-hnd EH-live spill-single-def <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]> +; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [sp+0x38] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc2 [V07,T62] ( 8, 28 ) int -> [sp+0x80] spill-single-def ; V08 loc3 [V08,T58] ( 9, 33 ) int -> [sp+0x7C]
-; V09 loc4 [V09,T63] ( 6, 28 ) ref -> [sp+0x30] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V09 loc4 [V09,T63] ( 6, 44 ) ref -> [sp+0x34] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V10 loc5 [V10,T68] ( 2, 16 ) ref -> r4 class-hnd <System.__Canon> ; V11 loc6 [V11,T35] ( 4, 112 ) ubyte -> [sp+0x78] ; V12 loc7 [V12 ] ( 7, 224 ) struct ( 8) [sp+0x70] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -26,9 +26,9 @@ ; V15 loc10 [V15,T20] ( 6, 354.56) ref -> r9 class-hnd exact <<unknown class>> ; V16 loc11 [V16,T21] ( 5, 352 ) int -> [sp+0x68] spill-single-def ; V17 loc12 [V17,T00] ( 22,1826.56) int -> [sp+0x64]
-; V18 loc13 [V18,T12] ( 10, 640 ) ref -> [sp+0x2C] class-hnd <System.__Canon>
+; V18 loc13 [V18,T12] ( 10, 640 ) ref -> [sp+0x30] class-hnd <System.__Canon>
; V19 loc14 [V19,T11] ( 12, 642.56) int -> [sp+0x60]
-; V20 loc15 [V20,T39] ( 4, 80 ) ref -> [sp+0x28] class-hnd <System.__Canon>
+; V20 loc15 [V20,T39] ( 4, 80 ) ref -> [sp+0x2C] class-hnd <System.__Canon>
; V21 loc16 [V21,T40] ( 13, 74.24) int -> r2 ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V23 tmp1 [V23 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -37,7 +37,7 @@ ;* V26 tmp4 [V26 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V27 tmp5 [V27 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V28 tmp6 [V28 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V29 tmp7 [V29,T72] ( 4, 12 ) int -> r6 "VirtualCall with runtime lookup"
+; V29 tmp7 [V29,T72] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
;* V30 tmp8 [V30 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V31 tmp9 [V31,T43] ( 4, 48 ) int -> r4 "VirtualCall with runtime lookup" ;* V32 tmp10 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -66,16 +66,16 @@ ; V55 tmp33 [V55,T02] ( 6, 768 ) byref -> r3 "Inlining Arg" ; V56 tmp34 [V56,T15] ( 8, 512 ) int -> lr "Inline stloc first use temp" ;* V57 tmp35 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
-; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> r1 "Inlining Arg" -; V59 tmp37 [V59,T60] ( 4, 32 ) int -> r0 "Inline stloc first use temp"
+; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> r0 "Inlining Arg" +; V59 tmp37 [V59,T60] ( 4, 32 ) int -> r2 "Inline stloc first use temp"
; V60 tmp38 [V60,T77] ( 5, 6 ) ref -> [sp+0xB4] do-not-enreg[] single-def "field V03.array (fldOffset=0x0)" P-DEP ; V61 tmp39 [V61 ] ( 6, 192 ) ref -> [sp+0x70] do-not-enreg[X] addr-exposed "field V12.AssemblySymbol (fldOffset=0x0)" P-DEP ; V62 tmp40 [V62 ] ( 2, 64 ) int -> [sp+0x74] do-not-enreg[X] addr-exposed "field V12.DefinitionIndex (fldOffset=0x4)" P-DEP ; V63 tmp41 [V63,T69] ( 2, 16 ) ref -> r4 "field V32.AssemblySymbol (fldOffset=0x0)" P-INDEP ; V64 tmp42 [V64,T71] ( 2, 16 ) int -> [sp+0x5C] spill-single-def "field V32.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V65 tmp43 [V65,T24] ( 4, 256 ) ref -> [sp+0x24] "field V42.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V65 tmp43 [V65,T24] ( 4, 256 ) ref -> [sp+0x28] "field V42.AssemblySymbol (fldOffset=0x0)" P-INDEP
; V66 tmp44 [V66,T25] ( 4, 256 ) int -> r8 "field V42.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V67 tmp45 [V67,T70] ( 2, 16 ) ref -> [sp+0x20] spill-single-def "field V45.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V67 tmp45 [V67,T70] ( 2, 16 ) ref -> [sp+0x24] spill-single-def "field V45.AssemblySymbol (fldOffset=0x0)" P-INDEP
;* V68 tmp46 [V68,T79] ( 0, 0 ) int -> zero-ref "field V45.DefinitionIndex (fldOffset=0x4)" P-INDEP ;* V69 tmp47 [V69 ] ( 0, 0 ) ref -> zero-ref "field V49.AssemblySymbol (fldOffset=0x0)" P-INDEP ;* V70 tmp48 [V70 ] ( 0, 0 ) int -> zero-ref "field V49.DefinitionIndex (fldOffset=0x4)" P-INDEP @@ -83,7 +83,7 @@ ;* V72 tmp50 [V72 ] ( 0, 0 ) int -> zero-ref "field V54.DefinitionIndex (fldOffset=0x4)" P-INDEP ;* V73 tmp51 [V73 ] ( 0, 0 ) ref -> zero-ref "field V57.AssemblySymbol (fldOffset=0x0)" P-INDEP ;* V74 tmp52 [V74 ] ( 0, 0 ) int -> zero-ref "field V57.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V75 tmp53 [V75,T73] ( 3, 12 ) ref -> r6 "argument with side effect"
+; V75 tmp53 [V75,T73] ( 3, 12 ) ref -> r4 "argument with side effect"
; V76 tmp54 [V76,T74] ( 3, 12 ) ref -> r0 "argument with side effect" ; V77 tmp55 [V77,T78] ( 2, 8 ) ref -> r0 "argument with side effect" ; V78 tmp56 [V78,T46] ( 3, 48 ) ref -> r0 "arr expr" @@ -96,7 +96,7 @@ ; V85 tmp63 [V85,T06] ( 6, 768 ) ref -> r3 "argument with side effect" ; V86 tmp64 [V86,T07] ( 6, 768 ) ref -> registers "arr expr" ; V87 tmp65 [V87,T10] ( 6, 768 ) int -> lr "index expr"
-; V88 tmp66 [V88,T08] ( 6, 768 ) byref -> [sp+0x1C] "BlockOp address local"
+; V88 tmp66 [V88,T08] ( 6, 768 ) byref -> [sp+0x20] "BlockOp address local"
; V89 tmp67 [V89,T09] ( 6, 768 ) ref -> r12 "arr expr" ; V90 tmp68 [V90,T48] ( 3, 48 ) ref -> r0 "argument with side effect" ; V91 tmp69 [V91,T49] ( 3, 48 ) ref -> r0 "arr expr" @@ -107,7 +107,7 @@ ; V96 tmp74 [V96,T88] ( 2, 4 ) ref -> r0 single-def "argument with side effect" ; V97 tmp75 [V97,T89] ( 2, 4 ) ref -> r0 single-def "argument with side effect" ; V98 PSPSym [V98,T95] ( 1, 1 ) int -> [sp+0x8C] do-not-enreg[V] "PSPSym"
-; V99 cse0 [V99,T84] ( 8, 5 ) byref -> [sp+0x18] multi-def "CSE - conservative"
+; V99 cse0 [V99,T84] ( 8, 5 ) byref -> [sp+0x1C] multi-def "CSE - conservative"
;* V100 cse1 [V100,T96] ( 0, 0 ) int -> zero-ref "CSE - moderate" ;* V101 cse2 [V101,T56] ( 0, 0 ) int -> zero-ref hoist multi-def "CSE - moderate" ;* V102 cse3 [V102,T80] ( 0, 0 ) int -> zero-ref "CSE - moderate" @@ -117,19 +117,19 @@ ; V106 cse7 [V106,T57] ( 3, 39.60) ref -> r1 "CSE - conservative" ; V107 cse8 [V107,T23] ( 6, 256 ) int -> [sp+0x58] "CSE - moderate" ; V108 cse9 [V108,T30] ( 6, 170 ) int -> [sp+0x54] spill-single-def "CSE - moderate"
-; V109 cse10 [V109,T17] ( 11, 430 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V109 cse10 [V109,T17] ( 11, 430 ) byref -> [sp+0x18] spill-single-def "CSE - moderate"
; V110 cse11 [V110,T37] ( 3, 96 ) int -> [sp+0x50] "CSE - moderate" ; V111 cse12 [V111,T19] ( 3, 380.16) int -> r1 "CSE - moderate"
-; V112 cse13 [V112,T18] ( 3, 380.16) ref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V112 cse13 [V112,T18] ( 3, 380.16) ref -> [sp+0x14] spill-single-def "CSE - moderate"
; V113 cse14 [V113,T66] ( 3, 24 ) int -> r1 "CSE - conservative"
-; V114 cse15 [V114,T64] ( 3, 24 ) ref -> [sp+0x0C] spill-single-def "CSE - conservative"
+; V114 cse15 [V114,T64] ( 3, 24 ) ref -> [sp+0x10] spill-single-def "CSE - conservative"
; V115 cse16 [V115,T67] ( 3, 24 ) int -> r1 "CSE - conservative"
-; V116 cse17 [V116,T65] ( 3, 24 ) ref -> [sp+0x08] spill-single-def "CSE - conservative"
+; V116 cse17 [V116,T65] ( 3, 24 ) ref -> [sp+0x0C] spill-single-def "CSE - conservative"
; V117 cse18 [V117,T92] ( 3, 3.84) int -> r1 "CSE - conservative" ; V118 cse19 [V118,T91] ( 3, 3.84) ref -> r2 "CSE - conservative" ; V119 cse20 [V119,T34] ( 9, 46 ) int -> [sp+0x4C] multi-def "CSE - moderate" ; V120 cse21 [V120,T16] ( 4, 506.88) int -> r8 "CSE - moderate"
-; V121 cse22 [V121,T33] ( 5, 152 ) byref -> [sp+0x04] "CSE - moderate"
+; V121 cse22 [V121,T33] ( 5, 152 ) byref -> [sp+0x08] "CSE - moderate"
; V122 cse23 [V122,T55] ( 5, 42.08) int -> [sp+0x48] spill-single-def "CSE - moderate" ; V123 rat0 [V123,T85] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V124 rat1 [V124,T86] ( 3, 4 ) int -> r1 "runtime lookup" @@ -138,7 +138,7 @@ ;* V127 rat4 [V127,T83] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ;* V128 rat5 [V128,T90] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V129 rat6 [V129,T75] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V130 rat7 [V130,T76] ( 3, 11.20) int -> r0 "fgMakeTemp is creating a new local variable"
+; V130 rat7 [V130,T76] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
; V131 rat8 [V131,T53] ( 3, 44.80) int -> r4 "fgMakeTemp is creating a new local variable" ;* V132 rat9 [V132,T61] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V133 rat10 [V133,T54] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" @@ -151,7 +151,7 @@ ; V140 rat17 [V140,T98] ( 3, 0 ) int -> r9 "Spilling to split statement for tree" ; V141 rat18 [V141,T99] ( 3, 0 ) int -> r1 "runtime lookup" ; V142 rat19 [V142,T100] ( 3, 0 ) int -> r1 "fgMakeTemp is creating a new local variable"
-; TEMP_01 int -> [r11-0xAC]
+; TEMP_01 int -> [r11-0xA8]
; ; Lcl frame size = 144 @@ -168,15 +168,14 @@ G_M32652_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r0, [r11-0x28] str r0, [sp+0x44] // [V00 this] ; GC ptr vars +{V00}
- str r2, [sp+0x3C] // [V02 arg2] - ; GC ptr vars +{V02}
mov r5, r0 ; gcrRegs +[r5] mov r7, r1 ; gcrRegs +[r7]
- ldr r8, [sp+0xB8] // [V04 arg4] - ;; size=38 bbWeight=1 PerfScore 15.00 -G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000001008000000 {V00 V02}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r6, r2 + ; gcrRegs +[r6] + ;; size=34 bbWeight=1 PerfScore 14.00 +G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000000008000000 {V00}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r9, [r5] mov r0, r9 ldr r1, [r0+0x24] @@ -185,10 +184,10 @@ G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000001008000000 {V00 cmp r1, 0 beq SHORT G_M32652_IG04 ;; size=16 bbWeight=1 PerfScore 7.00
-G_M32652_IG03: ; bbWeight=0.80, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG03: ; bbWeight=0.80, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
b SHORT G_M32652_IG05 ;; size=2 bbWeight=0.80 PerfScore 0.80
-G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff @@ -197,7 +196,7 @@ G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcr arg pop 0 mov r1, r0 ;; size=20 bbWeight=0.20 PerfScore 1.20
-G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M32652_IG05: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
mov r0, r1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -215,9 +214,9 @@ G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ldr r2, [r0] blx r3 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; gcr arg pop 0
- str r0, [sp+0x38] // [V05 loc0]
+ str r0, [sp+0x3C] // [V05 loc0]
; GC ptr vars +{V05}
- str r4, [sp+0x18] // [V99 cse0]
+ str r4, [sp+0x1C] // [V99 cse0]
; GC ptr vars +{V99} ldr r0, [r4+0x08] movw r2, 0xd1ff @@ -227,10 +226,10 @@ G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b blx r2 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; byrRegs -[r4] ; gcr arg pop 0
- str r0, [sp+0x34] // [V06 loc1]
+ str r0, [sp+0x38] // [V06 loc1]
; GC ptr vars +{V06} ;; size=52 bbWeight=1 PerfScore 20.00
-G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000001008004002 {V00 V02 V05 V06 V99}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000000008004002 {V00 V05 V06 V99}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] ldr r0, [sp+0xB4] // [V60 tmp38] ; gcrRegs +[r0] @@ -240,59 +239,56 @@ G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000001008004002 {V00 str r1, [sp+0x80] // [V07 loc2] mov lr, 1 cmp r1, 1
- ble G_M32652_IG77
+ ble G_M32652_IG75
;; size=20 bbWeight=1 PerfScore 8.00
-G_M32652_IG07: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r12, [r7+0x04] str r12, [sp+0x48] // [V122 cse23] cmp lr, r12
- bhs SHORT G_M32652_IG12
+ bhs SHORT G_M32652_IG11
lsl r0, lr, 3 adds r0, 8 ldr r0, [r7+r0] ; gcrRegs +[r0] cmp r0, 0
- bne G_M32652_IG76
+ bne G_M32652_IG74
;; size=26 bbWeight=4 PerfScore 36.00
-G_M32652_IG08: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG08: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r0, [sp+0xB4] // [V60 tmp38] ; gcrRegs +[r0] adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0]
- str r0, [sp+0x14] // [V109 cse10]
+ str r0, [sp+0x18] // [V109 cse10]
; GC ptr vars +{V109} str lr, [sp+0x7C] // [V08 loc3]
- lsl r6, lr, 2 - ldr r6, [r0+r6] - ; gcrRegs +[r6] - mov r0, r6
+ lsl r4, lr, 2 + ldr r4, [r0+r4] + ; gcrRegs +[r4] + mov r0, r4
; gcrRegs +[r0] ; byrRegs -[r0]
- ldr r6, [r6] - ; gcrRegs -[r6] - ldr r6, [r6+0x30] - ldr r6, [r6+0x04] - blx r6 // <unknown method>
+ ldr r4, [r4] + ; gcrRegs -[r4]
...

-10 (-0.49%) : 4896.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,T19] ( 6, 32 ) ref -> [sp+0x2C] class-hnd <System.String> ; V13 loc9 [V13,T17] ( 7, 42 ) ref -> r9 class-hnd <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T25] ( 6, 24 ) int -> r8
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> r8
; V16 loc12 [V16,T48] ( 3, 12 ) ushort -> r3 ; V17 loc13 [V17,T42] ( 7, 14 ) int -> r1 ; V18 loc14 [V18,T46] ( 3, 12 ) ref -> r0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [sp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T26] ( 3, 24 ) ref -> [sp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T25] ( 3, 24 ) ref -> [sp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[ushort]> ; V22 OutArgs [V22 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T72] ( 3, 2 ) ref -> r1 ;* V24 tmp2 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T27] ( 3, 24 ) ref -> r9
+; V25 tmp3 [V25,T26] ( 3, 24 ) ref -> r9
;* V26 tmp4 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V27 tmp5 [V27,T41] ( 2, 16 ) int -> r0 "impAppendStmt" ;* V28 tmp6 [V28 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp9 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T29] ( 3, 24 ) int -> [sp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T28] ( 3, 24 ) int -> [sp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T39] ( 2, 16 ) byref -> [sp+0x24] spill-single-def "Inlining Arg" ;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V35 tmp13 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -90,12 +90,12 @@ ;* 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] ( 9, 272 ) int -> [sp+0x44] "Inlining Arg"
-; V82 tmp60 [V82,T28] ( 3, 24 ) ref -> r0 class-hnd "Inline stloc first use temp" <ushort[]>
+; V82 tmp60 [V82,T27] ( 3, 24 ) ref -> r0 class-hnd "Inline stloc first use temp" <ushort[]>
; V83 tmp61 [V83,T18] ( 5, 40 ) int -> r1 "Inline stloc first use temp" ;* V84 tmp62 [V84 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V85 tmp63 [V85 ] ( 0, 0 ) struct ( 8) 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,T30] ( 5, 20 ) byref -> [sp+0x1C] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V87 tmp65 [V87,T29] ( 5, 20 ) byref -> [sp+0x1C] "field V09._reference (fldOffset=0x0)" P-INDEP
; V88 tmp66 [V88,T22] ( 7, 30 ) int -> [sp+0x40] "field V09._length (fldOffset=0x4)" P-INDEP ;* V89 tmp67 [V89 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V90 tmp68 [V90 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP @@ -182,7 +182,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, ldr r8, [sp+0x88] str r8, [sp+0x38] // [V141 tmp119] cmp r7, 0
- beq G_M4730_IG76
+ beq G_M4730_IG74
cmp r6, 0 bne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -220,7 +220,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR ; gcrRegs -[r0] ldr r4, [r7+0x04] cmp r4, r10
- bls G_M4730_IG71
+ bls G_M4730_IG69
;; size=8 bbWeight=8 PerfScore 24.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz str r7, [sp+0x34] // [V02 arg2] @@ -272,19 +272,11 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov r8, r0 cmp r8, 0
- blt G_M4730_IG73
+ blt G_M4730_IG71
ldr r3, [sp+0x3C] // [V98 tmp76] cmp r8, r3
- bhi G_M4730_IG87 - cmp r8, 0 - bge SHORT G_M4730_IG10 - movs r0, 0 - b SHORT G_M4730_IG11 - ;; size=80 bbWeight=4 PerfScore 104.00 -G_M4730_IG10: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ bhi G_M4730_IG85
movs r0, 1
- ;; size=2 bbWeight=4 PerfScore 4.00 -G_M4730_IG11: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -305,26 +297,26 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by ; gcr arg pop 0 add r10, r8 cmp r10, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG73
lsl r0, r10, 1 ldr r8, [sp+0x14] // [V152 cse7] ; byrRegs +[r8] ldrh r3, [r8+r0] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG77
lsl r0, r10, 1 ldrh r2, [r8+r0] cmp r3, r2
- bne SHORT G_M4730_IG15
+ bne SHORT G_M4730_IG13
ldr r0, [r5+0x0C] ldr r1, [r5+0x04] ; gcrRegs +[r1] ldr r3, [r1+0x04] cmp r3, r0
- bls SHORT G_M4730_IG13 - ;; size=82 bbWeight=4 PerfScore 116.00 -G_M4730_IG12: ; bbWeight=2, gcVars=000000020000001000000000 {V02 V04}, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ bls SHORT G_M4730_IG11 + ;; size=154 bbWeight=4 PerfScore 208.00 +G_M4730_IG10: ; bbWeight=2, gcVars=000000020000001000000000 {V02 V04}, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[r8] ; GC ptr vars -{V152} adds r1, 8 @@ -335,9 +327,9 @@ G_M4730_IG12: ; bbWeight=2, gcVars=000000020000001000000000 {V02 V04}, gc ldr r0, [r5+0x0C] adds r0, r0, 1 str r0, [r5+0x0C]
- b SHORT G_M4730_IG14
+ b SHORT G_M4730_IG12
;; size=14 bbWeight=2 PerfScore 14.00
-G_M4730_IG13: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+G_M4730_IG11: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
; byrRegs -[r1] mov r0, r5 ; gcrRegs +[r0] @@ -349,18 +341,18 @@ G_M4730_IG13: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by ; gcrRegs -[r0] ; gcr arg pop 0 ;; size=16 bbWeight=2 PerfScore 12.00
-G_M4730_IG14: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M4730_IG12: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
add r10, r10, 1 ldr r7, [sp+0x34] // [V02 arg2] ; gcrRegs +[r7] b SHORT G_M4730_IG06 ;; size=8 bbWeight=4 PerfScore 12.00
-G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152}, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M4730_IG13: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152}, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs -[r7] ; byrRegs +[r8] ; GC ptr vars +{V13 V152} cmp r3, 123
- bne G_M4730_IG77
+ bne G_M4730_IG75
str r2, [sp+0x5C] // [V06 loc2] movs r3, 0 str r3, [sp+0x58] // [V07 loc3] @@ -373,20 +365,20 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152 str r12, [sp+0x40] // [V88 tmp66] add r0, r10, -1 cmp r0, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG73
lsl r0, r10, 1 subs r0, r0, 2 ldrh r0, [r8+r0] cmp r0, 123
- beq SHORT G_M4730_IG16
+ beq SHORT G_M4730_IG14
movs r0, 0
- b SHORT G_M4730_IG17
+ b SHORT G_M4730_IG15
;; size=60 bbWeight=4 PerfScore 84.00
-G_M4730_IG16: ; bbWeight=4, gcVars=000000020000001040002000 {V02 V04 V87 V152}, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, gcvars, byref
+G_M4730_IG14: ; bbWeight=4, gcVars=000000020000001020002000 {V02 V04 V87 V152}, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, gcvars, byref
; GC ptr vars -{V13} movs r0, 1 ;; size=2 bbWeight=4 PerfScore 4.00
-G_M4730_IG17: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
+G_M4730_IG15: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
movw r9, 0xd1ff movt r9, 0xd1ff ldr r9, [r9] @@ -394,14 +386,14 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, ; gcr arg pop 0 ldr r9, [sp+0x5C] // [V06 loc2] cmp r9, 123
- bne SHORT G_M4730_IG18
+ bne SHORT G_M4730_IG16
movs r0, 0
- b SHORT G_M4730_IG19
+ b SHORT G_M4730_IG17
;; size=28 bbWeight=4 PerfScore 36.00
-G_M4730_IG18: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref
+G_M4730_IG16: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref
movs r0, 1 ;; size=2 bbWeight=4 PerfScore 4.00
-G_M4730_IG19: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
+G_M4730_IG17: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -409,137 +401,137 @@ G_M4730_IG19: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, ; gcr arg pop 0 sub r9, r9, 48 cmp r9, 10
- bhs G_M4730_IG78
+ bhs G_M4730_IG76
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG77
lsl r0, r10, 1 ldrh r0, [r8+r0] cmp r0, 125
- beq G_M4730_IG39
+ beq G_M4730_IG37
;; size=48 bbWeight=4 PerfScore 56.00
-G_M4730_IG20: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - b SHORT G_M4730_IG22
+G_M4730_IG18: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz + b SHORT G_M4730_IG20
;; size=2 bbWeight=2 PerfScore 2.00
-G_M4730_IG21: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
+G_M4730_IG19: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
movs r3, 10 mul r3, r9, r3 adds r0, r3, r0 sub r9, r0, 48 add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG77
lsl r0, r10, 1 ldrh r0, [r8+r0] ;; size=30 bbWeight=8 PerfScore 72.00
-G_M4730_IG22: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
+G_M4730_IG20: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
sub r3, r0, 48 cmp r3, 9
- bhi SHORT G_M4730_IG23
+ bhi SHORT G_M4730_IG21
movw r3, 0xd1ff movt r3, 0xd1ff cmp r9, r3
- blt SHORT G_M4730_IG21
+ blt SHORT G_M4730_IG19
;; size=20 bbWeight=16 PerfScore 112.00
-G_M4730_IG23: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
+G_M4730_IG21: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
cmp r0, 32
- bne SHORT G_M4730_IG25
+ bne SHORT G_M4730_IG23
;; size=4 bbWeight=2 PerfScore 4.00
+G_M4730_IG22: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz + add r10, r10, 1
...

+2 (+0.52%) : 29166.dasm - System.String:Concat(System.String[]):System.String (FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 8, 30.50) ref -> r4 class-hnd <System.String[]>
+; V00 arg0 [V00,T06] ( 9, 44.50) ref -> r4 class-hnd <System.String[]>
;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref ; V02 loc1 [V02,T14] ( 5, 24 ) int -> r6 ; V03 loc2 [V03,T12] ( 5, 28.50) ref -> r8 class-hnd exact <System.String>
-; V04 loc3 [V04,T02] ( 8, 50 ) int -> r9
+; V04 loc3 [V04,T03] ( 8, 50 ) int -> r9
; V05 loc4 [V05,T00] ( 5, 68 ) int -> r3
-; V06 loc5 [V06,T06] ( 3, 40 ) ref -> r2 class-hnd exact <System.String>
+; V06 loc5 [V06,T08] ( 3, 40 ) ref -> r2 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> r10
-; V08 loc7 [V08,T04] ( 4, 48 ) ref -> [sp+0x04] class-hnd exact spill-single-def <System.String> -; V09 loc8 [V09,T09] ( 4, 32 ) int -> [sp+0x0C] spill-single-def
+; V08 loc7 [V08,T05] ( 4, 48 ) ref -> r7 class-hnd exact <System.String> +; V09 loc8 [V09,T09] ( 4, 32 ) int -> [sp+0x04] spill-single-def
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T20] ( 4, 2 ) ref -> r0 ; V12 tmp2 [V12,T21] ( 2, 2 ) ref -> r0 class-hnd exact "dup spill" <System.String> @@ -33,61 +33,66 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> r0 "Single return block return value" ; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> r4 single-def "arg temp"
-; V25 cse0 [V25,T03] ( 6, 49 ) int -> r5 "CSE - aggressive" -; V26 cse1 [V26,T07] ( 3, 36 ) byref -> r7 hoist "CSE - aggressive" -; V27 cse2 [V27,T05] ( 4, 32 ) int -> [sp+0x08] spill-single-def "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> r5 "CSE - aggressive" +; V26 cse1 [V26,T07] ( 4, 32 ) int -> [sp+0x00] spill-single-def "CSE - aggressive" +; V27 cse2 [V27,T04] ( 4, 50 ) byref -> r7 hoist multi-def "CSE - aggressive"
; V28 rat0 [V28,T13] ( 5, 28 ) int -> r6 "field V01.lo (fldOffset=0x0)" P-INDEP ; V29 rat1 [V29,T15] ( 4, 24 ) int -> r0 "field V01.hi (fldOffset=0x4)" P-INDEP ;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20 - add r11, sp, 48
+ sub sp, 12 + add r11, sp, 40
mov r4, r0 ; gcrRegs +[r4] ;; size=12 bbWeight=1 PerfScore 4.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz cmp r4, 0
- beq G_M46295_IG22
+ beq G_M46295_IG23
ldr r5, [r4+0x04] cmp r5, 1
- ble G_M46295_IG16
+ ble G_M46295_IG17
;; size=14 bbWeight=8 PerfScore 40.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r6, 0 movs r0, 0 movs r3, 0
+ cmp r5, 0 + ble SHORT G_M46295_IG08 + ;; size=10 bbWeight=4 PerfScore 20.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
add r7, r4, 8 ; byrRegs +[r7]
- ;; size=10 bbWeight=4 PerfScore 16.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 2.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
lsls r2, r3, 2 ldr r2, [r7+r2] ; gcrRegs +[r2] cmp r2, 0
- beq SHORT G_M46295_IG06
+ beq SHORT G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=0014 {r2 r4}, byrefRegs=0080 {r7}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=0014 {r2 r4}, byrefRegs=0080 {r7}, byref
ldr r2, [r2+0x04] ; gcrRegs -[r2] movs r1, 0 adds r6, r2, r6 adcs r0, r1 ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
adds r3, r3, 1 cmp r5, r3
- bgt SHORT G_M46295_IG04
+ bgt SHORT G_M46295_IG05
;; size=6 bbWeight=16 PerfScore 48.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r7]
movs r3, 0 cmp r6, 0x80000000 sbcs r0, r3
- bge G_M46295_IG23
+ bge G_M46295_IG24
cmp r6, 0
- beq SHORT G_M46295_IG17
+ beq SHORT G_M46295_IG18
mov r0, r6 movw r3, 0xd1ff movt r3, 0xd1ff @@ -98,95 +103,91 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by ; gcrRegs +[r8] mov r9, 0 mov r10, 0
- ;; size=38 bbWeight=4 PerfScore 52.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=0110 {r4 r8}, byrefRegs=0080 {r7}, byref, isz
+ cmp r5, 0 + ble SHORT G_M46295_IG16 + ;; size=42 bbWeight=4 PerfScore 60.00 +G_M46295_IG09: ; bbWeight=16, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ add r7, r4, 8 + ; byrRegs +[r7]
lsl r0, r10, 2
- ldr r3, [r7+r0] - ; gcrRegs +[r3] - str r3, [sp+0x04] - ; GC ptr vars +{V08}
+ ldr r7, [r7+r0] + ; gcrRegs +[r7] + ; byrRegs -[r7] + cmp r7, 0 + beq SHORT G_M46295_IG13 + ;; size=14 bbWeight=16 PerfScore 80.00 +G_M46295_IG10: ; bbWeight=8, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz + ldr r3, [r7+0x04] + str r3, [sp]
cmp r3, 0
- beq SHORT G_M46295_IG12 - ;; size=12 bbWeight=16 PerfScore 80.00 -G_M46295_IG09: ; bbWeight=8, gcVars=00000010 {V08}, gcrefRegs=0118 {r3 r4 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz - ldr r2, [r3+0x04] - str r2, [sp+0x08] - cmp r2, 0 - beq SHORT G_M46295_IG12 - mov lr, r2 - str lr, [sp+0x0C]
+ beq SHORT G_M46295_IG13 + mov r2, r3 + str r2, [sp+0x04]
sub r0, r6, r9
- cmp r0, lr - blt SHORT G_M46295_IG14
+ cmp r0, r2 + blt SHORT G_M46295_IG15
cmp r8, 0
- bne SHORT G_M46295_IG10
+ bne SHORT G_M46295_IG11
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff
- movw r12, 0xd1ff - movt r12, 0xd1ff - ldr r12, [r12] - blx r12 // <unknown method> - ; gcrRegs -[r3]
+ movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // <unknown method>
; gcr arg pop 0
- ;; size=58 bbWeight=8 PerfScore 152.00 -G_M46295_IG10: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0080 {r7}, byref, isz
+ ;; size=56 bbWeight=8 PerfScore 152.00 +G_M46295_IG11: ; bbWeight=8, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x04] sub r0, r0, r9
- ldr r2, [sp+0x08] // [V27 cse2] - cmp r0, r2 - bge SHORT G_M46295_IG11
+ ldr r3, [sp] // [V26 cse1] + cmp r0, r3 + bge SHORT G_M46295_IG12
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff
- movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // <unknown method> - ; gcr arg pop 0 - ;; size=42 bbWeight=8 PerfScore 104.00 -G_M46295_IG11: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0080 {r7}, byref - add r2, r8, 8 - ; byrRegs +[r2] - lsl r0, r9, 1 - adds r0, r2, r0 - ; byrRegs +[r0] - ldr r3, [sp+0x04] // [V08 loc7] - ; gcrRegs +[r3] - add r1, r3, 8 - ; byrRegs +[r1] - ldr lr, [sp+0x0C] // [V09 loc8] - lsl r2, lr, 1 - ; byrRegs -[r2]
movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3]
- ; GC ptr vars -{V08}
blx r3 // <unknown method>
+ ; gcr arg pop 0 + ;; size=42 bbWeight=8 PerfScore 104.00 +G_M46295_IG12: ; bbWeight=8, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref + add r0, r8, 8 + ; byrRegs +[r0] + lsl r1, r9, 1 + adds r0, r0, r1 + add r1, r7, 8 + ; byrRegs +[r1] + ldr r2, [sp+0x04] // [V09 loc8] + lsls r2, r2, 1 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r7]
; byrRegs -[r0-r1] ; gcr arg pop 0
- ldr r0, [sp+0x0C] // [V09 loc8] - add r9, r0 - ;; size=40 bbWeight=8 PerfScore 104.00 -G_M46295_IG12: ; bbWeight=16, gcrefRegs=0110 {r4 r8}, byrefRegs=0080 {r7}, byref, isz
+ ldr r7, [sp+0x04] // [V09 loc8] + add r9, r7 + ;; size=34 bbWeight=8 PerfScore 96.00 +G_M46295_IG13: ; bbWeight=16, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
add r10, r10, 1 cmp r5, r10
- bgt SHORT G_M46295_IG08
+ bgt SHORT G_M46295_IG09
;; size=8 bbWeight=16 PerfScore 48.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r7] - b SHORT G_M46295_IG15
+G_M46295_IG14: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz + b SHORT G_M46295_IG16
;; size=2 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref
mov r9, -1 ...

+18 (+3.64%) : 985.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 -> r1 class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
+; V00 arg0 [V00,T12] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [sp+0x98] do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[ushort]> ; V02 loc1 [V02 ] ( 16, 12 ) struct (136) [sp+0x10] 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,14 +17,14 @@ ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) 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,T21] ( 3, 2.50) int -> r1 "Inline stloc first use temp" -; V10 tmp6 [V10,T18] ( 6, 3.50) ref -> r4 class-hnd "Inline stloc first use temp" <ushort[]>
+; V09 tmp5 [V09,T20] ( 3, 2.50) int -> r1 "Inline stloc first use temp" +; V10 tmp6 [V10,T17] ( 6, 3.50) ref -> r4 class-hnd "Inline stloc first use temp" <ushort[]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V16 tmp12 [V16,T16] ( 8, 4 ) int -> r7 "Inline stloc first use temp"
+; V16 tmp12 [V16,T15] ( 8, 4 ) int -> r7 "Inline stloc first use temp"
; V17 tmp13 [V17 ] ( 3, 1.50) struct ( 8) [sp+0x08] 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 ( 8) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]> @@ -35,8 +35,8 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V26 tmp22 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V27 tmp23 [V27,T12] ( 5, 5 ) int -> r8 "Inlining Arg" -; V28 tmp24 [V28,T23] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
+; V27 tmp23 [V27,T11] ( 5, 5 ) int -> r8 "Inlining Arg" +; V28 tmp24 [V28,T22] ( 2, 2 ) byref -> r1 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 ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -46,8 +46,8 @@ ;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V37 tmp33 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V38 tmp34 [V38,T20] ( 3, 3 ) int -> r6 "Inlining Arg" -; V39 tmp35 [V39,T24] ( 2, 2 ) byref -> r5 single-def "Inlining Arg"
+; V38 tmp34 [V38,T19] ( 3, 3 ) int -> r6 "Inlining Arg" +; V39 tmp35 [V39,T23] ( 2, 2 ) byref -> r5 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort[]]> @@ -67,20 +67,20 @@ ; V56 tmp52 [V56,T03] ( 2, 16 ) byref -> r5 "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,T17] ( 4, 4 ) int -> r7 "Inlining Arg"
+; V59 tmp55 [V59,T16] ( 4, 4 ) int -> r7 "Inlining Arg"
;* V60 tmp56 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V61 tmp57 [V61,T25] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" -; V62 tmp58 [V62,T22] ( 3, 2.50) int -> r1 "Inline stloc first use temp"
+; V61 tmp57 [V61,T24] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" +; V62 tmp58 [V62,T21] ( 3, 2.50) int -> r1 "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=0x4)" P-INDEP
-; V65 tmp61 [V65,T19] ( 3, 3 ) byref -> r0 single-def "field V06._reference (fldOffset=0x0)" P-INDEP -;* V66 tmp62 [V66,T37] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
+; V65 tmp61 [V65,T18] ( 3, 3 ) byref -> r0 single-def "field V06._reference (fldOffset=0x0)" P-INDEP +;* V66 tmp62 [V66,T36] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" 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=0x4)" 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=0x4)" P-INDEP
-; V71 tmp67 [V71,T26] ( 3, 1.50) byref -> r5 "field V15._reference (fldOffset=0x0)" P-INDEP -; V72 tmp68 [V72,T27] ( 3, 1.50) int -> r6 "field V15._length (fldOffset=0x4)" P-INDEP
+; V71 tmp67 [V71,T25] ( 3, 1.50) byref -> r5 "field V15._reference (fldOffset=0x0)" P-INDEP +; V72 tmp68 [V72,T26] ( 3, 1.50) int -> r6 "field V15._length (fldOffset=0x4)" P-INDEP
; V73 tmp69 [V73 ] ( 2, 1 ) byref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V17._reference (fldOffset=0x0)" P-DEP ; V74 tmp70 [V74 ] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V17._length (fldOffset=0x4)" P-DEP ; V75 tmp71 [V75,T04] ( 8, 14.50) byref -> r5 "field V18._reference (fldOffset=0x0)" P-INDEP @@ -89,32 +89,31 @@ ;* V78 tmp74 [V78 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V81 tmp77 [V81,T15] ( 2, 4.50) byref -> r8 single-def "field V21._reference (fldOffset=0x0)" P-INDEP -; V82 tmp78 [V82,T14] ( 3, 5 ) int -> r7 "field V21._length (fldOffset=0x4)" P-INDEP
+; V81 tmp77 [V81,T14] ( 2, 4.50) byref -> r8 single-def "field V21._reference (fldOffset=0x0)" P-INDEP +; V82 tmp78 [V82,T13] ( 3, 5 ) int -> r7 "field V21._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V85 tmp81 [V85,T28] ( 2, 1 ) byref -> r1 single-def "field V25._reference (fldOffset=0x0)" P-INDEP -; V86 tmp82 [V86,T33] ( 2, 1 ) int -> r8 "field V25._length (fldOffset=0x4)" P-INDEP
+; V85 tmp81 [V85,T27] ( 2, 1 ) byref -> r1 single-def "field V25._reference (fldOffset=0x0)" P-INDEP +; V86 tmp82 [V86,T32] ( 2, 1 ) int -> r8 "field V25._length (fldOffset=0x4)" 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=0x4)" 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=0x4)" P-INDEP
-; V91 tmp87 [V91,T29] ( 2, 1 ) byref -> r5 single-def "field V37._reference (fldOffset=0x0)" P-INDEP -; V92 tmp88 [V92,T34] ( 2, 1 ) int -> r6 "field V37._length (fldOffset=0x4)" P-INDEP -; V93 tmp89 [V93,T30] ( 2, 1 ) byref -> r8 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp87 [V91,T28] ( 2, 1 ) byref -> r5 single-def "field V37._reference (fldOffset=0x0)" P-INDEP +; V92 tmp88 [V92,T33] ( 2, 1 ) int -> r6 "field V37._length (fldOffset=0x4)" P-INDEP +; V93 tmp89 [V93,T29] ( 2, 1 ) byref -> r8 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp90 [V94 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V95 tmp91 [V95,T31] ( 2, 1 ) byref -> r8 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V96 tmp92 [V96,T35] ( 2, 1 ) int -> r7 "field V43._length (fldOffset=0x4)" P-INDEP -; V97 tmp93 [V97,T09] ( 3, 8 ) byref -> r1 "field V47._reference (fldOffset=0x0)" P-INDEP
+; V95 tmp91 [V95,T30] ( 2, 1 ) byref -> r8 single-def "field V43._reference (fldOffset=0x0)" P-INDEP +; V96 tmp92 [V96,T34] ( 2, 1 ) int -> r7 "field V43._length (fldOffset=0x4)" P-INDEP +; V97 tmp93 [V97,T08] ( 3, 8 ) byref -> r1 "field V47._reference (fldOffset=0x0)" P-INDEP
; V98 tmp94 [V98,T02] ( 5, 16 ) int -> r10 "field V47._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V101 tmp97 [V101,T10] ( 2, 8 ) byref -> r5 "field V54._reference (fldOffset=0x0)" P-INDEP -; V102 tmp98 [V102,T11] ( 2, 8 ) int -> r6 "field V54._length (fldOffset=0x4)" P-INDEP -; V103 tmp99 [V103,T32] ( 2, 1 ) byref -> r8 single-def "field V60._reference (fldOffset=0x0)" P-INDEP -; V104 tmp100 [V104,T36] ( 2, 1 ) int -> r7 "field V60._length (fldOffset=0x4)" P-INDEP
+; V101 tmp97 [V101,T09] ( 2, 8 ) byref -> r5 "field V54._reference (fldOffset=0x0)" P-INDEP +; V102 tmp98 [V102,T10] ( 2, 8 ) int -> r6 "field V54._length (fldOffset=0x4)" P-INDEP +; V103 tmp99 [V103,T31] ( 2, 1 ) byref -> r8 single-def "field V60._reference (fldOffset=0x0)" P-INDEP +; V104 tmp100 [V104,T35] ( 2, 1 ) int -> r7 "field V60._length (fldOffset=0x4)" P-INDEP
; V105 cse0 [V105,T07] ( 3, 12 ) int -> [sp+0x04] spill-single-def "CSE - aggressive"
-; V106 cse1 [V106,T08] ( 9, 9 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 172 @@ -203,16 +202,15 @@ G_M32039_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, sub r6, r6, r8 cmp r6, 0 bge SHORT G_M32039_IG06
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0] - ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=78 bbWeight=0.50 PerfScore 13.00
G_M32039_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz subs r7, r7, 1 cmp r7, 0 @@ -223,16 +221,15 @@ G_M32039_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, bhi G_M32039_IG23 cmp r7, 0 bge SHORT G_M32039_IG07
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0] - ;; size=42 bbWeight=0.50 PerfScore 7.50
+ ;; size=48 bbWeight=0.50 PerfScore 8.00
G_M32039_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz mov r9, 0 cmp r7, 0 @@ -278,16 +275,15 @@ G_M32039_IG11: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0122 {r1 r5 r bge SHORT G_M32039_IG13 ;; size=40 bbWeight=4 PerfScore 60.00 G_M32039_IG12: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0] - ;; size=22 bbWeight=2 PerfScore 14.00
+ ;; size=28 bbWeight=2 PerfScore 16.00
G_M32039_IG13: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz add r9, r9, 1 cmp r9, r7 @@ -381,7 +377,7 @@ G_M32039_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 494, prolog size 26, PerfScore 198.50, instruction count 181, allocated bytes for code 494 (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 512, prolog size 26, PerfScore 201.50, instruction count 184, allocated bytes for code 512 (MethodHash=6f8582d8) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[ushort](System.Collections.Generic.IEnumerable`1[ushort]):ushort[] (FullOpts)
; ============================================================ Unwind Info: @@ -393,7 +389,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 247 (0x000f7) Actual length = 494 (0x0001ee)
+ Function Length : 256 (0x00100) Actual length = 512 (0x000200)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+22 (+22.00%) : 3680.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)

@@ -8,66 +8,85 @@ ; 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 -> r0 this class-hnd single-def <System.Buffers.Latin1CharSearchValues> -; V01 arg1 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 this [V00,T04] ( 4, 10 ) ref -> r4 this class-hnd single-def <System.Buffers.Latin1CharSearchValues> +; V01 arg1 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T01] ( 5, 17 ) int -> r1 -; V04 loc2 [V04,T02] ( 4, 16 ) ushort -> lr
+; V03 loc1 [V03,T02] ( 5, 17 ) int -> r7 +; V04 loc2 [V04,T01] ( 5, 20 ) ushort -> r8
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 2, 8 ) int -> r4 "Inline stloc first use temp" -; V07 tmp2 [V07,T06] ( 2, 8 ) int -> lr "Inline stloc first use temp" -; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r12 "Inlining Arg" -; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r12 "dup spill"
+; V06 tmp1 [V06,T05] ( 2, 8 ) int -> r3 "Inline stloc first use temp" +; V07 tmp2 [V07,T06] ( 2, 8 ) int -> r2 "Inline stloc first use temp" +; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r9 "Inlining Arg" +; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r3 "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,T09] ( 2, 5 ) byref -> r3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp8 [V13,T08] ( 3, 6 ) int -> r2 "field V02._length (fldOffset=0x4)" P-INDEP
+; V12 tmp7 [V12,T10] ( 2, 5 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp8 [V13,T09] ( 3, 6 ) int -> r6 "field V02._length (fldOffset=0x4)" P-INDEP +; V14 cse0 [V14,T08] ( 3, 6 ) ref -> r1 "CSE - aggressive"
; ; Lcl frame size = 0 G_M159_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2}
- push {r4,r5,r11,lr} - add r11, sp, 8 - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M159_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - movs r1, 0 - cmp r2, 0 - ble SHORT G_M159_IG04
+ push {r4,r5,r6,r7,r8,r9,r11,lr} + add r11, sp, 24 + mov r4, r0 + ; gcrRegs +[r4] + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M159_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ldr r5, [sp+0x20] + ; byrRegs +[r5] + ldr r6, [sp+0x24] + movs r7, 0 + cmp r6, 0 + ble SHORT G_M159_IG06
;; size=10 bbWeight=1 PerfScore 5.00
-G_M159_IG03: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - lsl lr, r1, 1 - ldrh lr, [r3+lr] - cmp lr, 255 - bgt SHORT G_M159_IG05 - ldrsb r12, [r0] - add r12, r0, 4 - ; byrRegs +[r12] - asr r4, lr, 5 - and lr, lr, 31 - movs r5, 1 - lsl lr, r5, lr - lsls r4, r4, 2 - add r12, r4 - ldr r4, [r12] - orr lr, r4, lr - str lr, [r12] - adds r1, r1, 1 - cmp r1, r2 - blt SHORT G_M159_IG03 - ;; size=58 bbWeight=4 PerfScore 72.00 -G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M159_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz + lsls r0, r7, 1 + ldrh r8, [r5+r0] + cmp r8, 255 + bgt SHORT G_M159_IG07 + ldrsb r0, [r4] + add r9, r4, 4 + ; byrRegs +[r9] + cmp r8, 256 + blt SHORT G_M159_IG05 + ;; size=26 bbWeight=4 PerfScore 32.00 +G_M159_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref + movw r1, 0xd1ff + movt r1, 0xd1ff + mov r0, r1 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method>
; gcrRegs -[r0]
- ; byrRegs -[r3 r12] - pop {r4,r5,r11,lr}
+ ; gcr arg pop 0 + ;; size=22 bbWeight=2 PerfScore 14.00 +G_M159_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz + asr r3, r8, 5 + and r2, r8, 31 + movs r1, 1 + lsl r2, r1, r2 + lsls r3, r3, 2 + add r3, r9 + ; byrRegs +[r3] + ldr r1, [r3] + orrs r2, r1 + str r2, [r3] + adds r7, r7, 1 + cmp r7, r6 + blt SHORT G_M159_IG03 + ;; size=30 bbWeight=4 PerfScore 48.00 +G_M159_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r4] + ; byrRegs -[r3 r5 r9] + pop {r4,r5,r6,r7,r8,r9,r11,lr}
add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M159_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M159_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -76,7 +95,7 @@ G_M159_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 100, prolog size 10, PerfScore 83.00, instruction count 34, allocated bytes for code 100 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
+Total bytes of code 122, prolog size 12, PerfScore 106.00, instruction count 44, allocated bytes for code 122 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
; ============================================================ Unwind Info: @@ -88,18 +107,18 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 100 (0x000064)
+ Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
EC 06 pop {r1,r2} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16 FD end + nop ; opsize 16 FF end

benchmarks.run_pgo.linux.arm.checked.mch

-32 (-29.63%) : 22312.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-1.24%) : 92786.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 (Tier0-FullOpts)

@@ -10,14 +10,14 @@ ; ; V00 this [V00,T27] ( 9, 227 ) ref -> [sp+0x44] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T38] ( 8, 82 ) ref -> [sp+0x40] class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
-; V02 arg2 [V02,T36] ( 12, 132.18) ref -> [sp+0x3C] class-hnd single-def <System.__Canon[]>
+; V02 arg2 [V02,T36] ( 12, 132.18) ref -> r6 class-hnd single-def <System.__Canon[]>
; V03 arg3 [V03 ] ( 5, 6 ) struct ( 4) [sp+0xB4] ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V04 arg4 [V04,T41] ( 5, 64 ) int -> [sp+0xB8] single-def
-; V05 loc0 [V05,T01] ( 41,1378 ) ref -> [sp+0x38] class-hnd EH-live spill-single-def <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]> -; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [sp+0x34] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V05 loc0 [V05,T01] ( 41,1378 ) ref -> [sp+0x3C] class-hnd EH-live spill-single-def <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]> +; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [sp+0x38] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc2 [V07,T62] ( 8, 28 ) int -> [sp+0x80] spill-single-def ; V08 loc3 [V08,T58] ( 9, 33 ) int -> [sp+0x7C]
-; V09 loc4 [V09,T63] ( 6, 28 ) ref -> [sp+0x30] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V09 loc4 [V09,T63] ( 6, 44 ) ref -> [sp+0x34] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V10 loc5 [V10,T68] ( 2, 16 ) ref -> r4 class-hnd <System.__Canon> ; V11 loc6 [V11,T35] ( 4, 112 ) ubyte -> [sp+0x78] ; V12 loc7 [V12 ] ( 7, 224 ) struct ( 8) [sp+0x70] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -26,9 +26,9 @@ ; V15 loc10 [V15,T20] ( 6, 354.56) ref -> r9 class-hnd exact <<unknown class>> ; V16 loc11 [V16,T21] ( 5, 352 ) int -> [sp+0x68] spill-single-def ; V17 loc12 [V17,T00] ( 22,1826.56) int -> [sp+0x64]
-; V18 loc13 [V18,T12] ( 10, 640 ) ref -> [sp+0x2C] class-hnd <System.__Canon>
+; V18 loc13 [V18,T12] ( 10, 640 ) ref -> [sp+0x30] class-hnd <System.__Canon>
; V19 loc14 [V19,T11] ( 12, 642.56) int -> [sp+0x60]
-; V20 loc15 [V20,T39] ( 4, 80 ) ref -> [sp+0x28] class-hnd <System.__Canon>
+; V20 loc15 [V20,T39] ( 4, 80 ) ref -> [sp+0x2C] class-hnd <System.__Canon>
; V21 loc16 [V21,T40] ( 13, 74.24) int -> r2 ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V23 tmp1 [V23 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -37,7 +37,7 @@ ;* V26 tmp4 [V26 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V27 tmp5 [V27 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V28 tmp6 [V28 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V29 tmp7 [V29,T72] ( 4, 12 ) int -> r6 "VirtualCall with runtime lookup"
+; V29 tmp7 [V29,T72] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
;* V30 tmp8 [V30 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V31 tmp9 [V31,T43] ( 4, 48 ) int -> r4 "VirtualCall with runtime lookup" ;* V32 tmp10 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -66,16 +66,16 @@ ; V55 tmp33 [V55,T02] ( 6, 768 ) byref -> r3 "Inlining Arg" ; V56 tmp34 [V56,T15] ( 8, 512 ) int -> lr "Inline stloc first use temp" ;* V57 tmp35 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
-; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> r1 "Inlining Arg" -; V59 tmp37 [V59,T60] ( 4, 32 ) int -> r0 "Inline stloc first use temp"
+; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> r0 "Inlining Arg" +; V59 tmp37 [V59,T60] ( 4, 32 ) int -> r2 "Inline stloc first use temp"
; V60 tmp38 [V60,T77] ( 5, 6 ) ref -> [sp+0xB4] do-not-enreg[] single-def "field V03.array (fldOffset=0x0)" P-DEP ; V61 tmp39 [V61 ] ( 6, 192 ) ref -> [sp+0x70] do-not-enreg[X] addr-exposed "field V12.AssemblySymbol (fldOffset=0x0)" P-DEP ; V62 tmp40 [V62 ] ( 2, 64 ) int -> [sp+0x74] do-not-enreg[X] addr-exposed "field V12.DefinitionIndex (fldOffset=0x4)" P-DEP ; V63 tmp41 [V63,T69] ( 2, 16 ) ref -> r4 "field V32.AssemblySymbol (fldOffset=0x0)" P-INDEP ; V64 tmp42 [V64,T71] ( 2, 16 ) int -> [sp+0x5C] spill-single-def "field V32.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V65 tmp43 [V65,T24] ( 4, 256 ) ref -> [sp+0x24] "field V42.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V65 tmp43 [V65,T24] ( 4, 256 ) ref -> [sp+0x28] "field V42.AssemblySymbol (fldOffset=0x0)" P-INDEP
; V66 tmp44 [V66,T25] ( 4, 256 ) int -> r8 "field V42.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V67 tmp45 [V67,T70] ( 2, 16 ) ref -> [sp+0x20] spill-single-def "field V45.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V67 tmp45 [V67,T70] ( 2, 16 ) ref -> [sp+0x24] spill-single-def "field V45.AssemblySymbol (fldOffset=0x0)" P-INDEP
;* V68 tmp46 [V68,T79] ( 0, 0 ) int -> zero-ref "field V45.DefinitionIndex (fldOffset=0x4)" P-INDEP ;* V69 tmp47 [V69 ] ( 0, 0 ) ref -> zero-ref "field V49.AssemblySymbol (fldOffset=0x0)" P-INDEP ;* V70 tmp48 [V70 ] ( 0, 0 ) int -> zero-ref "field V49.DefinitionIndex (fldOffset=0x4)" P-INDEP @@ -83,7 +83,7 @@ ;* V72 tmp50 [V72 ] ( 0, 0 ) int -> zero-ref "field V54.DefinitionIndex (fldOffset=0x4)" P-INDEP ;* V73 tmp51 [V73 ] ( 0, 0 ) ref -> zero-ref "field V57.AssemblySymbol (fldOffset=0x0)" P-INDEP ;* V74 tmp52 [V74 ] ( 0, 0 ) int -> zero-ref "field V57.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V75 tmp53 [V75,T73] ( 3, 12 ) ref -> r6 "argument with side effect"
+; V75 tmp53 [V75,T73] ( 3, 12 ) ref -> r4 "argument with side effect"
; V76 tmp54 [V76,T74] ( 3, 12 ) ref -> r0 "argument with side effect" ; V77 tmp55 [V77,T78] ( 2, 8 ) ref -> r0 "argument with side effect" ; V78 tmp56 [V78,T46] ( 3, 48 ) ref -> r0 "arr expr" @@ -96,7 +96,7 @@ ; V85 tmp63 [V85,T06] ( 6, 768 ) ref -> r3 "argument with side effect" ; V86 tmp64 [V86,T07] ( 6, 768 ) ref -> registers "arr expr" ; V87 tmp65 [V87,T10] ( 6, 768 ) int -> lr "index expr"
-; V88 tmp66 [V88,T08] ( 6, 768 ) byref -> [sp+0x1C] "BlockOp address local"
+; V88 tmp66 [V88,T08] ( 6, 768 ) byref -> [sp+0x20] "BlockOp address local"
; V89 tmp67 [V89,T09] ( 6, 768 ) ref -> r12 "arr expr" ; V90 tmp68 [V90,T48] ( 3, 48 ) ref -> r0 "argument with side effect" ; V91 tmp69 [V91,T49] ( 3, 48 ) ref -> r0 "arr expr" @@ -107,7 +107,7 @@ ; V96 tmp74 [V96,T88] ( 2, 4 ) ref -> r0 single-def "argument with side effect" ; V97 tmp75 [V97,T89] ( 2, 4 ) ref -> r0 single-def "argument with side effect" ; V98 PSPSym [V98,T95] ( 1, 1 ) int -> [sp+0x8C] do-not-enreg[V] "PSPSym"
-; V99 cse0 [V99,T84] ( 8, 5 ) byref -> [sp+0x18] multi-def "CSE - conservative"
+; V99 cse0 [V99,T84] ( 8, 5 ) byref -> [sp+0x1C] multi-def "CSE - conservative"
;* V100 cse1 [V100,T96] ( 0, 0 ) int -> zero-ref "CSE - moderate" ;* V101 cse2 [V101,T56] ( 0, 0 ) int -> zero-ref hoist multi-def "CSE - moderate" ;* V102 cse3 [V102,T80] ( 0, 0 ) int -> zero-ref "CSE - moderate" @@ -117,19 +117,19 @@ ; V106 cse7 [V106,T57] ( 3, 39.60) ref -> r1 "CSE - conservative" ; V107 cse8 [V107,T23] ( 6, 256 ) int -> [sp+0x58] "CSE - moderate" ; V108 cse9 [V108,T30] ( 6, 170 ) int -> [sp+0x54] spill-single-def "CSE - moderate"
-; V109 cse10 [V109,T17] ( 11, 430 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V109 cse10 [V109,T17] ( 11, 430 ) byref -> [sp+0x18] spill-single-def "CSE - moderate"
; V110 cse11 [V110,T37] ( 3, 96 ) int -> [sp+0x50] "CSE - moderate" ; V111 cse12 [V111,T19] ( 3, 380.16) int -> r1 "CSE - moderate"
-; V112 cse13 [V112,T18] ( 3, 380.16) ref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V112 cse13 [V112,T18] ( 3, 380.16) ref -> [sp+0x14] spill-single-def "CSE - moderate"
; V113 cse14 [V113,T66] ( 3, 24 ) int -> r1 "CSE - conservative"
-; V114 cse15 [V114,T64] ( 3, 24 ) ref -> [sp+0x0C] spill-single-def "CSE - conservative"
+; V114 cse15 [V114,T64] ( 3, 24 ) ref -> [sp+0x10] spill-single-def "CSE - conservative"
; V115 cse16 [V115,T67] ( 3, 24 ) int -> r1 "CSE - conservative"
-; V116 cse17 [V116,T65] ( 3, 24 ) ref -> [sp+0x08] spill-single-def "CSE - conservative"
+; V116 cse17 [V116,T65] ( 3, 24 ) ref -> [sp+0x0C] spill-single-def "CSE - conservative"
; V117 cse18 [V117,T92] ( 3, 3.84) int -> r1 "CSE - conservative" ; V118 cse19 [V118,T91] ( 3, 3.84) ref -> r2 "CSE - conservative" ; V119 cse20 [V119,T34] ( 9, 46 ) int -> [sp+0x4C] multi-def "CSE - moderate" ; V120 cse21 [V120,T16] ( 4, 506.88) int -> r8 "CSE - moderate"
-; V121 cse22 [V121,T33] ( 5, 152 ) byref -> [sp+0x04] "CSE - moderate"
+; V121 cse22 [V121,T33] ( 5, 152 ) byref -> [sp+0x08] "CSE - moderate"
; V122 cse23 [V122,T55] ( 5, 42.08) int -> [sp+0x48] spill-single-def "CSE - moderate" ; V123 rat0 [V123,T85] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V124 rat1 [V124,T86] ( 3, 4 ) int -> r1 "runtime lookup" @@ -138,7 +138,7 @@ ;* V127 rat4 [V127,T83] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ;* V128 rat5 [V128,T90] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V129 rat6 [V129,T75] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V130 rat7 [V130,T76] ( 3, 11.20) int -> r0 "fgMakeTemp is creating a new local variable"
+; V130 rat7 [V130,T76] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
; V131 rat8 [V131,T53] ( 3, 44.80) int -> r4 "fgMakeTemp is creating a new local variable" ;* V132 rat9 [V132,T61] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V133 rat10 [V133,T54] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" @@ -151,7 +151,7 @@ ; V140 rat17 [V140,T98] ( 3, 0 ) int -> r9 "Spilling to split statement for tree" ; V141 rat18 [V141,T99] ( 3, 0 ) int -> r1 "runtime lookup" ; V142 rat19 [V142,T100] ( 3, 0 ) int -> r1 "fgMakeTemp is creating a new local variable"
-; TEMP_01 int -> [r11-0xAC]
+; TEMP_01 int -> [r11-0xA8]
; ; Lcl frame size = 144 @@ -168,15 +168,14 @@ G_M32652_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r0, [r11-0x28] str r0, [sp+0x44] // [V00 this] ; GC ptr vars +{V00}
- str r2, [sp+0x3C] // [V02 arg2] - ; GC ptr vars +{V02}
mov r5, r0 ; gcrRegs +[r5] mov r7, r1 ; gcrRegs +[r7]
- ldr r8, [sp+0xB8] // [V04 arg4] - ;; size=38 bbWeight=1 PerfScore 15.00 -G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000001008000000 {V00 V02}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r6, r2 + ; gcrRegs +[r6] + ;; size=34 bbWeight=1 PerfScore 14.00 +G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000000008000000 {V00}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r9, [r5] mov r0, r9 ldr r1, [r0+0x24] @@ -185,10 +184,10 @@ G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000001008000000 {V00 cmp r1, 0 beq SHORT G_M32652_IG04 ;; size=16 bbWeight=1 PerfScore 7.00
-G_M32652_IG03: ; bbWeight=0.80, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG03: ; bbWeight=0.80, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
b SHORT G_M32652_IG05 ;; size=2 bbWeight=0.80 PerfScore 0.80
-G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff @@ -197,7 +196,7 @@ G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcr arg pop 0 mov r1, r0 ;; size=20 bbWeight=0.20 PerfScore 1.20
-G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M32652_IG05: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
mov r0, r1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -215,9 +214,9 @@ G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ldr r2, [r0] blx r3 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; gcr arg pop 0
- str r0, [sp+0x38] // [V05 loc0]
+ str r0, [sp+0x3C] // [V05 loc0]
; GC ptr vars +{V05}
- str r4, [sp+0x18] // [V99 cse0]
+ str r4, [sp+0x1C] // [V99 cse0]
; GC ptr vars +{V99} ldr r0, [r4+0x08] movw r2, 0xd1ff @@ -227,10 +226,10 @@ G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b blx r2 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; byrRegs -[r4] ; gcr arg pop 0
- str r0, [sp+0x34] // [V06 loc1]
+ str r0, [sp+0x38] // [V06 loc1]
; GC ptr vars +{V06} ;; size=52 bbWeight=1 PerfScore 20.00
-G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000001008004002 {V00 V02 V05 V06 V99}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000000008004002 {V00 V05 V06 V99}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] ldr r0, [sp+0xB4] // [V60 tmp38] ; gcrRegs +[r0] @@ -240,59 +239,56 @@ G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000001008004002 {V00 str r1, [sp+0x80] // [V07 loc2] mov lr, 1 cmp r1, 1
- ble G_M32652_IG77
+ ble G_M32652_IG75
;; size=20 bbWeight=1 PerfScore 8.00
-G_M32652_IG07: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r12, [r7+0x04] str r12, [sp+0x48] // [V122 cse23] cmp lr, r12
- bhs SHORT G_M32652_IG12
+ bhs SHORT G_M32652_IG11
lsl r0, lr, 3 adds r0, 8 ldr r0, [r7+r0] ; gcrRegs +[r0] cmp r0, 0
- bne G_M32652_IG76
+ bne G_M32652_IG74
;; size=26 bbWeight=4 PerfScore 36.00
-G_M32652_IG08: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG08: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r0, [sp+0xB4] // [V60 tmp38] ; gcrRegs +[r0] adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0]
- str r0, [sp+0x14] // [V109 cse10]
+ str r0, [sp+0x18] // [V109 cse10]
; GC ptr vars +{V109} str lr, [sp+0x7C] // [V08 loc3]
- lsl r6, lr, 2 - ldr r6, [r0+r6] - ; gcrRegs +[r6] - mov r0, r6
+ lsl r4, lr, 2 + ldr r4, [r0+r4] + ; gcrRegs +[r4] + mov r0, r4
; gcrRegs +[r0] ; byrRegs -[r0]
- ldr r6, [r6] - ; gcrRegs -[r6] - ldr r6, [r6+0x30] - ldr r6, [r6+0x04] - blx r6 // <unknown method>
+ ldr r4, [r4] + ; gcrRegs -[r4]
...

-6 (-1.10%) : 17386.dasm - System.Threading.PortableThreadPool+ThreadCounts:InterlockedSetNumThreadsGoal(short):System.Threading.PortableThreadPool+ThreadCounts:this (Tier0-FullOpts)

@@ -34,7 +34,7 @@ ; V23 tmp17 [V23,T06] ( 5, 24 ) short -> r10 "Inline stloc first use temp" ;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp19 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp20 [V26,T09] ( 4, 12 ) ref -> r10 class-hnd exact "Inlining Arg" <System.Threading.LowLevelLock>
+; V26 tmp20 [V26,T09] ( 3, 12 ) ref -> r10 class-hnd exact "Inlining Arg" <System.Threading.LowLevelLock>
; V27 tmp21 [V27,T13] ( 2, 8 ) ref -> r7 class-hnd exact "impAppendStmt" <System.Threading.Thread> ; V28 tmp22 [V28,T14] ( 2, 8 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread> ; V29 tmp23 [V29,T12] ( 4, 8 ) ref -> r3 @@ -112,13 +112,13 @@ G_M54103_IG03: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0250 {r G_M54103_IG04: ; bbWeight=1, gcrefRegs=0188 {r3 r7 r8}, byrefRegs=0250 {r4 r6 r9}, byref, isz ; gcrRegs -[r0] cmp r8, r3
- bne SHORT G_M54103_IG18
+ bne G_M54103_IG20
ldr r3, [r7+0x08] ; gcrRegs -[r3] ands r3, r3, 1 cmp r3, 0
- beq SHORT G_M54103_IG19 - ;; size=14 bbWeight=1 PerfScore 6.00
+ beq G_M54103_IG21 + ;; size=18 bbWeight=1 PerfScore 6.00
G_M54103_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref ; gcrRegs -[r7-r8] mov r3, r4 @@ -132,7 +132,7 @@ G_M54103_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9} G_M54103_IG06: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz sxth r8, r5 cmp r8, 0
- ble G_M54103_IG20
+ ble G_M54103_IG22
;; size=12 bbWeight=8 PerfScore 24.00 G_M54103_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz cmp r8, 1 @@ -157,14 +157,14 @@ G_M54103_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9} str r2, [sp+0x14] ldrsh r8, [sp+0x14] cmp r8, 0
- ble SHORT G_M54103_IG21
+ ble G_M54103_IG23
ldrsh r10, [sp+0x1C] cmp r10, 0
- ble G_M54103_IG22 - ;; size=50 bbWeight=8 PerfScore 128.00
+ ble G_M54103_IG24 + ;; size=52 bbWeight=8 PerfScore 128.00
G_M54103_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz cmp r8, r10
- beq SHORT G_M54103_IG14
+ beq SHORT G_M54103_IG16
;; size=4 bbWeight=8 PerfScore 16.00 G_M54103_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz movw r3, 0xd1ff @@ -191,14 +191,28 @@ G_M54103_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9} G_M54103_IG13: ; bbWeight=2, gcrefRegs=0488 {r3 r7 r10}, byrefRegs=0250 {r4 r6 r9}, byref, isz ; gcrRegs -[r0] cmp r7, r3
- bne SHORT G_M54103_IG23
+ bne G_M54103_IG25 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M54103_IG14: ; bbWeight=2, gcrefRegs=0400 {r10}, byrefRegs=0250 {r4 r6 r9}, byref, isz + ; gcrRegs -[r3 r7]
ldr r0, [r10+0x08] ands r0, r0, 1 cmp r0, 0
- beq G_M54103_IG24 - ;; size=18 bbWeight=2 PerfScore 12.00 -G_M54103_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz - ; gcrRegs -[r3 r7 r10]
+ bne SHORT G_M54103_IG16 + ;; size=12 bbWeight=2 PerfScore 8.00 +G_M54103_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref + ; gcrRegs -[r10] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r1, 0xd1ff + movt r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcr arg pop 0 + ;; size=28 bbWeight=8 PerfScore 64.00 +G_M54103_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
ldr r0, [sp+0x18] ldr r2, [sp+0x1C] str r0, [sp] @@ -221,27 +235,27 @@ G_M54103_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9} eors r0, r3 eors r1, r2 orrs r0, r1
- beq SHORT G_M54103_IG16
+ beq SHORT G_M54103_IG18
;; size=44 bbWeight=8 PerfScore 160.00
-G_M54103_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
+G_M54103_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
ldr r0, [sp+0x08] ldr r1, [sp+0x0C] str r0, [sp+0x18] str r1, [sp+0x1C] b SHORT G_M54103_IG06 ;; size=10 bbWeight=4 PerfScore 20.00
-G_M54103_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref
+G_M54103_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref
; byrRegs -[r4 r9] ldr r0, [sp+0x10] str r0, [r6] ldr r0, [sp+0x14] str r0, [r6+0x04] ;; size=8 bbWeight=1 PerfScore 4.00
-G_M54103_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M54103_IG19: ; bbWeight=1, epilog, nogc, extend
add sp, 36 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M54103_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0080 {r7}, byrefRegs=0250 {r4 r6 r9}, gcvars, byref, isz
+G_M54103_IG20: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0080 {r7}, byrefRegs=0250 {r4 r6 r9}, gcvars, byref, isz
; gcrRegs +[r7] ; byrRegs +[r4 r9] movw r0, 0xd1ff @@ -256,9 +270,9 @@ G_M54103_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0080 {r7}, byr ldr r0, [r7+0x08] ands r0, r0, 1 cmp r0, 0
- bne SHORT G_M54103_IG05 - ;; size=38 bbWeight=0 PerfScore 0.00 -G_M54103_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
+ bne G_M54103_IG05 + ;; size=40 bbWeight=0 PerfScore 0.00 +G_M54103_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
; gcrRegs -[r7] movw r0, 0xd1ff movt r0, 0xd1ff @@ -271,7 +285,7 @@ G_M54103_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9} ; gcr arg pop 0 b SHORT G_M54103_IG05 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M54103_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
+G_M54103_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -283,7 +297,7 @@ G_M54103_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9} ; gcr arg pop 0 b SHORT G_M54103_IG07 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M54103_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
+G_M54103_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -297,7 +311,7 @@ G_M54103_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9} cmp r10, 0 bgt G_M54103_IG11 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M54103_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
+G_M54103_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -309,7 +323,7 @@ G_M54103_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9} ; gcr arg pop 0 b SHORT G_M54103_IG11 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M54103_IG23: ; bbWeight=0, gcrefRegs=0400 {r10}, byrefRegs=0250 {r4 r6 r9}, byref, isz
+G_M54103_IG25: ; bbWeight=0, gcrefRegs=0400 {r10}, byrefRegs=0250 {r4 r6 r9}, byref, isz
; gcrRegs +[r10] movw r0, 0xd1ff movt r0, 0xd1ff @@ -320,26 +334,10 @@ G_M54103_IG23: ; bbWeight=0, gcrefRegs=0400 {r10}, byrefRegs=0250 {r4 r6 ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- ldr r0, [r10+0x08] - ands r0, r0, 1 - cmp r0, 0 - bne G_M54103_IG14 - ;; size=42 bbWeight=0 PerfScore 0.00 -G_M54103_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0250 {r4 r6 r9}, byref, isz - ; gcrRegs -[r10] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcr arg pop 0
b SHORT G_M54103_IG14 ;; size=30 bbWeight=0 PerfScore 0.00
-Total bytes of code 546, prolog size 16, PerfScore 446.50, instruction count 183, allocated bytes for code 546 (MethodHash=59d72ca8) for method System.Threading.PortableThreadPool+ThreadCounts:InterlockedSetNumThreadsGoal(short):System.Threading.PortableThreadPool+ThreadCounts:this (Tier0-FullOpts)
+Total bytes of code 540, prolog size 16, PerfScore 510.50, instruction count 179, allocated bytes for code 540 (MethodHash=59d72ca8) for method System.Threading.PortableThreadPool+ThreadCounts:InterlockedSetNumThreadsGoal(short):System.Threading.PortableThreadPool+ThreadCounts:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -351,7 +349,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 273 (0x00111) Actual length = 546 (0x000222)
+ Function Length : 270 (0x0010e) Actual length = 540 (0x00021c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+7.97%) : 39881.dasm - System.Buffers.SearchValues:Create(System.ReadOnlySpan1[ushort]):System.Buffers.SearchValues1ushort

@@ -9,26 +9,26 @@ ; 2 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T04] ( 4, 4 ) struct ( 8) [sp+0x30] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 loc0 [V01 ] ( 2, 1 ) ushort -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc1 [V02 ] ( 3, 2 ) ushort -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[short]> ;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]> ; V05 loc4 [V05,T26] ( 2, 0 ) ushort -> r4
-; V06 loc5 [V06,T27] ( 2, 0 ) ushort -> r7
+; V06 loc5 [V06,T27] ( 2, 0 ) ushort -> r5
; V07 loc6 [V07,T28] ( 2, 0 ) ushort -> r4
-; V08 loc7 [V08,T29] ( 2, 0 ) ushort -> r5 -; V09 loc8 [V09,T30] ( 2, 0 ) ushort -> r6
+; V08 loc7 [V08,T29] ( 2, 0 ) ushort -> r8 +; V09 loc8 [V09,T30] ( 2, 0 ) ushort -> r9
; V10 loc9 [V10,T31] ( 2, 0 ) ushort -> r4 ;* V11 loc10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[ushort]> ;* V12 loc11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]> ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T19] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.ProbabilisticCharSearchValues>
-; V15 tmp2 [V15,T05] ( 3, 6 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Latin1CharSearchValues>
+; V15 tmp2 [V15,T05] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Latin1CharSearchValues>
; V16 tmp3 [V16,T20] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any5SearchValues`2[ushort,short]> ; V17 tmp4 [V17,T21] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any4SearchValues`2[ushort,short]>
-; V18 tmp5 [V18,T22] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any3CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> -; V19 tmp6 [V19,T23] ( 3, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
+; V18 tmp5 [V18,T22] ( 3, 0 ) ref -> r10 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any3CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> +; V19 tmp6 [V19,T23] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
; V20 tmp7 [V20,T24] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.RangeCharSearchValues`1[System.Buffers.SearchValues+FalseConst]> ; V21 tmp8 [V21,T25] ( 3, 0 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleCharSearchValues`1[System.Buffers.SearchValues+FalseConst]> ;* V22 tmp9 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Buffers.EmptySearchValues`1[ushort]> @@ -40,12 +40,12 @@ ;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
-; V31 tmp18 [V31,T01] ( 5, 12 ) int -> r3 "Inline stloc first use temp" -; V32 tmp19 [V32,T00] ( 4, 18 ) ushort -> r2 "Inline stloc first use temp" -; V33 tmp20 [V33,T14] ( 2, 2 ) int -> lr "Inline stloc first use temp" -; V34 tmp21 [V34,T15] ( 2, 2 ) int -> r2 "Inline stloc first use temp" -; V35 tmp22 [V35,T06] ( 3, 6 ) byref -> r1 "Inlining Arg" -; V36 tmp23 [V36,T07] ( 3, 6 ) byref -> r1 "dup spill"
+; V31 tmp18 [V31,T01] ( 5, 12 ) int -> r7 "Inline stloc first use temp" +; V32 tmp19 [V32,T00] ( 5, 19 ) ushort -> r8 "Inline stloc first use temp" +; V33 tmp20 [V33,T14] ( 2, 2 ) int -> r0 "Inline stloc first use temp" +; V34 tmp21 [V34,T15] ( 2, 2 ) int -> r3 "Inline stloc first use temp" +; V35 tmp22 [V35,T06] ( 3, 6 ) byref -> r10 "Inlining Arg" +; V36 tmp23 [V36,T07] ( 3, 6 ) byref -> r0 "dup spill"
;* V37 tmp24 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V39 tmp26 [V39,T09] ( 10, 4 ) ref -> r0 "Single return block return value" @@ -74,21 +74,21 @@ G_M36862_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1}
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
;; size=12 bbWeight=1 PerfScore 4.00 G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r0, [sp+0x28]
+ ldr r0, [sp+0x30]
; byrRegs +[r0] mov r4, r0 ; byrRegs +[r4]
- ldr r1, [sp+0x2C]
+ ldr r1, [sp+0x34]
mov r5, r1 cmp r5, 0
- beq SHORT G_M36862_IG07
+ beq SHORT G_M36862_IG09
cmp r5, 1
- beq SHORT G_M36862_IG08
+ beq SHORT G_M36862_IG10
add r2, sp, 4 add r3, sp, 0 movw lr, 0xd1ff @@ -98,28 +98,28 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M36862_IG09
+ bne SHORT G_M36862_IG11
cmp r5, 2
- beq SHORT G_M36862_IG10
+ beq SHORT G_M36862_IG12
cmp r5, 3
- beq G_M36862_IG11
+ beq G_M36862_IG13
cmp r5, 0
- blt G_M36862_IG12
+ blt G_M36862_IG14
mov r6, r4 ; byrRegs +[r6] mov r3, r5 cmp r3, 4
- beq G_M36862_IG13
+ beq G_M36862_IG15
;; size=64 bbWeight=1 PerfScore 26.00 G_M36862_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz cmp r3, 5
- beq G_M36862_IG14
+ beq G_M36862_IG16
mov r7, r4 ; byrRegs +[r7] mov r8, r5 ldrh r0, [sp] cmp r0, 256
- bge G_M36862_IG16
+ bge G_M36862_IG19
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -128,41 +128,54 @@ G_M36862_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b ; gcrRegs +[r0] ; byrRegs -[r6-r7] ; gcr arg pop 0
- movs r3, 0
+ mov r9, r0 + ; gcrRegs +[r9] + movs r7, 0
cmp r5, 0
- ble SHORT G_M36862_IG06 - ;; size=46 bbWeight=1 PerfScore 15.00 -G_M36862_IG04: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - lsls r2, r3, 1 - ldrh r2, [r4+r2] - cmp r2, 255 - bgt G_M36862_IG15 - ;; size=10 bbWeight=8 PerfScore 32.00 -G_M36862_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - adds r1, r0, 4 - ; byrRegs +[r1] - asr lr, r2, 5 - and r2, r2, 31 - mov r12, 1 - lsl r2, r12, r2 - ldrsb r12, [r1] - lsl lr, lr, 2 - add r1, lr - ldr lr, [r1] - orr r2, lr, r2 - str r2, [r1] - adds r3, r3, 1 - cmp r3, r5
+ ble SHORT G_M36862_IG07 + ;; size=48 bbWeight=1 PerfScore 16.00 +G_M36862_IG04: ; bbWeight=8, gcrefRegs=0200 {r9}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs -[r0] + lsls r0, r7, 1 + ldrh r8, [r4+r0] + cmp r8, 255 + bgt G_M36862_IG18 + ;; size=14 bbWeight=8 PerfScore 32.00 +G_M36862_IG05: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0010 {r4}, byref, isz + add r10, r9, 4 + ; byrRegs +[r10] + cmp r8, 256 + bge G_M36862_IG17 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M36862_IG06: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0410 {r4 r10}, byref, isz + asr r0, r8, 5 + and r3, r8, 31 + movs r2, 1 + lsl r3, r2, r3 + ldrsb r2, [r10] + lsls r0, r0, 2 + add r0, r10 + ; byrRegs +[r0] + ldr r2, [r0] + orrs r3, r2 + str r3, [r0] + adds r7, r7, 1 + cmp r7, r5
blt SHORT G_M36862_IG04
- ;; size=44 bbWeight=1 PerfScore 14.00 -G_M36862_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r1 r4]
+ ;; size=34 bbWeight=1 PerfScore 13.00 +G_M36862_IG07: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref + ; byrRegs -[r0 r4 r10] + mov r0, r9 + ; gcrRegs +[r0] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M36862_IG08: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r9]
add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8 bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-G_M36862_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M36862_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -171,9 +184,9 @@ G_M36862_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M36862_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M36862_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0] ; byrRegs +[r4] ldrh r4, [r4] @@ -186,9 +199,9 @@ G_M36862_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre ; gcrRegs +[r0] ; gcr arg pop 0 strh r4, [r0+0x04]
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36862_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M36862_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -210,42 +223,13 @@ G_M36862_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r0, r6 ; gcrRegs +[r0]
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=46 bbWeight=0 PerfScore 0.00
-G_M36862_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M36862_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0 r6] ; byrRegs +[r4]
- ldrh r7, [r4] - ldrh r4, [r4+0x02] - ; byrRegs -[r4] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWSFAST - ; gcrRegs +[r0] - ; gcr arg pop 0 - mov r8, r0 - ; gcrRegs +[r8] - mov r0, r8 - mov r1, r7
...

+44 (+7.97%) : 14099.dasm - System.Buffers.SearchValues:Create(System.ReadOnlySpan1[ushort]):System.Buffers.SearchValues1ushort

@@ -9,26 +9,26 @@ ; 2 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T04] ( 4, 4 ) struct ( 8) [sp+0x30] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 loc0 [V01 ] ( 2, 1 ) ushort -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc1 [V02 ] ( 3, 2 ) ushort -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[short]> ;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]> ; V05 loc4 [V05,T26] ( 2, 0 ) ushort -> r4
-; V06 loc5 [V06,T27] ( 2, 0 ) ushort -> r7
+; V06 loc5 [V06,T27] ( 2, 0 ) ushort -> r5
; V07 loc6 [V07,T28] ( 2, 0 ) ushort -> r4
-; V08 loc7 [V08,T29] ( 2, 0 ) ushort -> r5 -; V09 loc8 [V09,T30] ( 2, 0 ) ushort -> r6
+; V08 loc7 [V08,T29] ( 2, 0 ) ushort -> r8 +; V09 loc8 [V09,T30] ( 2, 0 ) ushort -> r9
; V10 loc9 [V10,T31] ( 2, 0 ) ushort -> r4 ;* V11 loc10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[ushort]> ;* V12 loc11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]> ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T19] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.ProbabilisticCharSearchValues>
-; V15 tmp2 [V15,T05] ( 3, 6 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Latin1CharSearchValues>
+; V15 tmp2 [V15,T05] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Latin1CharSearchValues>
; V16 tmp3 [V16,T20] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any5SearchValues`2[ushort,short]> ; V17 tmp4 [V17,T21] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any4SearchValues`2[ushort,short]>
-; V18 tmp5 [V18,T22] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any3CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> -; V19 tmp6 [V19,T23] ( 3, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
+; V18 tmp5 [V18,T22] ( 3, 0 ) ref -> r10 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any3CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> +; V19 tmp6 [V19,T23] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
; V20 tmp7 [V20,T24] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.RangeCharSearchValues`1[System.Buffers.SearchValues+FalseConst]> ; V21 tmp8 [V21,T25] ( 3, 0 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleCharSearchValues`1[System.Buffers.SearchValues+FalseConst]> ;* V22 tmp9 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Buffers.EmptySearchValues`1[ushort]> @@ -40,12 +40,12 @@ ;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
-; V31 tmp18 [V31,T01] ( 5, 12 ) int -> r3 "Inline stloc first use temp" -; V32 tmp19 [V32,T00] ( 4, 18 ) ushort -> r2 "Inline stloc first use temp" -; V33 tmp20 [V33,T14] ( 2, 2 ) int -> lr "Inline stloc first use temp" -; V34 tmp21 [V34,T15] ( 2, 2 ) int -> r2 "Inline stloc first use temp" -; V35 tmp22 [V35,T06] ( 3, 6 ) byref -> r1 "Inlining Arg" -; V36 tmp23 [V36,T07] ( 3, 6 ) byref -> r1 "dup spill"
+; V31 tmp18 [V31,T01] ( 5, 12 ) int -> r7 "Inline stloc first use temp" +; V32 tmp19 [V32,T00] ( 5, 19 ) ushort -> r8 "Inline stloc first use temp" +; V33 tmp20 [V33,T14] ( 2, 2 ) int -> r0 "Inline stloc first use temp" +; V34 tmp21 [V34,T15] ( 2, 2 ) int -> r3 "Inline stloc first use temp" +; V35 tmp22 [V35,T06] ( 3, 6 ) byref -> r10 "Inlining Arg" +; V36 tmp23 [V36,T07] ( 3, 6 ) byref -> r0 "dup spill"
;* V37 tmp24 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V39 tmp26 [V39,T09] ( 10, 4 ) ref -> r0 "Single return block return value" @@ -74,21 +74,21 @@ G_M36862_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1}
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
;; size=12 bbWeight=1 PerfScore 4.00 G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r0, [sp+0x28]
+ ldr r0, [sp+0x30]
; byrRegs +[r0] mov r4, r0 ; byrRegs +[r4]
- ldr r1, [sp+0x2C]
+ ldr r1, [sp+0x34]
mov r5, r1 cmp r5, 0
- beq SHORT G_M36862_IG07
+ beq SHORT G_M36862_IG09
cmp r5, 1
- beq SHORT G_M36862_IG08
+ beq SHORT G_M36862_IG10
add r2, sp, 4 add r3, sp, 0 movw lr, 0xd1ff @@ -98,28 +98,28 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M36862_IG09
+ bne SHORT G_M36862_IG11
cmp r5, 2
- beq SHORT G_M36862_IG10
+ beq SHORT G_M36862_IG12
cmp r5, 3
- beq G_M36862_IG11
+ beq G_M36862_IG13
cmp r5, 0
- blt G_M36862_IG12
+ blt G_M36862_IG14
mov r6, r4 ; byrRegs +[r6] mov r3, r5 cmp r3, 4
- beq G_M36862_IG13
+ beq G_M36862_IG15
;; size=64 bbWeight=1 PerfScore 26.00 G_M36862_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz cmp r3, 5
- beq G_M36862_IG14
+ beq G_M36862_IG16
mov r7, r4 ; byrRegs +[r7] mov r8, r5 ldrh r0, [sp] cmp r0, 256
- bge G_M36862_IG16
+ bge G_M36862_IG19
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -128,41 +128,54 @@ G_M36862_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b ; gcrRegs +[r0] ; byrRegs -[r6-r7] ; gcr arg pop 0
- movs r3, 0
+ mov r9, r0 + ; gcrRegs +[r9] + movs r7, 0
cmp r5, 0
- ble SHORT G_M36862_IG06 - ;; size=46 bbWeight=1 PerfScore 15.00 -G_M36862_IG04: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - lsls r2, r3, 1 - ldrh r2, [r4+r2] - cmp r2, 255 - bgt G_M36862_IG15 - ;; size=10 bbWeight=8 PerfScore 32.00 -G_M36862_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - adds r1, r0, 4 - ; byrRegs +[r1] - asr lr, r2, 5 - and r2, r2, 31 - mov r12, 1 - lsl r2, r12, r2 - ldrsb r12, [r1] - lsl lr, lr, 2 - add r1, lr - ldr lr, [r1] - orr r2, lr, r2 - str r2, [r1] - adds r3, r3, 1 - cmp r3, r5
+ ble SHORT G_M36862_IG07 + ;; size=48 bbWeight=1 PerfScore 16.00 +G_M36862_IG04: ; bbWeight=8, gcrefRegs=0200 {r9}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs -[r0] + lsls r0, r7, 1 + ldrh r8, [r4+r0] + cmp r8, 255 + bgt G_M36862_IG18 + ;; size=14 bbWeight=8 PerfScore 32.00 +G_M36862_IG05: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0010 {r4}, byref, isz + add r10, r9, 4 + ; byrRegs +[r10] + cmp r8, 256 + bge G_M36862_IG17 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M36862_IG06: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0410 {r4 r10}, byref, isz + asr r0, r8, 5 + and r3, r8, 31 + movs r2, 1 + lsl r3, r2, r3 + ldrsb r2, [r10] + lsls r0, r0, 2 + add r0, r10 + ; byrRegs +[r0] + ldr r2, [r0] + orrs r3, r2 + str r3, [r0] + adds r7, r7, 1 + cmp r7, r5
blt SHORT G_M36862_IG04
- ;; size=44 bbWeight=1 PerfScore 14.00 -G_M36862_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r1 r4]
+ ;; size=34 bbWeight=1 PerfScore 13.00 +G_M36862_IG07: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref + ; byrRegs -[r0 r4 r10] + mov r0, r9 + ; gcrRegs +[r0] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M36862_IG08: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r9]
add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8 bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-G_M36862_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M36862_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -171,9 +184,9 @@ G_M36862_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M36862_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M36862_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0] ; byrRegs +[r4] ldrh r4, [r4] @@ -186,9 +199,9 @@ G_M36862_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre ; gcrRegs +[r0] ; gcr arg pop 0 strh r4, [r0+0x04]
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36862_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M36862_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -210,42 +223,13 @@ G_M36862_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r0, r6 ; gcrRegs +[r0]
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=46 bbWeight=0 PerfScore 0.00
-G_M36862_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M36862_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0 r6] ; byrRegs +[r4]
- ldrh r7, [r4] - ldrh r4, [r4+0x02] - ; byrRegs -[r4] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWSFAST - ; gcrRegs +[r0] - ; gcr arg pop 0 - mov r8, r0 - ; gcrRegs +[r8] - mov r0, r8 - mov r1, r7
...

+30 (+30.00%) : 7581.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Tier0-FullOpts)

@@ -8,66 +8,88 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 4, 10 ) ref -> r0 this class-hnd single-def <System.Buffers.Latin1CharSearchValues> -; V01 arg1 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 this [V00,T04] ( 4, 10 ) ref -> r4 this class-hnd single-def <System.Buffers.Latin1CharSearchValues> +; V01 arg1 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T01] ( 5, 17 ) int -> r1 -; V04 loc2 [V04,T02] ( 4, 16 ) ushort -> lr
+; V03 loc1 [V03,T02] ( 5, 17 ) int -> r7 +; V04 loc2 [V04,T01] ( 5, 20 ) ushort -> r8
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 2, 8 ) int -> r4 "Inline stloc first use temp" -; V07 tmp2 [V07,T06] ( 2, 8 ) int -> lr "Inline stloc first use temp" -; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r12 "Inlining Arg" -; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r12 "dup spill"
+; V06 tmp1 [V06,T05] ( 2, 8 ) int -> r0 "Inline stloc first use temp" +; V07 tmp2 [V07,T06] ( 2, 8 ) int -> r1 "Inline stloc first use temp" +; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r9 "Inlining Arg" +; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r0 "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,T09] ( 2, 5 ) byref -> r3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp8 [V13,T08] ( 3, 6 ) int -> r2 "field V02._length (fldOffset=0x4)" P-INDEP
+; V12 tmp7 [V12,T09] ( 2, 5 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp8 [V13,T08] ( 3, 6 ) int -> r6 "field V02._length (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M159_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2}
- push {r4,r5,r11,lr} - add r11, sp, 8 - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M159_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - movs r1, 0 - cmp r2, 0 - ble SHORT G_M159_IG04
+ push {r4,r5,r6,r7,r8,r9,r11,lr} + add r11, sp, 24 + mov r4, r0 + ; gcrRegs +[r4] + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M159_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ldr r5, [sp+0x20] + ; byrRegs +[r5] + ldr r6, [sp+0x24] + movs r7, 0 + cmp r6, 0 + ble SHORT G_M159_IG05
;; size=10 bbWeight=1 PerfScore 5.00
-G_M159_IG03: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - lsl lr, r1, 1 - ldrh lr, [r3+lr] - cmp lr, 255 - bgt SHORT G_M159_IG05 - ldrsb r12, [r0] - add r12, r0, 4 - ; byrRegs +[r12] - asr r4, lr, 5 - and lr, lr, 31 - movs r5, 1 - lsl lr, r5, lr - lsls r4, r4, 2 - add r12, r4 - ldr r4, [r12] - orr lr, r4, lr - str lr, [r12] - adds r1, r1, 1 - cmp r1, r2
+G_M159_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz + lsls r0, r7, 1 + ldrh r8, [r5+r0] + cmp r8, 255 + bgt SHORT G_M159_IG07 + ldrsb r0, [r4] + add r9, r4, 4 + ; byrRegs +[r9] + cmp r8, 256 + bge SHORT G_M159_IG06 + ;; size=26 bbWeight=4 PerfScore 32.00 +G_M159_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz + asr r0, r8, 5 + and r1, r8, 31 + movs r3, 1 + lsl r1, r3, r1 + lsls r0, r0, 2 + add r0, r9 + ; byrRegs +[r0] + ldr r3, [r0] + orrs r1, r3 + str r1, [r0] + adds r7, r7, 1 + cmp r7, r6
blt SHORT G_M159_IG03
- ;; size=58 bbWeight=4 PerfScore 72.00 -G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r0] - ; byrRegs -[r3 r12] - pop {r4,r5,r11,lr}
+ ;; size=30 bbWeight=4 PerfScore 48.00 +G_M159_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r4] + ; byrRegs -[r0 r5 r9] + pop {r4,r5,r6,r7,r8,r9,r11,lr}
add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M159_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M159_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, gcvars, byref, isz + ; gcrRegs +[r4] + ; byrRegs +[r5 r9] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r1, 0xd1ff + movt r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcr arg pop 0 + b SHORT G_M159_IG04 + ;; size=30 bbWeight=0 PerfScore 0.00 +G_M159_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4] + ; byrRegs -[r5 r9]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -76,7 +98,7 @@ G_M159_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 100, prolog size 10, PerfScore 83.00, instruction count 34, allocated bytes for code 100 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Tier0-FullOpts)
+Total bytes of code 130, prolog size 12, PerfScore 92.00, instruction count 46, allocated bytes for code 130 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -88,18 +110,18 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 100 (0x000064)
+ Function Length : 65 (0x00041) Actual length = 130 (0x000082)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
EC 06 pop {r1,r2} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16 FD end + nop ; opsize 16 FF end

benchmarks.run_tiered.linux.arm.checked.mch

-32 (-29.63%) : 15500.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-1.24%) : 41082.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 (Tier0-FullOpts)

@@ -10,14 +10,14 @@ ; ; V00 this [V00,T27] ( 9, 227 ) ref -> [sp+0x44] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T38] ( 8, 82 ) ref -> [sp+0x40] class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
-; V02 arg2 [V02,T36] ( 12, 132.18) ref -> [sp+0x3C] class-hnd single-def <System.__Canon[]>
+; V02 arg2 [V02,T36] ( 12, 132.18) ref -> r6 class-hnd single-def <System.__Canon[]>
; V03 arg3 [V03 ] ( 5, 6 ) struct ( 4) [sp+0xB4] ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V04 arg4 [V04,T41] ( 5, 64 ) int -> [sp+0xB8] single-def
-; V05 loc0 [V05,T01] ( 41,1378 ) ref -> [sp+0x38] class-hnd EH-live spill-single-def <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]> -; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [sp+0x34] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V05 loc0 [V05,T01] ( 41,1378 ) ref -> [sp+0x3C] class-hnd EH-live spill-single-def <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]> +; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [sp+0x38] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc2 [V07,T62] ( 8, 28 ) int -> [sp+0x80] spill-single-def ; V08 loc3 [V08,T58] ( 9, 33 ) int -> [sp+0x7C]
-; V09 loc4 [V09,T63] ( 6, 28 ) ref -> [sp+0x30] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V09 loc4 [V09,T63] ( 6, 44 ) ref -> [sp+0x34] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V10 loc5 [V10,T68] ( 2, 16 ) ref -> r4 class-hnd <System.__Canon> ; V11 loc6 [V11,T35] ( 4, 112 ) ubyte -> [sp+0x78] ; V12 loc7 [V12 ] ( 7, 224 ) struct ( 8) [sp+0x70] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -26,9 +26,9 @@ ; V15 loc10 [V15,T20] ( 6, 354.56) ref -> r9 class-hnd exact <<unknown class>> ; V16 loc11 [V16,T21] ( 5, 352 ) int -> [sp+0x68] spill-single-def ; V17 loc12 [V17,T00] ( 22,1826.56) int -> [sp+0x64]
-; V18 loc13 [V18,T12] ( 10, 640 ) ref -> [sp+0x2C] class-hnd <System.__Canon>
+; V18 loc13 [V18,T12] ( 10, 640 ) ref -> [sp+0x30] class-hnd <System.__Canon>
; V19 loc14 [V19,T11] ( 12, 642.56) int -> [sp+0x60]
-; V20 loc15 [V20,T39] ( 4, 80 ) ref -> [sp+0x28] class-hnd <System.__Canon>
+; V20 loc15 [V20,T39] ( 4, 80 ) ref -> [sp+0x2C] class-hnd <System.__Canon>
; V21 loc16 [V21,T40] ( 13, 74.24) int -> r2 ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V23 tmp1 [V23 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -37,7 +37,7 @@ ;* V26 tmp4 [V26 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V27 tmp5 [V27 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V28 tmp6 [V28 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V29 tmp7 [V29,T72] ( 4, 12 ) int -> r6 "VirtualCall with runtime lookup"
+; V29 tmp7 [V29,T72] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
;* V30 tmp8 [V30 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V31 tmp9 [V31,T43] ( 4, 48 ) int -> r4 "VirtualCall with runtime lookup" ;* V32 tmp10 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -66,16 +66,16 @@ ; V55 tmp33 [V55,T02] ( 6, 768 ) byref -> r3 "Inlining Arg" ; V56 tmp34 [V56,T15] ( 8, 512 ) int -> lr "Inline stloc first use temp" ;* V57 tmp35 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
-; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> r1 "Inlining Arg" -; V59 tmp37 [V59,T60] ( 4, 32 ) int -> r0 "Inline stloc first use temp"
+; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> r0 "Inlining Arg" +; V59 tmp37 [V59,T60] ( 4, 32 ) int -> r2 "Inline stloc first use temp"
; V60 tmp38 [V60,T77] ( 5, 6 ) ref -> [sp+0xB4] do-not-enreg[] single-def "field V03.array (fldOffset=0x0)" P-DEP ; V61 tmp39 [V61 ] ( 6, 192 ) ref -> [sp+0x70] do-not-enreg[X] addr-exposed "field V12.AssemblySymbol (fldOffset=0x0)" P-DEP ; V62 tmp40 [V62 ] ( 2, 64 ) int -> [sp+0x74] do-not-enreg[X] addr-exposed "field V12.DefinitionIndex (fldOffset=0x4)" P-DEP ; V63 tmp41 [V63,T69] ( 2, 16 ) ref -> r4 "field V32.AssemblySymbol (fldOffset=0x0)" P-INDEP ; V64 tmp42 [V64,T71] ( 2, 16 ) int -> [sp+0x5C] spill-single-def "field V32.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V65 tmp43 [V65,T24] ( 4, 256 ) ref -> [sp+0x24] "field V42.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V65 tmp43 [V65,T24] ( 4, 256 ) ref -> [sp+0x28] "field V42.AssemblySymbol (fldOffset=0x0)" P-INDEP
; V66 tmp44 [V66,T25] ( 4, 256 ) int -> r8 "field V42.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V67 tmp45 [V67,T70] ( 2, 16 ) ref -> [sp+0x20] spill-single-def "field V45.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V67 tmp45 [V67,T70] ( 2, 16 ) ref -> [sp+0x24] spill-single-def "field V45.AssemblySymbol (fldOffset=0x0)" P-INDEP
;* V68 tmp46 [V68,T79] ( 0, 0 ) int -> zero-ref "field V45.DefinitionIndex (fldOffset=0x4)" P-INDEP ;* V69 tmp47 [V69 ] ( 0, 0 ) ref -> zero-ref "field V49.AssemblySymbol (fldOffset=0x0)" P-INDEP ;* V70 tmp48 [V70 ] ( 0, 0 ) int -> zero-ref "field V49.DefinitionIndex (fldOffset=0x4)" P-INDEP @@ -83,7 +83,7 @@ ;* V72 tmp50 [V72 ] ( 0, 0 ) int -> zero-ref "field V54.DefinitionIndex (fldOffset=0x4)" P-INDEP ;* V73 tmp51 [V73 ] ( 0, 0 ) ref -> zero-ref "field V57.AssemblySymbol (fldOffset=0x0)" P-INDEP ;* V74 tmp52 [V74 ] ( 0, 0 ) int -> zero-ref "field V57.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V75 tmp53 [V75,T73] ( 3, 12 ) ref -> r6 "argument with side effect"
+; V75 tmp53 [V75,T73] ( 3, 12 ) ref -> r4 "argument with side effect"
; V76 tmp54 [V76,T74] ( 3, 12 ) ref -> r0 "argument with side effect" ; V77 tmp55 [V77,T78] ( 2, 8 ) ref -> r0 "argument with side effect" ; V78 tmp56 [V78,T46] ( 3, 48 ) ref -> r0 "arr expr" @@ -96,7 +96,7 @@ ; V85 tmp63 [V85,T06] ( 6, 768 ) ref -> r3 "argument with side effect" ; V86 tmp64 [V86,T07] ( 6, 768 ) ref -> registers "arr expr" ; V87 tmp65 [V87,T10] ( 6, 768 ) int -> lr "index expr"
-; V88 tmp66 [V88,T08] ( 6, 768 ) byref -> [sp+0x1C] "BlockOp address local"
+; V88 tmp66 [V88,T08] ( 6, 768 ) byref -> [sp+0x20] "BlockOp address local"
; V89 tmp67 [V89,T09] ( 6, 768 ) ref -> r12 "arr expr" ; V90 tmp68 [V90,T48] ( 3, 48 ) ref -> r0 "argument with side effect" ; V91 tmp69 [V91,T49] ( 3, 48 ) ref -> r0 "arr expr" @@ -107,7 +107,7 @@ ; V96 tmp74 [V96,T88] ( 2, 4 ) ref -> r0 single-def "argument with side effect" ; V97 tmp75 [V97,T89] ( 2, 4 ) ref -> r0 single-def "argument with side effect" ; V98 PSPSym [V98,T95] ( 1, 1 ) int -> [sp+0x8C] do-not-enreg[V] "PSPSym"
-; V99 cse0 [V99,T84] ( 8, 5 ) byref -> [sp+0x18] multi-def "CSE - conservative"
+; V99 cse0 [V99,T84] ( 8, 5 ) byref -> [sp+0x1C] multi-def "CSE - conservative"
;* V100 cse1 [V100,T96] ( 0, 0 ) int -> zero-ref "CSE - moderate" ;* V101 cse2 [V101,T56] ( 0, 0 ) int -> zero-ref hoist multi-def "CSE - moderate" ;* V102 cse3 [V102,T80] ( 0, 0 ) int -> zero-ref "CSE - moderate" @@ -117,19 +117,19 @@ ; V106 cse7 [V106,T57] ( 3, 39.60) ref -> r1 "CSE - conservative" ; V107 cse8 [V107,T23] ( 6, 256 ) int -> [sp+0x58] "CSE - moderate" ; V108 cse9 [V108,T30] ( 6, 170 ) int -> [sp+0x54] spill-single-def "CSE - moderate"
-; V109 cse10 [V109,T17] ( 11, 430 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V109 cse10 [V109,T17] ( 11, 430 ) byref -> [sp+0x18] spill-single-def "CSE - moderate"
; V110 cse11 [V110,T37] ( 3, 96 ) int -> [sp+0x50] "CSE - moderate" ; V111 cse12 [V111,T19] ( 3, 380.16) int -> r1 "CSE - moderate"
-; V112 cse13 [V112,T18] ( 3, 380.16) ref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V112 cse13 [V112,T18] ( 3, 380.16) ref -> [sp+0x14] spill-single-def "CSE - moderate"
; V113 cse14 [V113,T66] ( 3, 24 ) int -> r1 "CSE - conservative"
-; V114 cse15 [V114,T64] ( 3, 24 ) ref -> [sp+0x0C] spill-single-def "CSE - conservative"
+; V114 cse15 [V114,T64] ( 3, 24 ) ref -> [sp+0x10] spill-single-def "CSE - conservative"
; V115 cse16 [V115,T67] ( 3, 24 ) int -> r1 "CSE - conservative"
-; V116 cse17 [V116,T65] ( 3, 24 ) ref -> [sp+0x08] spill-single-def "CSE - conservative"
+; V116 cse17 [V116,T65] ( 3, 24 ) ref -> [sp+0x0C] spill-single-def "CSE - conservative"
; V117 cse18 [V117,T92] ( 3, 3.84) int -> r1 "CSE - conservative" ; V118 cse19 [V118,T91] ( 3, 3.84) ref -> r2 "CSE - conservative" ; V119 cse20 [V119,T34] ( 9, 46 ) int -> [sp+0x4C] multi-def "CSE - moderate" ; V120 cse21 [V120,T16] ( 4, 506.88) int -> r8 "CSE - moderate"
-; V121 cse22 [V121,T33] ( 5, 152 ) byref -> [sp+0x04] "CSE - moderate"
+; V121 cse22 [V121,T33] ( 5, 152 ) byref -> [sp+0x08] "CSE - moderate"
; V122 cse23 [V122,T55] ( 5, 42.08) int -> [sp+0x48] spill-single-def "CSE - moderate" ; V123 rat0 [V123,T85] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V124 rat1 [V124,T86] ( 3, 4 ) int -> r1 "runtime lookup" @@ -138,7 +138,7 @@ ;* V127 rat4 [V127,T83] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ;* V128 rat5 [V128,T90] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V129 rat6 [V129,T75] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V130 rat7 [V130,T76] ( 3, 11.20) int -> r0 "fgMakeTemp is creating a new local variable"
+; V130 rat7 [V130,T76] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
; V131 rat8 [V131,T53] ( 3, 44.80) int -> r4 "fgMakeTemp is creating a new local variable" ;* V132 rat9 [V132,T61] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V133 rat10 [V133,T54] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" @@ -151,7 +151,7 @@ ; V140 rat17 [V140,T98] ( 3, 0 ) int -> r9 "Spilling to split statement for tree" ; V141 rat18 [V141,T99] ( 3, 0 ) int -> r1 "runtime lookup" ; V142 rat19 [V142,T100] ( 3, 0 ) int -> r1 "fgMakeTemp is creating a new local variable"
-; TEMP_01 int -> [r11-0xAC]
+; TEMP_01 int -> [r11-0xA8]
; ; Lcl frame size = 144 @@ -168,15 +168,14 @@ G_M32652_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r0, [r11-0x28] str r0, [sp+0x44] // [V00 this] ; GC ptr vars +{V00}
- str r2, [sp+0x3C] // [V02 arg2] - ; GC ptr vars +{V02}
mov r5, r0 ; gcrRegs +[r5] mov r7, r1 ; gcrRegs +[r7]
- ldr r8, [sp+0xB8] // [V04 arg4] - ;; size=38 bbWeight=1 PerfScore 15.00 -G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000001008000000 {V00 V02}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r6, r2 + ; gcrRegs +[r6] + ;; size=34 bbWeight=1 PerfScore 14.00 +G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000000008000000 {V00}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r9, [r5] mov r0, r9 ldr r1, [r0+0x24] @@ -185,10 +184,10 @@ G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000001008000000 {V00 cmp r1, 0 beq SHORT G_M32652_IG04 ;; size=16 bbWeight=1 PerfScore 7.00
-G_M32652_IG03: ; bbWeight=0.80, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG03: ; bbWeight=0.80, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
b SHORT G_M32652_IG05 ;; size=2 bbWeight=0.80 PerfScore 0.80
-G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff @@ -197,7 +196,7 @@ G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcr arg pop 0 mov r1, r0 ;; size=20 bbWeight=0.20 PerfScore 1.20
-G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M32652_IG05: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
mov r0, r1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -215,9 +214,9 @@ G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ldr r2, [r0] blx r3 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; gcr arg pop 0
- str r0, [sp+0x38] // [V05 loc0]
+ str r0, [sp+0x3C] // [V05 loc0]
; GC ptr vars +{V05}
- str r4, [sp+0x18] // [V99 cse0]
+ str r4, [sp+0x1C] // [V99 cse0]
; GC ptr vars +{V99} ldr r0, [r4+0x08] movw r2, 0xd1ff @@ -227,10 +226,10 @@ G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b blx r2 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; byrRegs -[r4] ; gcr arg pop 0
- str r0, [sp+0x34] // [V06 loc1]
+ str r0, [sp+0x38] // [V06 loc1]
; GC ptr vars +{V06} ;; size=52 bbWeight=1 PerfScore 20.00
-G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000001008004002 {V00 V02 V05 V06 V99}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000000008004002 {V00 V05 V06 V99}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] ldr r0, [sp+0xB4] // [V60 tmp38] ; gcrRegs +[r0] @@ -240,59 +239,56 @@ G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000001008004002 {V00 str r1, [sp+0x80] // [V07 loc2] mov lr, 1 cmp r1, 1
- ble G_M32652_IG77
+ ble G_M32652_IG75
;; size=20 bbWeight=1 PerfScore 8.00
-G_M32652_IG07: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r12, [r7+0x04] str r12, [sp+0x48] // [V122 cse23] cmp lr, r12
- bhs SHORT G_M32652_IG12
+ bhs SHORT G_M32652_IG11
lsl r0, lr, 3 adds r0, 8 ldr r0, [r7+r0] ; gcrRegs +[r0] cmp r0, 0
- bne G_M32652_IG76
+ bne G_M32652_IG74
;; size=26 bbWeight=4 PerfScore 36.00
-G_M32652_IG08: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG08: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r0, [sp+0xB4] // [V60 tmp38] ; gcrRegs +[r0] adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0]
- str r0, [sp+0x14] // [V109 cse10]
+ str r0, [sp+0x18] // [V109 cse10]
; GC ptr vars +{V109} str lr, [sp+0x7C] // [V08 loc3]
- lsl r6, lr, 2 - ldr r6, [r0+r6] - ; gcrRegs +[r6] - mov r0, r6
+ lsl r4, lr, 2 + ldr r4, [r0+r4] + ; gcrRegs +[r4] + mov r0, r4
; gcrRegs +[r0] ; byrRegs -[r0]
- ldr r6, [r6] - ; gcrRegs -[r6] - ldr r6, [r6+0x30] - ldr r6, [r6+0x04] - blx r6 // <unknown method>
+ ldr r4, [r4] + ; gcrRegs -[r4]
...

+0 (0.00%) : 38233.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier0-FullOpts)

@@ -199,7 +199,7 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} mov r2, r0 ; gcrRegs +[r2] cmp r6, 0
- beq G_M41722_IG50
+ beq G_M41722_IG51
adds r0, r2, 4 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -220,7 +220,7 @@ G_M41722_IG03: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} ; gcrRegs -[r2] ldr r0, [r5+0x04] cmp r9, r0
- bhs G_M41722_IG47
+ bhs G_M41722_IG48
add r0, r5, 8 ; byrRegs +[r0] lsl r3, r9, 1 @@ -236,13 +236,13 @@ G_M41722_IG04: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M41722_IG13
+ beq SHORT G_M41722_IG14
b SHORT G_M41722_IG07 ;; size=18 bbWeight=2 PerfScore 14.00 G_M41722_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4-r6] ldr lr, [sp+0x54] // [V03 loc0]
- b SHORT G_M41722_IG43
+ b SHORT G_M41722_IG44
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M41722_IG06: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4-r6] @@ -251,20 +251,20 @@ G_M41722_IG06: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} ldrb r0, [r3+r0] ands r0, r0, 128 cmp r0, 0
- beq SHORT G_M41722_IG13
+ beq SHORT G_M41722_IG14
;; size=18 bbWeight=2 PerfScore 12.00 G_M41722_IG07: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz mov r10, 1 add r9, r9, 1 str r9, [sp+0x4C] // [V05 loc2] ldr lr, [sp+0x54] // [V03 loc0]
- b SHORT G_M41722_IG42
+ b SHORT G_M41722_IG43
;; size=18 bbWeight=2 PerfScore 10.00 G_M41722_IG08: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ldr r0, [r6+0x04] ; gcrRegs +[r0] cmp r0, 0
- beq G_M41722_IG52
+ beq G_M41722_IG53
ldr r3, [r6+0x08] ldr r2, [r0+0x04] cmp r2, r3 @@ -283,56 +283,58 @@ G_M41722_IG09: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} G_M41722_IG10: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz uxth r0, r0 cmp r0, 256
- blo SHORT G_M41722_IG11
+ blo SHORT G_M41722_IG12
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M41722_IG15 - b SHORT G_M41722_IG12 - ;; size=26 bbWeight=8 PerfScore 80.00 -G_M41722_IG11: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M41722_IG13 + ;; size=24 bbWeight=8 PerfScore 72.00 +G_M41722_IG11: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + b SHORT G_M41722_IG16 + ;; size=2 bbWeight=2 PerfScore 2.00 +G_M41722_IG12: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldrb r0, [r3+r0] ands r0, r0, 128 cmp r0, 0
- beq SHORT G_M41722_IG15
+ beq SHORT G_M41722_IG16
;; size=18 bbWeight=8 PerfScore 48.00
-G_M41722_IG12: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG13: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04] ; gcrRegs +[r0] cmp r0, 0
- beq G_M41722_IG52
+ beq G_M41722_IG53
ldr r3, [r6+0x08] mov r2, r3 ldr r0, [r0+0x04] ; gcrRegs -[r0] cmp r0, r2
- bls SHORT G_M41722_IG13
+ bls SHORT G_M41722_IG14
adds r0, r3, 1 str r0, [r6+0x08] ;; size=22 bbWeight=8 PerfScore 80.00
-G_M41722_IG13: ; bbWeight=16, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG14: ; bbWeight=16, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r10, 0 bne SHORT G_M41722_IG08 ;; size=6 bbWeight=16 PerfScore 32.00
-G_M41722_IG14: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - b SHORT G_M41722_IG16
+G_M41722_IG15: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + b SHORT G_M41722_IG17
;; size=2 bbWeight=2 PerfScore 2.00
-G_M41722_IG15: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M41722_IG16: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r10, 0 ;; size=4 bbWeight=2 PerfScore 2.00
-G_M41722_IG16: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG17: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
add r0, r5, 8 ; byrRegs +[r0] lsl r3, r9, 1 ldrh r0, [r0+r3] ; byrRegs -[r0] cmp r0, 37
- bne SHORT G_M41722_IG17
+ bne SHORT G_M41722_IG18
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -377,7 +379,7 @@ G_M41722_IG16: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} str r0, [sp+0x4C] // [V05 loc2] ldr r0, [r5+0x04] cmp r9, r0
- bhs G_M41722_IG47
+ bhs G_M41722_IG48
add r0, r5, 8 ; byrRegs +[r0] lsl r1, r9, 1 @@ -387,13 +389,13 @@ G_M41722_IG16: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} ; gcrRegs +[r0] ; byrRegs -[r0] cmp r0, 0
- beq G_M41722_IG52
+ beq G_M41722_IG53
ldr r1, [r6+0x08] str r1, [sp+0x24] // [V152 cse2] mov r12, r1 ldr r1, [r0+0x04] cmp r1, r12
- bls SHORT G_M41722_IG18
+ bls SHORT G_M41722_IG19
ldr r1, [sp+0x24] // [V152 cse2] adds r1, r1, 1 str r1, [r6+0x08] @@ -403,42 +405,42 @@ G_M41722_IG16: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} lsl r1, r12, 1 ldrh r0, [r0+r1] ; byrRegs -[r0]
- b SHORT G_M41722_IG19
+ b SHORT G_M41722_IG20
;; size=154 bbWeight=2 PerfScore 110.00
-G_M41722_IG17: ; bbWeight=1, gcVars=000000000000000000000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M41722_IG18: ; bbWeight=1, gcVars=000000000000000000000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r2-r3] ; GC ptr vars -{V11 V17} str r9, [sp+0x4C] // [V05 loc2] ldr lr, [sp+0x54] // [V03 loc0]
- b SHORT G_M41722_IG42
+ b SHORT G_M41722_IG43
;; size=10 bbWeight=1 PerfScore 3.00
-G_M41722_IG18: ; bbWeight=2, gcVars=000000000000000000000002 {V11}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M41722_IG19: ; bbWeight=2, gcVars=000000000000000000000002 {V11}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r3] ; GC ptr vars +{V01 V11} mov r0, -1 ;; size=4 bbWeight=2 PerfScore 2.00
-G_M41722_IG19: ; bbWeight=2, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M41722_IG20: ; bbWeight=2, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref
uxth r12, r0 ;; size=4 bbWeight=2 PerfScore 2.00
-G_M41722_IG20: ; bbWeight=16, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG21: ; bbWeight=16, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
sxth r0, r12 cmp r0, -1
- bne SHORT G_M41722_IG22
+ bne SHORT G_M41722_IG23
;; size=10 bbWeight=16 PerfScore 48.00
-G_M41722_IG21: ; bbWeight=8, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M41722_IG22: ; bbWeight=8, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref
mov lr, 0 str lr, [sp+0x44] // [V08 loc5] ldr lr, [sp+0x44] // [V08 loc5] ;; size=12 bbWeight=8 PerfScore 24.00
-G_M41722_IG22: ; bbWeight=16, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG23: ; bbWeight=16, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r3+0x0C] ldr r1, [r3+0x04] ; gcrRegs +[r1] ldr r7, [r1+0x04] cmp r7, r0
- bls SHORT G_M41722_IG24
+ bls SHORT G_M41722_IG25
;; size=10 bbWeight=16 PerfScore 80.00
-G_M41722_IG23: ; bbWeight=8, gcrefRegs=007A {r1 r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG24: ; bbWeight=8, gcrefRegs=007A {r1 r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1] @@ -447,9 +449,9 @@ G_M41722_IG23: ; bbWeight=8, gcrefRegs=007A {r1 r3 r4 r5 r6}, byrefRegs=0 ldr r0, [r3+0x0C] adds r0, r0, 1 str r0, [r3+0x0C]
- b SHORT G_M41722_IG25
+ b SHORT G_M41722_IG26
;; size=16 bbWeight=8 PerfScore 56.00
-G_M41722_IG24: ; bbWeight=8, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M41722_IG25: ; bbWeight=8, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref
; byrRegs -[r1] str lr, [sp+0x44] // [V08 loc5] mov r0, r3 @@ -465,35 +467,35 @@ G_M41722_IG24: ; bbWeight=8, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 ; gcrRegs +[r3] ldr lr, [sp+0x44] // [V08 loc5] ;; size=28 bbWeight=8 PerfScore 72.00
-G_M41722_IG25: ; bbWeight=16, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG26: ; bbWeight=16, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04] ; gcrRegs +[r0] cmp r0, 0
- beq G_M41722_IG52
+ beq G_M41722_IG53
ldr r1, [r6+0x08] ldr r12, [r0+0x04] cmp r12, r1
- bls SHORT G_M41722_IG27
+ bls SHORT G_M41722_IG28
;; size=18 bbWeight=16 PerfScore 112.00
-G_M41722_IG26: ; bbWeight=8, gcrefRegs=0079 {r0 r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG27: ; bbWeight=8, gcrefRegs=0079 {r0 r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] lsls r1, r1, 1 ldrh r7, [r0+r1]
- b SHORT G_M41722_IG28
+ b SHORT G_M41722_IG29
;; size=8 bbWeight=8 PerfScore 32.00 ...

+2 (+0.38%) : 15756.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,int,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (Tier0-FullOpts)

@@ -82,7 +82,7 @@ G_M26325_IG03: ; bbWeight=1, gcVars=00000840 {V04 V05}, gcrefRegs=0014 {r ldr r2, [sp+0x1C] // [V04 loc0] movs r0, 0 str r0, [sp+0x18] // [V05 loc1]
- b SHORT G_M26325_IG12
+ b SHORT G_M26325_IG14
;; size=12 bbWeight=1 PerfScore 6.00 G_M26325_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r2] @@ -159,7 +159,7 @@ G_M26325_IG05: ; bbWeight=1, gcVars=00001840 {V04 V05 V22}, gcrefRegs=001 str r0, [sp+0x18] // [V05 loc1] ldr r2, [sp+0x1C] // [V04 loc0] ; gcrRegs +[r2]
- b SHORT G_M26325_IG12
+ b SHORT G_M26325_IG14
;; size=38 bbWeight=1 PerfScore 16.00 G_M26325_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0 r2] @@ -179,7 +179,7 @@ G_M26325_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movs r6, 0 movs r7, 0 cmp r4, 0
- ble SHORT G_M26325_IG11
+ ble SHORT G_M26325_IG13
;; size=28 bbWeight=1 PerfScore 12.00 G_M26325_IG07: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -196,23 +196,30 @@ G_M26325_IG07: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r12 // CORINFO_HELP_MEMCPY ; byrRegs -[r0-r1] ; gcr arg pop 0
- ldr r3, [sp+0x28] // [V10 loc6+0x08] - cmp r3, 17 - beq SHORT G_M26325_IG10
+ ldr r0, [sp+0x28] // [V10 loc6+0x08] + cmp r0, 17 + bne SHORT G_M26325_IG10 + ;; size=30 bbWeight=8 PerfScore 96.00 +G_M26325_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r5] + b SHORT G_M26325_IG12 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M26325_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + nop + b SHORT G_M26325_IG13 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M26325_IG10: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r5]
adds r6, r7, 1 mov r7, r6 cmp r4, r7 bgt SHORT G_M26325_IG07
- ;; size=38 bbWeight=8 PerfScore 128.00 -G_M26325_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=8 PerfScore 32.00 +G_M26325_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
- b SHORT G_M26325_IG11
+ b SHORT G_M26325_IG13
;; size=2 bbWeight=1 PerfScore 1.00
-G_M26325_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - nop - b SHORT G_M26325_IG11 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M26325_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26325_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r1, [sp+0x2C] // [V10 loc6+0x0c] str r1, [sp] // [V12 OutArgs] ldr r1, [sp+0x30] // [V10 loc6+0x10] @@ -232,9 +239,9 @@ G_M26325_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r0, [sp+0x18] // [V05 loc1] ldr r2, [sp+0x1C] // [V04 loc0] ; gcrRegs +[r2]
- b SHORT G_M26325_IG12
+ b SHORT G_M26325_IG14
;; size=40 bbWeight=1 PerfScore 17.00
-G_M26325_IG11: ; bbWeight=1, gcVars=00000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26325_IG13: ; bbWeight=1, gcVars=00000040 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r2] ; GC ptr vars -{V05} ldr r0, [sp+0x1C] @@ -246,36 +253,36 @@ G_M26325_IG11: ; bbWeight=1, gcVars=00000040 {V04}, gcrefRegs=0000 {}, by blx r3 // System.Reflection.PortableExecutable.PEReader:Dispose():this ; gcrRegs -[r0] ; gcr arg pop 0
- b SHORT G_M26325_IG16
+ b SHORT G_M26325_IG18
;; size=16 bbWeight=1 PerfScore 6.00
-G_M26325_IG12: ; bbWeight=1, gcVars=00000840 {V04 V05}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref
+G_M26325_IG14: ; bbWeight=1, gcVars=00000840 {V04 V05}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r2] ; GC ptr vars +{V04 V05}
- bl G_M26325_IG30
+ bl G_M26325_IG32
;; size=4 bbWeight=1 PerfScore 1.00
-G_M26325_IG13: ; bbWeight=1, nogc, extend
+G_M26325_IG15: ; bbWeight=1, nogc, extend
nop ;; size=2 bbWeight=1 PerfScore 1.00
-G_M26325_IG14: ; bbWeight=1, gcVars=00000800 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M26325_IG16: ; bbWeight=1, gcVars=00000800 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2] ; GC ptr vars -{V04} ldr r0, [sp+0x18] ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00
-G_M26325_IG15: ; bbWeight=1, epilog, nogc, extend - add sp, 72 - pop {r4,r5,r6,r7,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M26325_IG16: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] - ; GC ptr vars -{V05} - movs r0, 0 - ;; size=2 bbWeight=1 PerfScore 1.00
G_M26325_IG17: ; bbWeight=1, epilog, nogc, extend add sp, 72 pop {r4,r5,r6,r7,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M26325_IG18: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M26325_IG18: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0] + ; GC ptr vars -{V05} + movs r0, 0 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M26325_IG19: ; bbWeight=1, epilog, nogc, extend + add sp, 72 + pop {r4,r5,r6,r7,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M26325_IG20: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[r0] push {r4,r5,r6,r7,r11,lr} sub sp, 16 @@ -283,7 +290,7 @@ G_M26325_IG18: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre str r1, [sp+0x0C] sub r11, r1, 8 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M26325_IG19: ; bbWeight=0, gcVars=00000840 {V04 V05}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26325_IG21: ; bbWeight=0, gcVars=00000840 {V04 V05}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05} mov r1, r0 ; gcrRegs +[r1] @@ -298,12 +305,12 @@ G_M26325_IG19: ; bbWeight=0, gcVars=00000840 {V04 V05}, gcrefRegs=0001 {r mov r4, r0 ; gcrRegs +[r4] cmp r4, 0
- bne SHORT G_M26325_IG20
+ bne SHORT G_M26325_IG22
movs r0, 0 ; gcrRegs -[r0]
- b SHORT G_M26325_IG26
+ b SHORT G_M26325_IG28
;; size=30 bbWeight=0 PerfScore 0.00
-G_M26325_IG20: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M26325_IG22: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r1, r4 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -314,7 +321,7 @@ G_M26325_IG20: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M26325_IG23
+ bne SHORT G_M26325_IG25
mov r1, r4 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -326,58 +333,58 @@ G_M26325_IG20: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcrRegs -[r1 r4] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M26325_IG21
+ bne SHORT G_M26325_IG23
movs r0, 0 ; gcrRegs -[r0]
- b SHORT G_M26325_IG22 - ;; size=52 bbWeight=0 PerfScore 0.00 -G_M26325_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movs r0, 1 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M26325_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
b SHORT G_M26325_IG24
- ;; size=2 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M26325_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00 G_M26325_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r0, 0 - bne SHORT G_M26325_IG25 - movs r0, 0
b SHORT G_M26325_IG26
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=0 PerfScore 0.00
G_M26325_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M26325_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M26325_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r0, 0 + bne SHORT G_M26325_IG27 + movs r0, 0 + b SHORT G_M26325_IG28 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M26325_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M26325_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
add sp, 16 pop {r4,r5,r6,r7,r11,pc} ;; size=6 bbWeight=0 PerfScore 0.00
-G_M26325_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M26325_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push {r4,r5,r6,r7,r11,lr} sub sp, 16 add r3, r11, 8 str r3, [sp+0x0C] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M26325_IG28: ; bbWeight=0, gcVars=00000840 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M26325_IG30: ; bbWeight=0, gcVars=00000840 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r0, LOW ADDRESS G_M26325_IG09 movt r0, HIGH ADDRESS G_M26325_IG09 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M26325_IG29: ; bbWeight=0, funclet epilog, nogc, extend
+G_M26325_IG31: ; bbWeight=0, funclet epilog, nogc, extend
add sp, 16 pop {r4,r5,r6,r7,r11,pc} ;; size=6 bbWeight=0 PerfScore 0.00
-G_M26325_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M26325_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push {r4,r5,r6,r7,r11,lr} sub sp, 16 add r3, r11, 8 str r3, [sp+0x0C] ;; size=12 bbWeight=1 PerfScore 4.00
-G_M26325_IG31: ; bbWeight=1, gcVars=00000840 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26325_IG33: ; bbWeight=1, gcVars=00000840 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r2, [r11-0x3C] // [V04 loc0] ; gcrRegs +[r2] cmp r2, 0
- beq SHORT G_M26325_IG32
+ beq SHORT G_M26325_IG34
mov r0, r2 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -388,12 +395,12 @@ G_M26325_IG31: ; bbWeight=1, gcVars=00000840 {V04 V05}, gcrefRegs=0000 {} ; gcrRegs -[r0 r2] ; gcr arg pop 0 ;; size=22 bbWeight=1 PerfScore 8.00
-G_M26325_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
...

+2 (+0.52%) : 53596.dasm - System.String:Concat(System.String[]):System.String (Tier0-FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 8, 30.50) ref -> r4 class-hnd <System.String[]>
+; V00 arg0 [V00,T06] ( 9, 44.50) ref -> r4 class-hnd <System.String[]>
;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref ; V02 loc1 [V02,T14] ( 5, 24 ) int -> r6 ; V03 loc2 [V03,T12] ( 5, 28.50) ref -> r8 class-hnd exact <System.String>
-; V04 loc3 [V04,T02] ( 8, 50 ) int -> r9
+; V04 loc3 [V04,T03] ( 8, 50 ) int -> r9
; V05 loc4 [V05,T00] ( 5, 68 ) int -> r3
-; V06 loc5 [V06,T06] ( 3, 40 ) ref -> r2 class-hnd exact <System.String>
+; V06 loc5 [V06,T08] ( 3, 40 ) ref -> r2 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> r10
-; V08 loc7 [V08,T04] ( 4, 48 ) ref -> [sp+0x04] class-hnd exact spill-single-def <System.String> -; V09 loc8 [V09,T09] ( 4, 32 ) int -> [sp+0x0C] spill-single-def
+; V08 loc7 [V08,T05] ( 4, 48 ) ref -> r7 class-hnd exact <System.String> +; V09 loc8 [V09,T09] ( 4, 32 ) int -> [sp+0x04] spill-single-def
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T20] ( 4, 2 ) ref -> r0 ; V12 tmp2 [V12,T21] ( 2, 2 ) ref -> r0 class-hnd exact "dup spill" <System.String> @@ -33,61 +33,66 @@ ;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> r0 "Single return block return value" ; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> r4 single-def "arg temp"
-; V25 cse0 [V25,T03] ( 6, 49 ) int -> r5 "CSE - aggressive" -; V26 cse1 [V26,T07] ( 3, 36 ) byref -> r7 hoist "CSE - aggressive" -; V27 cse2 [V27,T05] ( 4, 32 ) int -> [sp+0x08] spill-single-def "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> r5 "CSE - aggressive" +; V26 cse1 [V26,T07] ( 4, 32 ) int -> [sp+0x00] spill-single-def "CSE - aggressive" +; V27 cse2 [V27,T04] ( 4, 50 ) byref -> r7 hoist multi-def "CSE - aggressive"
; V28 rat0 [V28,T13] ( 5, 28 ) int -> r6 "field V01.lo (fldOffset=0x0)" P-INDEP ; V29 rat1 [V29,T15] ( 4, 24 ) int -> r0 "field V01.hi (fldOffset=0x4)" P-INDEP ;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20 - add r11, sp, 48
+ sub sp, 12 + add r11, sp, 40
mov r4, r0 ; gcrRegs +[r4] ;; size=12 bbWeight=1 PerfScore 4.00 G_M46295_IG02: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz cmp r4, 0
- beq G_M46295_IG22
+ beq G_M46295_IG23
ldr r5, [r4+0x04] cmp r5, 1
- ble G_M46295_IG16
+ ble G_M46295_IG17
;; size=14 bbWeight=8 PerfScore 40.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r6, 0 movs r0, 0 movs r3, 0
+ cmp r5, 0 + ble SHORT G_M46295_IG08 + ;; size=10 bbWeight=4 PerfScore 20.00 +G_M46295_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
add r7, r4, 8 ; byrRegs +[r7]
- ;; size=10 bbWeight=4 PerfScore 16.00 -G_M46295_IG04: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 2.00 +G_M46295_IG05: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
lsls r2, r3, 2 ldr r2, [r7+r2] ; gcrRegs +[r2] cmp r2, 0
- beq SHORT G_M46295_IG06
+ beq SHORT G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=0014 {r2 r4}, byrefRegs=0080 {r7}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=0014 {r2 r4}, byrefRegs=0080 {r7}, byref
ldr r2, [r2+0x04] ; gcrRegs -[r2] movs r1, 0 adds r6, r2, r6 adcs r0, r1 ;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
adds r3, r3, 1 cmp r5, r3
- bgt SHORT G_M46295_IG04
+ bgt SHORT G_M46295_IG05
;; size=6 bbWeight=16 PerfScore 48.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r7]
movs r3, 0 cmp r6, 0x80000000 sbcs r0, r3
- bge G_M46295_IG23
+ bge G_M46295_IG24
cmp r6, 0
- beq SHORT G_M46295_IG17
+ beq SHORT G_M46295_IG18
mov r0, r6 movw r3, 0xd1ff movt r3, 0xd1ff @@ -98,95 +103,91 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by ; gcrRegs +[r8] mov r9, 0 mov r10, 0
- ;; size=38 bbWeight=4 PerfScore 52.00 -G_M46295_IG08: ; bbWeight=16, gcrefRegs=0110 {r4 r8}, byrefRegs=0080 {r7}, byref, isz
+ cmp r5, 0 + ble SHORT G_M46295_IG16 + ;; size=42 bbWeight=4 PerfScore 60.00 +G_M46295_IG09: ; bbWeight=16, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ add r7, r4, 8 + ; byrRegs +[r7]
lsl r0, r10, 2
- ldr r3, [r7+r0] - ; gcrRegs +[r3] - str r3, [sp+0x04] - ; GC ptr vars +{V08}
+ ldr r7, [r7+r0] + ; gcrRegs +[r7] + ; byrRegs -[r7] + cmp r7, 0 + beq SHORT G_M46295_IG13 + ;; size=14 bbWeight=16 PerfScore 80.00 +G_M46295_IG10: ; bbWeight=8, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz + ldr r3, [r7+0x04] + str r3, [sp]
cmp r3, 0
- beq SHORT G_M46295_IG12 - ;; size=12 bbWeight=16 PerfScore 80.00 -G_M46295_IG09: ; bbWeight=8, gcVars=00000010 {V08}, gcrefRegs=0118 {r3 r4 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz - ldr r2, [r3+0x04] - str r2, [sp+0x08] - cmp r2, 0 - beq SHORT G_M46295_IG12 - mov lr, r2 - str lr, [sp+0x0C]
+ beq SHORT G_M46295_IG13 + mov r2, r3 + str r2, [sp+0x04]
sub r0, r6, r9
- cmp r0, lr - blt SHORT G_M46295_IG14
+ cmp r0, r2 + blt SHORT G_M46295_IG15
cmp r8, 0
- bne SHORT G_M46295_IG10
+ bne SHORT G_M46295_IG11
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff
- movw r12, 0xd1ff - movt r12, 0xd1ff - ldr r12, [r12] - blx r12 // <unknown method> - ; gcrRegs -[r3]
+ movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // <unknown method>
; gcr arg pop 0
- ;; size=58 bbWeight=8 PerfScore 152.00 -G_M46295_IG10: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0080 {r7}, byref, isz
+ ;; size=56 bbWeight=8 PerfScore 152.00 +G_M46295_IG11: ; bbWeight=8, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x04] sub r0, r0, r9
- ldr r2, [sp+0x08] // [V27 cse2] - cmp r0, r2 - bge SHORT G_M46295_IG11
+ ldr r3, [sp] // [V26 cse1] + cmp r0, r3 + bge SHORT G_M46295_IG12
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff
- movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // <unknown method> - ; gcr arg pop 0 - ;; size=42 bbWeight=8 PerfScore 104.00 -G_M46295_IG11: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0080 {r7}, byref - add r2, r8, 8 - ; byrRegs +[r2] - lsl r0, r9, 1 - adds r0, r2, r0 - ; byrRegs +[r0] - ldr r3, [sp+0x04] // [V08 loc7] - ; gcrRegs +[r3] - add r1, r3, 8 - ; byrRegs +[r1] - ldr lr, [sp+0x0C] // [V09 loc8] - lsl r2, lr, 1 - ; byrRegs -[r2]
movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3]
- ; GC ptr vars -{V08}
blx r3 // <unknown method>
+ ; gcr arg pop 0 + ;; size=42 bbWeight=8 PerfScore 104.00 +G_M46295_IG12: ; bbWeight=8, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref + add r0, r8, 8 + ; byrRegs +[r0] + lsl r1, r9, 1 + adds r0, r0, r1 + add r1, r7, 8 + ; byrRegs +[r1] + ldr r2, [sp+0x04] // [V09 loc8] + lsls r2, r2, 1 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r7]
; byrRegs -[r0-r1] ; gcr arg pop 0
- ldr r0, [sp+0x0C] // [V09 loc8] - add r9, r0 - ;; size=40 bbWeight=8 PerfScore 104.00 -G_M46295_IG12: ; bbWeight=16, gcrefRegs=0110 {r4 r8}, byrefRegs=0080 {r7}, byref, isz
+ ldr r7, [sp+0x04] // [V09 loc8] + add r9, r7 + ;; size=34 bbWeight=8 PerfScore 96.00 +G_M46295_IG13: ; bbWeight=16, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
add r10, r10, 1 cmp r5, r10
- bgt SHORT G_M46295_IG08
+ bgt SHORT G_M46295_IG09
;; size=8 bbWeight=16 PerfScore 48.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r7] - b SHORT G_M46295_IG15
+G_M46295_IG14: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz + b SHORT G_M46295_IG16
;; size=2 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref
mov r9, -1 ...

+22 (+22.00%) : 3162.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Tier0-FullOpts)

@@ -8,66 +8,85 @@ ; 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 -> r0 this class-hnd single-def <System.Buffers.Latin1CharSearchValues> -; V01 arg1 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 this [V00,T04] ( 4, 10 ) ref -> r4 this class-hnd single-def <System.Buffers.Latin1CharSearchValues> +; V01 arg1 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T01] ( 5, 17 ) int -> r1 -; V04 loc2 [V04,T02] ( 4, 16 ) ushort -> lr
+; V03 loc1 [V03,T02] ( 5, 17 ) int -> r7 +; V04 loc2 [V04,T01] ( 5, 20 ) ushort -> r8
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 2, 8 ) int -> r4 "Inline stloc first use temp" -; V07 tmp2 [V07,T06] ( 2, 8 ) int -> lr "Inline stloc first use temp" -; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r12 "Inlining Arg" -; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r12 "dup spill"
+; V06 tmp1 [V06,T05] ( 2, 8 ) int -> r3 "Inline stloc first use temp" +; V07 tmp2 [V07,T06] ( 2, 8 ) int -> r2 "Inline stloc first use temp" +; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r9 "Inlining Arg" +; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r3 "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,T09] ( 2, 5 ) byref -> r3 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp8 [V13,T08] ( 3, 6 ) int -> r2 "field V02._length (fldOffset=0x4)" P-INDEP
+; V12 tmp7 [V12,T10] ( 2, 5 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp8 [V13,T09] ( 3, 6 ) int -> r6 "field V02._length (fldOffset=0x4)" P-INDEP +; V14 cse0 [V14,T08] ( 3, 6 ) ref -> r1 "CSE - aggressive"
; ; Lcl frame size = 0 G_M159_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2}
- push {r4,r5,r11,lr} - add r11, sp, 8 - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M159_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - movs r1, 0 - cmp r2, 0 - ble SHORT G_M159_IG04
+ push {r4,r5,r6,r7,r8,r9,r11,lr} + add r11, sp, 24 + mov r4, r0 + ; gcrRegs +[r4] + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M159_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ldr r5, [sp+0x20] + ; byrRegs +[r5] + ldr r6, [sp+0x24] + movs r7, 0 + cmp r6, 0 + ble SHORT G_M159_IG06
;; size=10 bbWeight=1 PerfScore 5.00
-G_M159_IG03: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - lsl lr, r1, 1 - ldrh lr, [r3+lr] - cmp lr, 255 - bgt SHORT G_M159_IG05 - ldrsb r12, [r0] - add r12, r0, 4 - ; byrRegs +[r12] - asr r4, lr, 5 - and lr, lr, 31 - movs r5, 1 - lsl lr, r5, lr - lsls r4, r4, 2 - add r12, r4 - ldr r4, [r12] - orr lr, r4, lr - str lr, [r12] - adds r1, r1, 1 - cmp r1, r2 - blt SHORT G_M159_IG03 - ;; size=58 bbWeight=4 PerfScore 72.00 -G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M159_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz + lsls r0, r7, 1 + ldrh r8, [r5+r0] + cmp r8, 255 + bgt SHORT G_M159_IG07 + ldrsb r0, [r4] + add r9, r4, 4 + ; byrRegs +[r9] + cmp r8, 256 + blt SHORT G_M159_IG05 + ;; size=26 bbWeight=4 PerfScore 32.00 +G_M159_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref + movw r1, 0xd1ff + movt r1, 0xd1ff + mov r0, r1 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method>
; gcrRegs -[r0]
- ; byrRegs -[r3 r12] - pop {r4,r5,r11,lr}
+ ; gcr arg pop 0 + ;; size=22 bbWeight=2 PerfScore 14.00 +G_M159_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz + asr r3, r8, 5 + and r2, r8, 31 + movs r1, 1 + lsl r2, r1, r2 + lsls r3, r3, 2 + add r3, r9 + ; byrRegs +[r3] + ldr r1, [r3] + orrs r2, r1 + str r2, [r3] + adds r7, r7, 1 + cmp r7, r6 + blt SHORT G_M159_IG03 + ;; size=30 bbWeight=4 PerfScore 48.00 +G_M159_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r4] + ; byrRegs -[r3 r5 r9] + pop {r4,r5,r6,r7,r8,r9,r11,lr}
add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M159_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M159_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -76,7 +95,7 @@ G_M159_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 100, prolog size 10, PerfScore 83.00, instruction count 34, allocated bytes for code 100 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Tier0-FullOpts)
+Total bytes of code 122, prolog size 12, PerfScore 106.00, instruction count 44, allocated bytes for code 122 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -88,18 +107,18 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 100 (0x000064)
+ Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
EC 06 pop {r1,r2} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16 FD end + nop ; opsize 16 FF end

coreclr_tests.run.linux.arm.checked.mch

-16 (-2.16%) : 310172.dasm - Microsoft.Build.BackEnd.Scheduler:AssignGlobalRequestId(Microsoft.Build.BackEnd.BuildRequest):this (Tier0-FullOpts)

@@ -12,16 +12,16 @@ ; V01 arg1 [V01,T10] ( 11, 21 ) ref -> r5 class-hnd single-def <Microsoft.Build.BackEnd.BuildRequest> ; V02 loc0 [V02,T17] ( 3, 9 ) ubyte -> r7 ; V03 loc1 [V03,T12] ( 7, 20 ) ref -> [sp+0x00] class-hnd EH-live single-def <<unknown class>>
-; V04 loc2 [V04,T11] ( 3, 17 ) ref -> r4 class-hnd <Microsoft.Build.BackEnd.SchedulableRequest>
+; V04 loc2 [V04,T11] ( 3, 17 ) ref -> r8 class-hnd <Microsoft.Build.BackEnd.SchedulableRequest>
; V05 loc3 [V05,T05] ( 7,112 ) ref -> r10 class-hnd exact <System.Collections.Generic.List`1[System.String]>
-; V06 loc4 [V06,T07] ( 5, 76 ) ref -> r8 class-hnd exact <System.Collections.Generic.List`1[System.String]>
+; V06 loc4 [V06,T07] ( 5, 76 ) ref -> r4 class-hnd exact <System.Collections.Generic.List`1[System.String]>
; V07 loc5 [V07,T00] ( 9,260 ) int -> [sp+0x04] ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T23] ( 2, 4 ) ref -> r0 class-hnd single-def "impAppendStmt" <Microsoft.Build.BackEnd.SchedulingData> ; V10 tmp2 [V10,T24] ( 2, 4 ) ref -> r0 class-hnd single-def "impAppendStmt" <Microsoft.Build.BackEnd.SchedulingData> ;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V12 tmp4 [V12,T08] ( 3, 24 ) ref -> r10 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.String]>
-; V13 tmp5 [V13,T09] ( 3, 24 ) ref -> r8 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.String]>
+; V13 tmp5 [V13,T09] ( 3, 24 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.String]>
; V14 tmp6 [V14,T03] ( 2,128 ) ref -> r2 class-hnd exact "impAppendStmt" <System.String> ; V15 tmp7 [V15,T30] ( 2, 2 ) int -> r0 "Inline return value spill temp" ; V16 tmp8 [V16,T25] ( 2, 4 ) int -> r1 "Inlining Arg" @@ -42,10 +42,10 @@ ; V31 tmp23 [V31,T14] ( 2, 16 ) ref -> r3 class-hnd exact "Inlining Arg" <<unknown class>> ; V32 tmp24 [V32,T15] ( 2, 16 ) ref -> r3 class-hnd exact "Inlining Arg" <<unknown class>> ;* V33 tmp25 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.Build.BackEnd.BuildRequest>
-; V34 tmp26 [V34,T26] ( 2, 4 ) int -> r8 "Inlining Arg"
+; V34 tmp26 [V34,T26] ( 2, 4 ) int -> r6 "Inlining Arg"
;* V35 tmp27 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V36 tmp28 [V36,T34] ( 3, 0 ) ref -> r5 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V37 tmp29 [V37,T27] ( 2, 4 ) int -> r10 "Inlining Arg"
+; V37 tmp29 [V37,T27] ( 2, 4 ) int -> r7 "Inlining Arg"
;* V38 tmp30 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V39 tmp31 [V39,T01] ( 3,192 ) ref -> r1 "arr expr" ; V40 tmp32 [V40,T02] ( 3,192 ) ref -> r1 "arr expr" @@ -53,7 +53,7 @@ ; V42 tmp34 [V42,T35] ( 2, 0 ) ref -> r0 "argument with side effect" ; V43 tmp35 [V43,T36] ( 2, 0 ) ref -> r1 "argument with side effect" ; V44 PSPSym [V44,T33] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
-; V45 cse0 [V45,T13] ( 3, 20 ) ref -> r8 "CSE - moderate"
+; V45 cse0 [V45,T13] ( 3, 20 ) ref -> r4 "CSE - moderate"
; V46 cse1 [V46,T06] ( 3, 96 ) int -> r0 "CSE - aggressive" ; ; Lcl frame size = 12 @@ -73,7 +73,7 @@ G_M19067_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b movs r7, 0 ldr r0, [r5+0x2C] cmp r0, -1
- bne G_M19067_IG19
+ bne G_M19067_IG18
ldr r0, [r6+0x18] ; gcrRegs +[r0] ldr r1, [r5+0x24] @@ -87,7 +87,7 @@ G_M19067_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ; byrRegs +[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M19067_IG19
+ beq G_M19067_IG18
ldr r0, [r0] ; gcrRegs +[r0] ; byrRegs -[r0] @@ -96,7 +96,7 @@ G_M19067_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ; gcrRegs -[r0] subs r0, r1, r0 cmp r0, 0
- ble G_M19067_IG19
+ ble G_M19067_IG18
ldr r0, [r6+0x18] ; gcrRegs +[r0] ldr r8, [r5+0x24] @@ -111,7 +111,7 @@ G_M19067_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ; byrRegs +[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M19067_IG22
+ beq G_M19067_IG21
ldr r0, [r0] ; gcrRegs +[r0] ; byrRegs -[r0] @@ -136,7 +136,7 @@ G_M19067_IG03: ; bbWeight=1, gcVars=0000000000001000 {V03}, gcrefRegs=026 ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M19067_IG16
+ beq G_M19067_IG15
;; size=20 bbWeight=1 PerfScore 7.00 G_M19067_IG04: ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz mov r0, r9 @@ -146,19 +146,19 @@ G_M19067_IG04: ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {} ldr r3, [r4] blx r3 // <unknown method> ; gcr arg pop 0
- mov r4, r0 - ; gcrRegs +[r4] - ldr r0, [r4+0x08] - ldr r8, [r0+0x04]
+ mov r8, r0
; gcrRegs +[r8] ldr r0, [r8+0x08]
+ ldr r4, [r0+0x04] + ; gcrRegs +[r4] + ldr r0, [r4+0x08]
; gcrRegs -[r0] ldr r3, [r5+0x04] ; gcrRegs +[r3] ldr r3, [r3+0x08] ; gcrRegs -[r3] cmp r0, r3
- bne SHORT G_M19067_IG08
+ bne G_M19067_IG14
;; size=34 bbWeight=8 PerfScore 104.00 G_M19067_IG05: ; bbWeight=4, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff @@ -170,14 +170,14 @@ G_M19067_IG05: ; bbWeight=4, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0 ; gcr arg pop 0 mov r10, r0 ; gcrRegs +[r10]
- mov r1, r8
+ mov r1, r4
; gcrRegs +[r1] mov r0, r10 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0-r1 r8]
+ ; gcrRegs -[r0-r1 r4]
; gcr arg pop 0 movw r0, 0xd1ff movt r0, 0xd1ff @@ -186,11 +186,11 @@ G_M19067_IG05: ; bbWeight=4, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0 blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0
- mov r8, r0 - ; gcrRegs +[r8]
+ mov r4, r0 + ; gcrRegs +[r4]
ldr r1, [r5+0x04] ; gcrRegs +[r1]
- mov r0, r8
+ mov r0, r4
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -215,8 +215,8 @@ G_M19067_IG05: ; bbWeight=4, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0 movt r2, 0xd1ff ldr r3, [r2] ; gcrRegs +[r3]
- ldr r2, [r8+0x08] - mov r0, r8
+ ldr r2, [r4+0x08] + mov r0, r4
; gcrRegs +[r0] movs r1, 0 movw lr, 0xd1ff @@ -229,32 +229,32 @@ G_M19067_IG05: ; bbWeight=4, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0 ldr r1, [r10+0x08] cmp r1, 0 ble SHORT G_M19067_IG07
- ;; size=146 bbWeight=4 PerfScore 192.00
+ ;; size=144 bbWeight=4 PerfScore 192.00
G_M19067_IG06: ; bbWeight=32, gcrefRegs=0770 {r4 r5 r6 r8 r9 r10}, byrefRegs=0000 {}, byref, isz ldr r1, [r10+0x08] cmp r3, r1
- bhs SHORT G_M19067_IG10
+ bhs SHORT G_M19067_IG11
ldr r1, [r10+0x04] ; gcrRegs +[r1] ldr r0, [r1+0x04] cmp r3, r0
- bhs SHORT G_M19067_IG11
+ bhs SHORT G_M19067_IG10
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1] lsls r0, r3, 2 ldr r2, [r1+r0] ; gcrRegs +[r2]
- ldr r1, [r8+0x08]
+ ldr r1, [r4+0x08]
; byrRegs -[r1] cmp r3, r1
- bhs SHORT G_M19067_IG10 - ldr r1, [r8+0x04]
+ bhs SHORT G_M19067_IG11 + ldr r1, [r4+0x04]
; gcrRegs +[r1] ldr lr, [r1+0x04] str r3, [sp+0x04] cmp r3, lr
- bhs SHORT G_M19067_IG11
+ bhs SHORT G_M19067_IG10
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1] @@ -280,30 +280,36 @@ G_M19067_IG06: ; bbWeight=32, gcrefRegs=0770 {r4 r5 r6 r8 r9 r10}, byrefR cmp r0, r3 mov r3, r0 blt SHORT G_M19067_IG06
- ;; size=90 bbWeight=32 PerfScore 1120.00 -G_M19067_IG07: ; bbWeight=4, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r8 r10]
+ ;; size=86 bbWeight=32 PerfScore 1120.00 +G_M19067_IG07: ; bbWeight=4, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4 r10]
cmp r7, 0
- beq SHORT G_M19067_IG14
+ bne SHORT G_M19067_IG14
;; size=4 bbWeight=4 PerfScore 8.00
-G_M19067_IG08: ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4] - mov r0, r9
+G_M19067_IG08: ; bbWeight=1, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6] + ldr r0, [r8+0x08]
; gcrRegs +[r0]
- movw r4, 0xd1ff - movt r4, 0xd1ff - ldr r3, [r4] - blx r3 // <unknown method>
+ ldr r6, [r0+0x2C] + ldr r0, [r5+0x2C]
; gcrRegs -[r0]
- ; gcr arg pop 0 - cmp r0, 0 - bne G_M19067_IG04 - ;; size=20 bbWeight=8 PerfScore 56.00 -G_M19067_IG09: ; bbWeight=1, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
+ cmp r0, -1 + bne SHORT G_M19067_IG12 + ;; size=14 bbWeight=1 PerfScore 5.00 +G_M19067_IG09: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8] + str r6, [r5+0x2C]
b SHORT G_M19067_IG16
- ;; size=2 bbWeight=1 PerfScore 1.00 -G_M19067_IG10: ; bbWeight=0, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref - ; gcrRegs -[r5-r6]
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M19067_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r5 r9] + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M19067_IG11: ; bbWeight=0, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref + ; gcrRegs +[r9]
movw r3, 0xd1ff movt r3, 0xd1ff ...

-12 (-1.91%) : 1505.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)

@@ -32,11 +32,11 @@ ;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.DeserializationTracker> ;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V22 tmp19 [V22,T09] ( 2, 2 ) ubyte -> r1 "Inline return value spill temp"
-; V23 tmp20 [V23,T06] ( 3, 4 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Threading.AsyncLocal`1[ubyte]>
+; V23 tmp20 [V23,T06] ( 3, 4 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <System.Threading.AsyncLocal`1[ubyte]>
;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V25 tmp22 [V25 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-; V26 tmp23 [V26,T04] ( 6, 4.50) ref -> r10 class-hnd "Inline return value spill temp" <System.Object> -; V27 tmp24 [V27,T11] ( 5, 2 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.ExecutionContext>
+; V26 tmp23 [V26,T04] ( 6, 4.50) ref -> r8 class-hnd "Inline return value spill temp" <System.Object> +; V27 tmp24 [V27,T11] ( 5, 2 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.ExecutionContext>
; V28 tmp25 [V28 ] ( 3, 1 ) ref -> [sp+0x00] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object> ; V29 tmp26 [V29,T07] ( 2, 4 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Threading.Thread> ; V30 tmp27 [V30,T05] ( 4, 4 ) ref -> r3 @@ -65,9 +65,9 @@ ; Lcl frame size = 12 G_M22412_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr}
sub sp, 12
- add r11, sp, 40
+ add r11, sp, 32
movs r2, 0 str r2, [sp] // [V28 tmp25] mov r5, r0 @@ -77,11 +77,11 @@ G_M22412_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=18 bbWeight=1 PerfScore 7.00 G_M22412_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz cmp r5, 0
- beq SHORT G_M22412_IG06
+ beq SHORT G_M22412_IG08
movs r6, 0 ldr r0, [r5+0x04] cmp r0, 0
- ble SHORT G_M22412_IG06
+ ble SHORT G_M22412_IG08
;; size=12 bbWeight=1 PerfScore 6.00 G_M22412_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref add r7, r5, 8 @@ -91,22 +91,35 @@ G_M22412_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, lsls r0, r6, 1 ldrh r0, [r7+r0] cmp r0, 256
- blo SHORT G_M22412_IG13
+ blo SHORT G_M22412_IG06
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M22412_IG07
+ bne SHORT G_M22412_IG07
;; size=26 bbWeight=1 PerfScore 10.00
-G_M22412_IG05: ; bbWeight=1.27, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref, isz
+G_M22412_IG05: ; bbWeight=0.73, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz + ; byrRegs -[r7] + b SHORT G_M22412_IG09 + ;; size=2 bbWeight=0.73 PerfScore 0.73 +G_M22412_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref, isz + ; byrRegs +[r7] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldrb r0, [r3+r0] + ands r0, r0, 128 + cmp r0, 0 + beq SHORT G_M22412_IG09 + ;; size=18 bbWeight=1 PerfScore 6.00 +G_M22412_IG07: ; bbWeight=1.27, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref, isz
adds r6, r6, 1
- ldr r1, [r5+0x04] - cmp r1, r6
+ ldr r0, [r5+0x04] + cmp r0, r6
bgt SHORT G_M22412_IG04 ;; size=8 bbWeight=1.27 PerfScore 5.09
-G_M22412_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M22412_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
; byrRegs -[r7] movw r1, 0xd1ff movt r1, 0xd1ff @@ -119,22 +132,22 @@ G_M22412_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcrRegs -[r0] ; gcr arg pop 0 ;; size=22 bbWeight=1 PerfScore 7.00
-G_M22412_IG07: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M22412_IG09: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [r4] cmp r0, 0
- beq SHORT G_M22412_IG17
+ beq SHORT G_M22412_IG15
;; size=6 bbWeight=1 PerfScore 3.00
-G_M22412_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M22412_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [r4] cmp r0, 1
- beq SHORT G_M22412_IG19
+ beq SHORT G_M22412_IG20
cmp r0, -1
- bne G_M22412_IG25
+ bne G_M22412_IG26
movw r0, 0xd1ff movt r0, 0xd1ff
- ldr r8, [r0] - ; gcrRegs +[r8] - ldrsb r0, [r8]
+ ldr r6, [r0] + ; gcrRegs +[r6] + ldrsb r0, [r6]
movw r0, 0xd1ff movt r0, 0xd1ff mov r1, 736 @@ -146,7 +159,7 @@ G_M22412_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r3, [r0+0x10] ; gcrRegs +[r3] cmp r3, 0
- bne SHORT G_M22412_IG09
+ bne SHORT G_M22412_IG11
movw r3, 0xd1ff ; gcrRegs -[r3] movt r3, 0xd1ff @@ -157,24 +170,24 @@ G_M22412_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcr arg pop 0 mov r3, r0 ; gcrRegs +[r3]
- ;; size=72 bbWeight=1 PerfScore 23.00 -G_M22412_IG09: ; bbWeight=1, gcrefRegs=0128 {r3 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=70 bbWeight=1 PerfScore 23.00 +G_M22412_IG11: ; bbWeight=1, gcrefRegs=0068 {r3 r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- ldr r9, [r3+0x04] - ; gcrRegs +[r9] - cmp r9, 0 - bne SHORT G_M22412_IG20 - mov r10, 0 - ;; size=14 bbWeight=1 PerfScore 4.00 -G_M22412_IG10: ; bbWeight=1, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r3 r8-r9] +[r10]
+ ldr r7, [r3+0x04] + ; gcrRegs +[r7] + cmp r7, 0 + bne SHORT G_M22412_IG21 + mov r8, 0 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M22412_IG12: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r3 r6-r7] +[r8]
movs r3, 0 str r3, [sp] // [V28 tmp25]
- cmp r10, 0 - bne SHORT G_M22412_IG14
+ cmp r8, 0 + bne SHORT G_M22412_IG16
;; size=10 bbWeight=1 PerfScore 4.00
-G_M22412_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r10]
+G_M22412_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -183,51 +196,13 @@ G_M22412_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcr arg pop 0 ldrb r1, [r0+0x04] cmp r1, 0
- beq SHORT G_M22412_IG19
+ beq SHORT G_M22412_IG20
;; size=18 bbWeight=1 PerfScore 7.00
-G_M22412_IG12: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M22412_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- b SHORT G_M22412_IG24
+ b SHORT G_M22412_IG25
;; size=2 bbWeight=0 PerfScore 0.00
-G_M22412_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref, isz - ; byrRegs +[r4 r7] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldrb r0, [r3+r0] - ands r0, r0, 128 - cmp r0, 0 - bne SHORT G_M22412_IG05 - b SHORT G_M22412_IG07 - ;; size=20 bbWeight=1 PerfScore 7.00 -G_M22412_IG14: ; bbWeight=1, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r10] - ; byrRegs -[r4 r7] - ldr r1, [r10] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r1, r0 - beq SHORT G_M22412_IG16 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M22412_IG15: ; bbWeight=0.50, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref - mov r1, r10 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ; gcr arg pop 0 - ;; size=22 bbWeight=0.50 PerfScore 3.50 -G_M22412_IG16: ; bbWeight=1, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref, isz - ldrb r1, [r10+0x04] - cmp r1, 0 - bne SHORT G_M22412_IG24 - b SHORT G_M22412_IG11 - ;; size=10 bbWeight=1 PerfScore 4.00 -G_M22412_IG17: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[r10]
+G_M22412_IG15: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
; byrRegs +[r4] mov r1, r5 ; gcrRegs +[r1] @@ -249,43 +224,72 @@ G_M22412_IG17: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldrb r3, [sp+0x04] // [V02 loc0] ands r0, r3 cmp r0, 0
- beq SHORT G_M22412_IG18
+ beq SHORT G_M22412_IG19
movs r0, 1 str r0, [r4]
- b SHORT G_M22412_IG08
+ b SHORT G_M22412_IG10
;; size=52 bbWeight=0 PerfScore 0.00
-G_M22412_IG18: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M22412_IG16: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r8] + ; byrRegs -[r4] + ldr r1, [r8] + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + beq SHORT G_M22412_IG18 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M22412_IG17: ; bbWeight=0.50, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref + mov r1, r8 + ; gcrRegs +[r1] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // CORINFO_HELP_UNBOX + ; gcrRegs -[r1] + ; gcr arg pop 0
...

-12 (-1.91%) : 156517.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)

@@ -32,11 +32,11 @@ ;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.DeserializationTracker> ;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V22 tmp19 [V22,T09] ( 2, 2 ) ubyte -> r1 "Inline return value spill temp"
-; V23 tmp20 [V23,T06] ( 3, 4 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Threading.AsyncLocal`1[ubyte]>
+; V23 tmp20 [V23,T06] ( 3, 4 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <System.Threading.AsyncLocal`1[ubyte]>
;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V25 tmp22 [V25 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-; V26 tmp23 [V26,T04] ( 6, 4.50) ref -> r10 class-hnd "Inline return value spill temp" <System.Object> -; V27 tmp24 [V27,T11] ( 5, 2 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.ExecutionContext>
+; V26 tmp23 [V26,T04] ( 6, 4.50) ref -> r8 class-hnd "Inline return value spill temp" <System.Object> +; V27 tmp24 [V27,T11] ( 5, 2 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.ExecutionContext>
; V28 tmp25 [V28 ] ( 3, 1 ) ref -> [sp+0x00] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object> ; V29 tmp26 [V29,T07] ( 2, 4 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Threading.Thread> ; V30 tmp27 [V30,T05] ( 4, 4 ) ref -> r3 @@ -65,9 +65,9 @@ ; Lcl frame size = 12 G_M22412_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr}
sub sp, 12
- add r11, sp, 40
+ add r11, sp, 32
movs r2, 0 str r2, [sp] // [V28 tmp25] mov r5, r0 @@ -77,11 +77,11 @@ G_M22412_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=18 bbWeight=1 PerfScore 7.00 G_M22412_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz cmp r5, 0
- beq SHORT G_M22412_IG06
+ beq SHORT G_M22412_IG08
movs r6, 0 ldr r0, [r5+0x04] cmp r0, 0
- ble SHORT G_M22412_IG06
+ ble SHORT G_M22412_IG08
;; size=12 bbWeight=1 PerfScore 6.00 G_M22412_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref add r7, r5, 8 @@ -91,22 +91,35 @@ G_M22412_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, lsls r0, r6, 1 ldrh r0, [r7+r0] cmp r0, 256
- blo SHORT G_M22412_IG13
+ blo SHORT G_M22412_IG06
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M22412_IG07
+ bne SHORT G_M22412_IG07
;; size=26 bbWeight=1 PerfScore 10.00
-G_M22412_IG05: ; bbWeight=1.25, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref, isz
+G_M22412_IG05: ; bbWeight=0.75, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz + ; byrRegs -[r7] + b SHORT G_M22412_IG09 + ;; size=2 bbWeight=0.75 PerfScore 0.75 +G_M22412_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref, isz + ; byrRegs +[r7] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldrb r0, [r3+r0] + ands r0, r0, 128 + cmp r0, 0 + beq SHORT G_M22412_IG09 + ;; size=18 bbWeight=1 PerfScore 6.00 +G_M22412_IG07: ; bbWeight=1.25, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref, isz
adds r6, r6, 1
- ldr r1, [r5+0x04] - cmp r1, r6
+ ldr r0, [r5+0x04] + cmp r0, r6
bgt SHORT G_M22412_IG04 ;; size=8 bbWeight=1.25 PerfScore 5.00
-G_M22412_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M22412_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
; byrRegs -[r7] movw r1, 0xd1ff movt r1, 0xd1ff @@ -119,22 +132,22 @@ G_M22412_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcrRegs -[r0] ; gcr arg pop 0 ;; size=22 bbWeight=1 PerfScore 7.00
-G_M22412_IG07: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M22412_IG09: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [r4] cmp r0, 0
- beq SHORT G_M22412_IG17
+ beq SHORT G_M22412_IG15
;; size=6 bbWeight=1 PerfScore 3.00
-G_M22412_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M22412_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [r4] cmp r0, 1
- beq SHORT G_M22412_IG19
+ beq SHORT G_M22412_IG20
cmp r0, -1
- bne G_M22412_IG25
+ bne G_M22412_IG26
movw r0, 0xd1ff movt r0, 0xd1ff
- ldr r8, [r0] - ; gcrRegs +[r8] - ldrsb r0, [r8]
+ ldr r6, [r0] + ; gcrRegs +[r6] + ldrsb r0, [r6]
movw r0, 0xd1ff movt r0, 0xd1ff mov r1, 736 @@ -146,7 +159,7 @@ G_M22412_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r3, [r0+0x10] ; gcrRegs +[r3] cmp r3, 0
- bne SHORT G_M22412_IG09
+ bne SHORT G_M22412_IG11
movw r3, 0xd1ff ; gcrRegs -[r3] movt r3, 0xd1ff @@ -157,24 +170,24 @@ G_M22412_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcr arg pop 0 mov r3, r0 ; gcrRegs +[r3]
- ;; size=72 bbWeight=1 PerfScore 23.00 -G_M22412_IG09: ; bbWeight=1, gcrefRegs=0128 {r3 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=70 bbWeight=1 PerfScore 23.00 +G_M22412_IG11: ; bbWeight=1, gcrefRegs=0068 {r3 r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- ldr r9, [r3+0x04] - ; gcrRegs +[r9] - cmp r9, 0 - bne SHORT G_M22412_IG20 - mov r10, 0 - ;; size=14 bbWeight=1 PerfScore 4.00 -G_M22412_IG10: ; bbWeight=1, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r3 r8-r9] +[r10]
+ ldr r7, [r3+0x04] + ; gcrRegs +[r7] + cmp r7, 0 + bne SHORT G_M22412_IG21 + mov r8, 0 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M22412_IG12: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r3 r6-r7] +[r8]
movs r3, 0 str r3, [sp] // [V28 tmp25]
- cmp r10, 0 - bne SHORT G_M22412_IG14
+ cmp r8, 0 + bne SHORT G_M22412_IG16
;; size=10 bbWeight=1 PerfScore 4.00
-G_M22412_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r10]
+G_M22412_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -183,51 +196,13 @@ G_M22412_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcr arg pop 0 ldrb r1, [r0+0x04] cmp r1, 0
- beq SHORT G_M22412_IG19
+ beq SHORT G_M22412_IG20
;; size=18 bbWeight=1 PerfScore 7.00
-G_M22412_IG12: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M22412_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- b SHORT G_M22412_IG24
+ b SHORT G_M22412_IG25
;; size=2 bbWeight=0 PerfScore 0.00
-G_M22412_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref, isz - ; byrRegs +[r4 r7] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldrb r0, [r3+r0] - ands r0, r0, 128 - cmp r0, 0 - bne SHORT G_M22412_IG05 - b SHORT G_M22412_IG07 - ;; size=20 bbWeight=1 PerfScore 7.00 -G_M22412_IG14: ; bbWeight=1, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r10] - ; byrRegs -[r4 r7] - ldr r1, [r10] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r1, r0 - beq SHORT G_M22412_IG16 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M22412_IG15: ; bbWeight=0.50, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref - mov r1, r10 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ; gcr arg pop 0 - ;; size=22 bbWeight=0.50 PerfScore 3.50 -G_M22412_IG16: ; bbWeight=1, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref, isz - ldrb r1, [r10+0x04] - cmp r1, 0 - bne SHORT G_M22412_IG24 - b SHORT G_M22412_IG11 - ;; size=10 bbWeight=1 PerfScore 4.00 -G_M22412_IG17: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[r10]
+G_M22412_IG15: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
; byrRegs +[r4] mov r1, r5 ; gcrRegs +[r1] @@ -249,43 +224,72 @@ G_M22412_IG17: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldrb r3, [sp+0x04] // [V02 loc0] ands r0, r3 cmp r0, 0
- beq SHORT G_M22412_IG18
+ beq SHORT G_M22412_IG19
movs r0, 1 str r0, [r4]
- b SHORT G_M22412_IG08
+ b SHORT G_M22412_IG10
;; size=52 bbWeight=0 PerfScore 0.00
-G_M22412_IG18: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M22412_IG16: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r8] + ; byrRegs -[r4] + ldr r1, [r8] + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + beq SHORT G_M22412_IG18 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M22412_IG17: ; bbWeight=0.50, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref + mov r1, r8 + ; gcrRegs +[r1] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // CORINFO_HELP_UNBOX + ; gcrRegs -[r1] + ; gcr arg pop 0
...

+26 (+5.24%) : 31069.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span1[uint],int) (Tier1)

@@ -9,14 +9,14 @@ ; 8 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> -; V01 arg1 [V01,T09] ( 7, 7.69) int -> r4 -; V02 loc0 [V02,T02] ( 15, 27.15) int -> r7 -; V03 loc1 [V03,T07] ( 3, 16.69) int -> r8
+; V00 arg0 [V00,T08] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> +; V01 arg1 [V01,T07] ( 7, 7.69) int -> r4 +; V02 loc0 [V02,T02] ( 16, 21.62) int -> r7 +; V03 loc1 [V03,T11] ( 3, 3.77) int -> r8
; V04 loc2 [V04,T18] ( 9, 0 ) byref -> r6 single-def ; V05 loc3 [V05,T19] ( 9, 0 ) byref -> r4 single-def ;* V06 loc4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def
-; V07 loc5 [V07,T01] ( 5, 36.92) int -> r0
+; V07 loc5 [V07,T04] ( 5, 17.54) int -> r0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[uint]> ;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[uint]> @@ -49,9 +49,9 @@ ;* V37 tmp29 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V38 tmp30 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp31 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp32 [V40,T00] ( 4, 48.15) int -> r7 "Inlining Arg"
+; V40 tmp32 [V40,T00] ( 4, 35.23) int -> r7 "Inlining Arg"
;* V41 tmp33 [V41 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V42 tmp34 [V42,T06] ( 2, 18.62) byref -> r9 "Inlining Arg"
+; V42 tmp34 [V42,T03] ( 2, 18.62) byref -> r9 "Inlining Arg"
;* V43 tmp35 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V44 tmp36 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp37 [V45 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP @@ -62,17 +62,17 @@ ;* V50 tmp42 [V50 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP ;* V51 tmp43 [V51 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP ;* V52 tmp44 [V52 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
-; V53 tmp45 [V53,T14] ( 2, 1.85) byref -> r5 single-def "field V30._reference (fldOffset=0x0)" P-INDEP -; V54 tmp46 [V54,T15] ( 2, 1.85) int -> r7 "field V30._length (fldOffset=0x4)" P-INDEP
+; V53 tmp45 [V53,T12] ( 2, 1.85) byref -> r5 single-def "field V30._reference (fldOffset=0x0)" P-INDEP +; V54 tmp46 [V54,T13] ( 2, 1.85) int -> r7 "field V30._length (fldOffset=0x4)" P-INDEP
; V55 tmp47 [V55,T20] ( 2, 0 ) byref -> r0 single-def "field V34._reference (fldOffset=0x0)" P-INDEP ; V56 tmp48 [V56,T24] ( 2, 0 ) int -> r1 "field V34._length (fldOffset=0x4)" P-INDEP
-;* V57 tmp49 [V57,T10] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP -; V58 tmp50 [V58,T08] ( 2, 14.77) int -> r1 "field V36._length (fldOffset=0x4)" P-INDEP -; V59 tmp51 [V59,T12] ( 2, 3.85) byref -> r0 "field V41._reference (fldOffset=0x0)" P-INDEP -; V60 tmp52 [V60,T13] ( 2, 3.85) int -> r1 "field V41._length (fldOffset=0x4)" P-INDEP -; V61 tmp53 [V61,T03] ( 22, 17.05) byref -> r5 single-def "V00.[000..004)" -; V62 tmp54 [V62,T04] ( 10, 20.62) int -> r6 "V00.[004..008)" -; V63 cse0 [V63,T05] ( 12, 19.85) ref -> r1 multi-def "CSE - aggressive"
+;* V57 tmp49 [V57,T15] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP +; V58 tmp50 [V58,T14] ( 2, 1.85) int -> r1 "field V36._length (fldOffset=0x4)" P-INDEP +; V59 tmp51 [V59,T09] ( 2, 3.85) byref -> r0 "field V41._reference (fldOffset=0x0)" P-INDEP +; V60 tmp52 [V60,T10] ( 2, 3.85) int -> r1 "field V41._length (fldOffset=0x4)" P-INDEP +; V61 tmp53 [V61,T06] ( 22, 10.59) byref -> r5 single-def "V00.[000..004)" +; V62 tmp54 [V62,T05] ( 10, 14.15) int -> r6 "V00.[004..008)" +; V63 cse0 [V63,T01] ( 15, 30.92) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -114,20 +114,35 @@ G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre G_M26918_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz mov r7, r6 cmp r6, 1
- ble SHORT G_M26918_IG15
+ ble SHORT G_M26918_IG18
;; size=6 bbWeight=1 PerfScore 3.00 G_M26918_IG05: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r7, 16
- ble SHORT G_M26918_IG11
+ ble SHORT G_M26918_IG14
;; size=4 bbWeight=1.92 PerfScore 3.85 G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r4, 0
- beq G_M26918_IG29
+ beq G_M26918_IG32
subs r4, r4, 1 cmp r7, r6
- bhi G_M26918_IG32
+ bhi G_M26918_IG35
;; size=14 bbWeight=0.92 PerfScore 4.62 G_M26918_IG07: ; bbWeight=7.38, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+ cmp r7, 0 + bge SHORT G_M26918_IG09 + ;; size=4 bbWeight=7.38 PerfScore 14.77 +G_M26918_IG08: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref + movw r1, 0xd1ff + movt r1, 0xd1ff + mov r0, r1 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ;; size=22 bbWeight=3.69 PerfScore 25.85 +G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
mov r1, r7 mov r0, r5 ; byrRegs +[r0] @@ -140,17 +155,19 @@ G_M26918_IG07: ; bbWeight=7.38, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b add r0, r8, 1 subs r7, r7, r0 cmp r0, r6
- bhi G_M26918_IG32
+ bhi G_M26918_IG35 + ;; size=30 bbWeight=0.92 PerfScore 10.15 +G_M26918_IG10: ; bbWeight=7.38, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
subs r1, r6, r0 cmp r1, r7
- blo G_M26918_IG32
+ blo G_M26918_IG35
lsls r0, r0, 2 add r9, r5, r0 ; byrRegs +[r9] cmp r7, 0
- bge SHORT G_M26918_IG09 - ;; size=48 bbWeight=7.38 PerfScore 132.92 -G_M26918_IG08: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9}, byref
+ bge SHORT G_M26918_IG12 + ;; size=18 bbWeight=7.38 PerfScore 51.69 +G_M26918_IG11: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9}, byref
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -161,7 +178,7 @@ G_M26918_IG08: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9} blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=22 bbWeight=3.69 PerfScore 25.85
-G_M26918_IG09: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9}, byref, isz
+G_M26918_IG12: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9}, byref, isz
mov r0, r9 ; byrRegs +[r0] mov r1, r7 @@ -175,22 +192,22 @@ G_M26918_IG09: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9} cmp r7, 1 bgt SHORT G_M26918_IG05 ;; size=24 bbWeight=1.92 PerfScore 19.23
-G_M26918_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r5]
- b SHORT G_M26918_IG15
+ b SHORT G_M26918_IG18
;; size=2 bbWeight=1 PerfScore 1.00
-G_M26918_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
; byrRegs +[r5] cmp r7, 2
- beq SHORT G_M26918_IG14
+ beq SHORT G_M26918_IG17
;; size=4 bbWeight=1 PerfScore 2.00
-G_M26918_IG12: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG15: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
cmp r7, 3
- beq SHORT G_M26918_IG20
+ beq SHORT G_M26918_IG23
cmp r7, r6
- bhi G_M26918_IG32
+ bhi G_M26918_IG35
cmp r7, 0
- bge SHORT G_M26918_IG13
+ bge SHORT G_M26918_IG16
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -201,7 +218,7 @@ G_M26918_IG12: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=36 bbWeight=0.92 PerfScore 12.00
-G_M26918_IG13: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG16: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
mov r0, r5 ; byrRegs +[r0] mov r1, r7 @@ -210,9 +227,9 @@ G_M26918_IG13: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0 r5]
- b SHORT G_M26918_IG15
+ b SHORT G_M26918_IG18
;; size=18 bbWeight=0.92 PerfScore 6.46
-G_M26918_IG14: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
; byrRegs +[r5] adds r7, r5, 4 ; byrRegs +[r7] @@ -220,25 +237,25 @@ G_M26918_IG14: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b ldr r0, [r5] ldr r3, [r7] cmp r0, r3
- bhi SHORT G_M26918_IG16
+ bhi SHORT G_M26918_IG19
;; size=12 bbWeight=0.08 PerfScore 0.46
-G_M26918_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M26918_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r5 r7] pop {r4,r5,r6,r7,r8,r9,r11,lr} add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M26918_IG16: ; bbWeight=0.04, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, gcvars, byref, isz
+G_M26918_IG19: ; bbWeight=0.04, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, gcvars, byref, isz
; byrRegs +[r5 r7] cmp r5, r7
- bne SHORT G_M26918_IG17
+ bne SHORT G_M26918_IG20
movs r0, 0
- b SHORT G_M26918_IG18
+ b SHORT G_M26918_IG21
;; size=8 bbWeight=0.04 PerfScore 0.17
-G_M26918_IG17: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, byref
+G_M26918_IG20: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, byref
movs r0, 1 ;; size=2 bbWeight=0.04 PerfScore 0.04
-G_M26918_IG18: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, byref, isz
+G_M26918_IG21: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -247,19 +264,19 @@ G_M26918_IG18: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7} ldr r1, [r7] str r1, [r5] str r0, [r7]
- b SHORT G_M26918_IG15
+ b SHORT G_M26918_IG18
;; size=22 bbWeight=0.04 PerfScore 0.38
-G_M26918_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r5 r7] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL ;; size=10 bbWeight=0 PerfScore 0.00
-G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
; byrRegs +[r5] movs r0, 2 cmp r0, r6
- bhs SHORT G_M26918_IG19
+ bhs SHORT G_M26918_IG22
add r6, r5, 8 ; byrRegs +[r6] adds r4, r5, 4 @@ -268,35 +285,12 @@ G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre ldr r0, [r5] ldr r3, [r4] cmp r0, r3
- bls SHORT G_M26918_IG23 - cmp r5, r4 - bne SHORT G_M26918_IG21 - movs r0, 0
...

+26 (+5.24%) : 2336.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span1[uint],int) (Tier1)

@@ -9,14 +9,14 @@ ; 8 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> -; V01 arg1 [V01,T09] ( 7, 7.69) int -> r4 -; V02 loc0 [V02,T02] ( 15, 27.15) int -> r7 -; V03 loc1 [V03,T07] ( 3, 16.69) int -> r8
+; V00 arg0 [V00,T08] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> +; V01 arg1 [V01,T07] ( 7, 7.69) int -> r4 +; V02 loc0 [V02,T02] ( 16, 21.62) int -> r7 +; V03 loc1 [V03,T11] ( 3, 3.77) int -> r8
; V04 loc2 [V04,T18] ( 9, 0 ) byref -> r6 single-def ; V05 loc3 [V05,T19] ( 9, 0 ) byref -> r4 single-def ;* V06 loc4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def
-; V07 loc5 [V07,T01] ( 5, 36.92) int -> r0
+; V07 loc5 [V07,T04] ( 5, 17.54) int -> r0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[uint]> ;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[uint]> @@ -49,9 +49,9 @@ ;* V37 tmp29 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V38 tmp30 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp31 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp32 [V40,T00] ( 4, 48.15) int -> r7 "Inlining Arg"
+; V40 tmp32 [V40,T00] ( 4, 35.23) int -> r7 "Inlining Arg"
;* V41 tmp33 [V41 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V42 tmp34 [V42,T06] ( 2, 18.62) byref -> r9 "Inlining Arg"
+; V42 tmp34 [V42,T03] ( 2, 18.62) byref -> r9 "Inlining Arg"
;* V43 tmp35 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V44 tmp36 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp37 [V45 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP @@ -62,17 +62,17 @@ ;* V50 tmp42 [V50 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP ;* V51 tmp43 [V51 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP ;* V52 tmp44 [V52 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
-; V53 tmp45 [V53,T14] ( 2, 1.85) byref -> r5 single-def "field V30._reference (fldOffset=0x0)" P-INDEP -; V54 tmp46 [V54,T15] ( 2, 1.85) int -> r7 "field V30._length (fldOffset=0x4)" P-INDEP
+; V53 tmp45 [V53,T12] ( 2, 1.85) byref -> r5 single-def "field V30._reference (fldOffset=0x0)" P-INDEP +; V54 tmp46 [V54,T13] ( 2, 1.85) int -> r7 "field V30._length (fldOffset=0x4)" P-INDEP
; V55 tmp47 [V55,T20] ( 2, 0 ) byref -> r0 single-def "field V34._reference (fldOffset=0x0)" P-INDEP ; V56 tmp48 [V56,T24] ( 2, 0 ) int -> r1 "field V34._length (fldOffset=0x4)" P-INDEP
-;* V57 tmp49 [V57,T10] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP -; V58 tmp50 [V58,T08] ( 2, 14.77) int -> r1 "field V36._length (fldOffset=0x4)" P-INDEP -; V59 tmp51 [V59,T12] ( 2, 3.85) byref -> r0 "field V41._reference (fldOffset=0x0)" P-INDEP -; V60 tmp52 [V60,T13] ( 2, 3.85) int -> r1 "field V41._length (fldOffset=0x4)" P-INDEP -; V61 tmp53 [V61,T03] ( 22, 17.05) byref -> r5 single-def "V00.[000..004)" -; V62 tmp54 [V62,T04] ( 10, 20.62) int -> r6 "V00.[004..008)" -; V63 cse0 [V63,T05] ( 12, 19.85) ref -> r1 multi-def "CSE - aggressive"
+;* V57 tmp49 [V57,T15] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP +; V58 tmp50 [V58,T14] ( 2, 1.85) int -> r1 "field V36._length (fldOffset=0x4)" P-INDEP +; V59 tmp51 [V59,T09] ( 2, 3.85) byref -> r0 "field V41._reference (fldOffset=0x0)" P-INDEP +; V60 tmp52 [V60,T10] ( 2, 3.85) int -> r1 "field V41._length (fldOffset=0x4)" P-INDEP +; V61 tmp53 [V61,T06] ( 22, 10.59) byref -> r5 single-def "V00.[000..004)" +; V62 tmp54 [V62,T05] ( 10, 14.15) int -> r6 "V00.[004..008)" +; V63 cse0 [V63,T01] ( 15, 30.92) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -114,20 +114,35 @@ G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre G_M26918_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz mov r7, r6 cmp r6, 1
- ble SHORT G_M26918_IG15
+ ble SHORT G_M26918_IG18
;; size=6 bbWeight=1 PerfScore 3.00 G_M26918_IG05: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r7, 16
- ble SHORT G_M26918_IG11
+ ble SHORT G_M26918_IG14
;; size=4 bbWeight=1.92 PerfScore 3.85 G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r4, 0
- beq G_M26918_IG29
+ beq G_M26918_IG32
subs r4, r4, 1 cmp r7, r6
- bhi G_M26918_IG32
+ bhi G_M26918_IG35
;; size=14 bbWeight=0.92 PerfScore 4.62 G_M26918_IG07: ; bbWeight=7.38, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+ cmp r7, 0 + bge SHORT G_M26918_IG09 + ;; size=4 bbWeight=7.38 PerfScore 14.77 +G_M26918_IG08: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref + movw r1, 0xd1ff + movt r1, 0xd1ff + mov r0, r1 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ;; size=22 bbWeight=3.69 PerfScore 25.85 +G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
mov r1, r7 mov r0, r5 ; byrRegs +[r0] @@ -140,17 +155,19 @@ G_M26918_IG07: ; bbWeight=7.38, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b add r0, r8, 1 subs r7, r7, r0 cmp r0, r6
- bhi G_M26918_IG32
+ bhi G_M26918_IG35 + ;; size=30 bbWeight=0.92 PerfScore 10.15 +G_M26918_IG10: ; bbWeight=7.38, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
subs r1, r6, r0 cmp r1, r7
- blo G_M26918_IG32
+ blo G_M26918_IG35
lsls r0, r0, 2 add r9, r5, r0 ; byrRegs +[r9] cmp r7, 0
- bge SHORT G_M26918_IG09 - ;; size=48 bbWeight=7.38 PerfScore 132.92 -G_M26918_IG08: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9}, byref
+ bge SHORT G_M26918_IG12 + ;; size=18 bbWeight=7.38 PerfScore 51.69 +G_M26918_IG11: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9}, byref
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -161,7 +178,7 @@ G_M26918_IG08: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9} blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=22 bbWeight=3.69 PerfScore 25.85
-G_M26918_IG09: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9}, byref, isz
+G_M26918_IG12: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9}, byref, isz
mov r0, r9 ; byrRegs +[r0] mov r1, r7 @@ -175,22 +192,22 @@ G_M26918_IG09: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=0220 {r5 r9} cmp r7, 1 bgt SHORT G_M26918_IG05 ;; size=24 bbWeight=1.92 PerfScore 19.23
-G_M26918_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r5]
- b SHORT G_M26918_IG15
+ b SHORT G_M26918_IG18
;; size=2 bbWeight=1 PerfScore 1.00
-G_M26918_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
; byrRegs +[r5] cmp r7, 2
- beq SHORT G_M26918_IG14
+ beq SHORT G_M26918_IG17
;; size=4 bbWeight=1 PerfScore 2.00
-G_M26918_IG12: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG15: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
cmp r7, 3
- beq SHORT G_M26918_IG20
+ beq SHORT G_M26918_IG23
cmp r7, r6
- bhi G_M26918_IG32
+ bhi G_M26918_IG35
cmp r7, 0
- bge SHORT G_M26918_IG13
+ bge SHORT G_M26918_IG16
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -201,7 +218,7 @@ G_M26918_IG12: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=36 bbWeight=0.92 PerfScore 12.00
-G_M26918_IG13: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG16: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
mov r0, r5 ; byrRegs +[r0] mov r1, r7 @@ -210,9 +227,9 @@ G_M26918_IG13: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0 r5]
- b SHORT G_M26918_IG15
+ b SHORT G_M26918_IG18
;; size=18 bbWeight=0.92 PerfScore 6.46
-G_M26918_IG14: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
; byrRegs +[r5] adds r7, r5, 4 ; byrRegs +[r7] @@ -220,25 +237,25 @@ G_M26918_IG14: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b ldr r0, [r5] ldr r3, [r7] cmp r0, r3
- bhi SHORT G_M26918_IG16
+ bhi SHORT G_M26918_IG19
;; size=12 bbWeight=0.08 PerfScore 0.46
-G_M26918_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M26918_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r5 r7] pop {r4,r5,r6,r7,r8,r9,r11,lr} add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M26918_IG16: ; bbWeight=0.04, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, gcvars, byref, isz
+G_M26918_IG19: ; bbWeight=0.04, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, gcvars, byref, isz
; byrRegs +[r5 r7] cmp r5, r7
- bne SHORT G_M26918_IG17
+ bne SHORT G_M26918_IG20
movs r0, 0
- b SHORT G_M26918_IG18
+ b SHORT G_M26918_IG21
;; size=8 bbWeight=0.04 PerfScore 0.17
-G_M26918_IG17: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, byref
+G_M26918_IG20: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, byref
movs r0, 1 ;; size=2 bbWeight=0.04 PerfScore 0.04
-G_M26918_IG18: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, byref, isz
+G_M26918_IG21: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -247,19 +264,19 @@ G_M26918_IG18: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7} ldr r1, [r7] str r1, [r5] str r0, [r7]
- b SHORT G_M26918_IG15
+ b SHORT G_M26918_IG18
;; size=22 bbWeight=0.04 PerfScore 0.38
-G_M26918_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r5 r7] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL ;; size=10 bbWeight=0 PerfScore 0.00
-G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M26918_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
; byrRegs +[r5] movs r0, 2 cmp r0, r6
- bhs SHORT G_M26918_IG19
+ bhs SHORT G_M26918_IG22
add r6, r5, 8 ; byrRegs +[r6] adds r4, r5, 4 @@ -268,35 +285,12 @@ G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre ldr r0, [r5] ldr r3, [r4] cmp r0, r3
- bls SHORT G_M26918_IG23 - cmp r5, r4 - bne SHORT G_M26918_IG21 - movs r0, 0
...

+30 (+20.55%) : 143338.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Instrumented Tier1)

@@ -11,23 +11,24 @@ ; V00 this [V00,T04] ( 4, 10 ) ref -> r4 this class-hnd single-def <System.Buffers.Latin1CharSearchValues> ; V01 arg1 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T01] ( 5, 17 ) int -> r7 -; V04 loc2 [V04,T02] ( 4, 16 ) ushort -> r8
+; V03 loc1 [V03,T02] ( 5, 17 ) int -> r7 +; V04 loc2 [V04,T01] ( 5, 20 ) ushort -> r8
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 2, 8 ) int -> r3 "Inline stloc first use temp" -; V07 tmp2 [V07,T06] ( 2, 8 ) int -> r2 "Inline stloc first use temp" -; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r0 "Inlining Arg"
+; V06 tmp1 [V06,T05] ( 2, 8 ) int -> r0 "Inline stloc first use temp" +; V07 tmp2 [V07,T06] ( 2, 8 ) int -> r3 "Inline stloc first use temp" +; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r9 "Inlining Arg"
; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r0 "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,T09] ( 2, 5 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp8 [V13,T08] ( 3, 6 ) int -> r6 "field V02._length (fldOffset=0x4)" P-INDEP
+; V12 tmp7 [V12,T10] ( 2, 5 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp8 [V13,T09] ( 3, 6 ) int -> r6 "field V02._length (fldOffset=0x4)" P-INDEP +; V14 cse0 [V14,T08] ( 3, 6 ) ref -> r1 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M159_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2}
- push {r3,r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r11,lr}
add r11, sp, 24 mov r4, r0 ; gcrRegs +[r4] @@ -38,13 +39,13 @@ G_M159_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, ldr r6, [sp+0x24] movs r7, 0 cmp r6, 0
- ble SHORT G_M159_IG04
+ ble SHORT G_M159_IG06
;; size=10 bbWeight=1 PerfScore 5.00 G_M159_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz lsls r0, r7, 1 ldrh r8, [r5+r0] cmp r8, 255
- bgt SHORT G_M159_IG06
+ bgt SHORT G_M159_IG08
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -52,24 +53,41 @@ G_M159_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byre blx r3 // CORINFO_HELP_COUNTPROFILE32 ; gcr arg pop 0 ldrsb r0, [r4]
- adds r0, r4, 4
+ add r9, r4, 4 + ; byrRegs +[r9] + cmp r8, 256 + blt SHORT G_M159_IG05 + ;; size=44 bbWeight=4 PerfScore 52.00 +G_M159_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref + movw r1, 0xd1ff + movt r1, 0xd1ff + mov r0, r1 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ; gcr arg pop 0 + ;; size=22 bbWeight=2 PerfScore 14.00 +G_M159_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz + asr r0, r8, 5 + and r3, r8, 31 + movs r2, 1 + lsl r3, r2, r3 + lsls r0, r0, 2 + add r0, r9
; byrRegs +[r0]
- asr r3, r8, 5 - and r2, r8, 31 - movs r1, 1 - lsl r2, r1, r2 - lsls r3, r3, 2 - adds r0, r0, r3 - ldr r3, [r0]
+ ldr r2, [r0]
orrs r3, r2 str r3, [r0] adds r7, r7, 1 cmp r7, r6 blt SHORT G_M159_IG03
- ;; size=66 bbWeight=4 PerfScore 92.00 -G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=30 bbWeight=4 PerfScore 48.00 +G_M159_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
- ; byrRegs -[r0 r5]
+ ; byrRegs -[r0 r5 r9]
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -77,12 +95,12 @@ G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_COUNTPROFILE32 ; gcr arg pop 0 ;; size=18 bbWeight=1 PerfScore 5.00
-G_M159_IG05: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r7,r8,r11,lr}
+G_M159_IG07: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r6,r7,r8,r9,r11,lr}
add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M159_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M159_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -97,7 +115,7 @@ G_M159_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 146, prolog size 12, PerfScore 109.00, instruction count 50, allocated bytes for code 146 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Instrumented Tier1)
+Total bytes of code 176, prolog size 12, PerfScore 131.00, instruction count 59, allocated bytes for code 176 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (Instrumented Tier1)
; ============================================================ Unwind Info: @@ -109,18 +127,18 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 73 (0x00049) Actual length = 146 (0x000092)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
EC 06 pop {r1,r2} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16 FD end + nop ; opsize 16 FF end

libraries.crossgen2.linux.arm.checked.mch

+8 (+0.13%) : 1468.dasm - Program:Main(System.String[]):int (FullOpts)

@@ -1918,7 +1918,7 @@ G_M58511_IG19: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {} mov r9, 0 ;; size=54 bbWeight=1 PerfScore 20.00 G_M58511_IG20: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M58511_IG28
+ b SHORT G_M58511_IG33
;; size=2 bbWeight=1 PerfScore 1.00 G_M58511_IG21: ; bbWeight=4, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x04] @@ -2039,42 +2039,12 @@ G_M58511_IG27: ; bbWeight=4, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 ldr r0, [sp+0x148] // [V11 loc10] ldr r3, [sp+0x14C] // [V03 loc2] cmp r0, r3
- bne SHORT G_M58511_IG29 - mov r0, r8 - ; gcrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // <unknown method> - ; gcrRegs -[r0] - ; gcr arg pop 0 - movw r3, 0xd1ff - movs r2, 0 - cmp r0, r3 - sbcs r0, r1, r2 - bge G_M58511_IG33 - movs r0, 5 - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // <unknown method> - ; gcr arg pop 0 - ldr r0, [sp+0x144] // [V15 loc14] - adds r0, r0, 1 - str r0, [sp+0x144] // [V15 loc14] - ;; size=62 bbWeight=4 PerfScore 96.00 -G_M58511_IG28: ; bbWeight=8, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - ldr r0, [sp+0x144] // [V15 loc14] - cmp r0, 40 - bge G_M58511_IG41 - b SHORT G_M58511_IG21 - ;; size=10 bbWeight=8 PerfScore 32.00 -G_M58511_IG29: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+ beq G_M58511_IG32 + ;; size=10 bbWeight=4 PerfScore 16.00 +G_M58511_IG28: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x144] // [V15 loc14] cmp r0, 2
- bge SHORT G_M58511_IG30
+ bge G_M58511_IG34
movs r0, 0 str r0, [sp+0x98] // [V56 tmp29] str r0, [sp+0x9C] // [V56 tmp29+0x04] @@ -2188,9 +2158,152 @@ G_M58511_IG29: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 ; gcr arg pop 0 ldr r0, [sp+0x14C] // [V03 loc2] str r0, [sp+0x148] // [V11 loc10]
- b SHORT G_M58511_IG32 - ;; size=254 bbWeight=1 PerfScore 93.00 -G_M58511_IG30: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref
+ ;; size=254 bbWeight=1 PerfScore 92.00 +G_M58511_IG29: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref + mov r9, 1 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M58511_IG30: ; bbWeight=8, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz + ldr r0, [sp+0x144] // [V15 loc14] + cmp r0, 45 + bge SHORT G_M58511_IG31 + cmp r9, 0 + beq G_M58511_IG37 + ;; size=14 bbWeight=8 PerfScore 40.00 +G_M58511_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r5-r8] + ldr r3, [sp+0x148] // [V11 loc10] + ldr r2, [sp+0x14C] // [V03 loc2] + cmp r3, r2 + bne G_M58511_IG47 + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE + ; byrRegs +[r0] + ; gcr arg pop 0 + ldrb r0, [r0+0x1A] + ; byrRegs -[r0] + cmp r0, 0 + beq G_M58511_IG47 + add r0, sp, 272 // [V46 tmp19] + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + movs r1, 47 + movs r2, 1 + ldr r3, [r4] + blx r3 // <unknown method> + ; gcr arg pop 0 + add r0, sp, 296 // [V25 loc24] + ; byrRegs +[r0] + add r1, sp, 272 // [V46 tmp19] + ; byrRegs +[r1] + ldr r2, [r1!+0x04] + ; gcrRegs +[r2] + str r2, [r0!+0x04] + ldr r2, [r1!+0x04] + str r2, [r0!+0x04] + ldr r2, [r1!+0x04] + ; gcrRegs -[r2] + str r2, [r0!+0x04] + ldr r2, [r1!+0x04] + str r2, [r0!+0x04] + ldr r2, [r1!+0x04] + ; byrRegs +[r2] + str r2, [r0!+0x04] + ldr r2, [r1!+0x04] + ; byrRegs -[r2] + str r2, [r0!+0x04] + movw r1, LOW RELOC 0xD1FFAB1E + ; byrRegs -[r1] + movt r1, HIGH RELOC 0xD1FFAB1E + add r1, pc + ldr r1, [r1] + ldr r1, [r1] + ; gcrRegs +[r1] + add r0, sp, 296 // [V25 loc24] + ; byrRegs -[r0] + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r1] + ; gcr arg pop 0 + add r0, sp, 296 // [V25 loc24] + movs r1, 45 + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcr arg pop 0 + movw r1, LOW RELOC 0xD1FFAB1E + movt r1, HIGH RELOC 0xD1FFAB1E + add r1, pc + ldr r1, [r1] + ldr r1, [r1] + ; gcrRegs +[r1] + add r0, sp, 296 // [V25 loc24] + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r1] + ; gcr arg pop 0 + add r0, sp, 296 // [V25 loc24] + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs +[r0] + ; gcr arg pop 0 + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ; gcr arg pop 0 + b SHORT G_M58511_IG47 + ;; size=214 bbWeight=1 PerfScore 75.00 +G_M58511_IG32: ; bbWeight=4, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r5-r8] + mov r0, r8 + ; gcrRegs +[r0] + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ; gcr arg pop 0 + movw r3, 0xd1ff + movs r2, 0 + cmp r0, r3 + sbcs r0, r1, r2 + bge G_M58511_IG36 + movs r0, 5 + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcr arg pop 0 + ldr r0, [sp+0x144] // [V15 loc14] + adds r0, r0, 1 + str r0, [sp+0x144] // [V15 loc14] + ;; size=54 bbWeight=4 PerfScore 80.00 +G_M58511_IG33: ; bbWeight=8, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz + ldr r0, [sp+0x144] // [V15 loc14] + cmp r0, 40 + bge G_M58511_IG30 + b SHORT G_M58511_IG21 + ;; size=10 bbWeight=8 PerfScore 32.00 +G_M58511_IG34: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref
movs r0, 0 str r0, [sp+0xB0] // [V55 tmp28] str r0, [sp+0xB4] // [V55 tmp28+0x04] @@ -2310,7 +2423,7 @@ G_M58511_IG30: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 ; gcrRegs -[r1] ; gcr arg pop 0 ;; size=260 bbWeight=1 PerfScore 94.00
-G_M58511_IG31: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref
+G_M58511_IG35: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
add r0, sp, 296 // [V25 loc24] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -2326,12 +2439,9 @@ G_M58511_IG31: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=30 bbWeight=1 PerfScore 11.00 -G_M58511_IG32: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - mov r9, 1 - b SHORT G_M58511_IG41 - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M58511_IG33: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M58511_IG29 + ;; size=32 bbWeight=1 PerfScore 12.00 +G_M58511_IG36: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
movs r0, 0 str r0, [sp+0xC8] // [V54 tmp27] str r0, [sp+0xCC] // [V54 tmp27+0x04] @@ -2433,12 +2543,12 @@ G_M58511_IG33: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 ldr r3, [r4] blx r3 // <unknown method> ; gcr arg pop 0
- b SHORT G_M58511_IG31
+ b SHORT G_M58511_IG35
;; size=224 bbWeight=1 PerfScore 81.00
-G_M58511_IG34: ; bbWeight=4, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M58511_IG37: ; bbWeight=4, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x04] cmp r0, 0
- bne SHORT G_M58511_IG37
+ bne SHORT G_M58511_IG40
...

libraries.pmi.linux.arm.checked.mch

-32 (-29.63%) : 154751.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 -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-2.92%) : 144203.dasm - System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)

@@ -12,8 +12,8 @@ ; V01 loc0 [V01,T00] ( 8, 24 ) int -> r0 ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 24 ) int -> lr "dup spill"
-; V04 tmp2 [V04,T16] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V05 tmp3 [V05,T13] ( 2, 4 ) ushort -> r1 "Inlining Arg"
+; V04 tmp2 [V04,T17] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V05 tmp3 [V05,T14] ( 2, 4 ) ushort -> r1 "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V08 tmp6 [V08 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" @@ -21,22 +21,23 @@ ; V10 tmp8 [V10,T04] ( 2, 16 ) ushort -> r1 "Inlining Arg" ; V11 tmp9 [V11,T12] ( 3, 6 ) ref -> r0 single-def "arr expr" ; V12 tmp10 [V12,T01] ( 3, 24 ) ref -> lr "arr expr"
-;* V13 tmp11 [V13,T14] ( 0, 0 ) ref -> zero-ref "arr expr" -; V14 tmp12 [V14,T17] ( 2, 0 ) ref -> r1 "argument with side effect"
+;* V13 tmp11 [V13,T15] ( 0, 0 ) ref -> zero-ref "arr expr" +; V14 tmp12 [V14,T18] ( 2, 0 ) ref -> r1 "argument with side effect"
; V15 tmp13 [V15,T03] ( 2, 16 ) ref -> r2 "arr expr" ; V16 cse0 [V16,T05] ( 3, 12 ) ref -> r2 "CSE - aggressive"
-;* V17 cse1 [V17,T15] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V17 cse1 [V17,T16] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
; V18 cse2 [V18,T09] ( 3, 10 ) int -> lr "CSE - aggressive"
-; V19 cse3 [V19,T06] ( 5, 12 ) int -> r6 "CSE - aggressive" -; V20 cse4 [V20,T11] ( 4, 8 ) byref -> r5 "CSE - aggressive" -; V21 cse5 [V21,T07] ( 3, 12 ) int -> r7 "CSE - aggressive"
+; V19 cse3 [V19,T06] ( 5, 12 ) int -> r7 "CSE - aggressive" +; V20 cse4 [V20,T11] ( 4, 8 ) byref -> r6 "CSE - aggressive" +; V21 cse5 [V21,T07] ( 3, 12 ) int -> r8 "CSE - aggressive"
; V22 cse6 [V22,T10] ( 3, 10 ) int -> r3 "CSE - aggressive"
+; V23 cse7 [V23,T13] ( 3, 6 ) int -> r5 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M26859_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr} - add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r11,lr} + add r11, sp, 24
mov r4, r0 ; gcrRegs +[r4] ;; size=10 bbWeight=1 PerfScore 3.00 @@ -49,22 +50,22 @@ G_M26859_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bne SHORT G_M26859_IG09 ;; size=18 bbWeight=1 PerfScore 6.00 G_M26859_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ movw r5, 0xd1ff + movt r5, 0xd1ff + ldr r0, [r5]
; gcrRegs +[r0] movs r2, 2 ldr r1, [r0+0x04] cmp r2, r1 bhs SHORT G_M26859_IG08 ldrh r1, [r0+0x0C]
- add r5, r4, 8 - ; byrRegs +[r5] - mov r0, r5
+ add r6, r4, 8 + ; byrRegs +[r6] + mov r0, r6
; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r6, [r4+0x04] - mov r2, r6
+ ldr r7, [r4+0x04] + mov r2, r7
sxth r1, r1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -74,44 +75,42 @@ G_M26859_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre cmp r0, -1 beq SHORT G_M26859_IG07 ;; size=50 bbWeight=1 PerfScore 19.00
-G_M26859_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+G_M26859_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
subs r3, r0, 1
- cmp r3, r6
+ cmp r3, r7
bhs SHORT G_M26859_IG08 lsls r3, r0, 1 subs r1, r3, 2
- ldrh r1, [r5+r1] - movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2]
+ ldrh r1, [r6+r1] + ldr r2, [r5]
; gcrRegs +[r2] mov lr, r2 ; gcrRegs +[lr] mov r12, 1
- ldr r7, [lr+0x04] - cmp r12, r7
+ ldr r8, [lr+0x04] + cmp r12, r8
bhs SHORT G_M26859_IG08 ldrh lr, [lr+0x0A] ; gcrRegs -[lr] cmp r1, lr beq SHORT G_M26859_IG06
- ;; size=44 bbWeight=4 PerfScore 68.00 -G_M26859_IG05: ; bbWeight=2, gcrefRegs=0014 {r2 r4}, byrefRegs=0020 {r5}, byref, isz
+ ;; size=36 bbWeight=4 PerfScore 60.00 +G_M26859_IG05: ; bbWeight=2, gcrefRegs=0014 {r2 r4}, byrefRegs=0040 {r6}, byref, isz
adds r1, r0, 1
- cmp r1, r6
+ cmp r1, r7
bhs SHORT G_M26859_IG08 adds r3, r3, 2
- ldrh r3, [r5+r3]
+ ldrh r3, [r6+r3]
cmp r3, lr bne SHORT G_M26859_IG10 ;; size=14 bbWeight=2 PerfScore 14.00
-G_M26859_IG06: ; bbWeight=4, gcrefRegs=0014 {r2 r4}, byrefRegs=0020 {r5}, byref, isz
+G_M26859_IG06: ; bbWeight=4, gcrefRegs=0014 {r2 r4}, byrefRegs=0040 {r6}, byref, isz
add lr, r0, 1 movs r3, 2
- cmp r3, r7
+ cmp r3, r8
bhs SHORT G_M26859_IG08 ldrh r1, [r2+0x0C]
- sub r3, r6, lr
+ sub r3, r7, lr
mov r0, r4 ; gcrRegs +[r0] mov r2, lr @@ -126,8 +125,8 @@ G_M26859_IG06: ; bbWeight=4, gcrefRegs=0014 {r2 r4}, byrefRegs=0020 {r5}, ;; size=40 bbWeight=4 PerfScore 56.00 G_M26859_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4]
- ; byrRegs -[r5] - pop {r4,r5,r6,r7,r11,pc}
+ ; byrRegs -[r6] + pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00 G_M26859_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movw r3, 0xd1ff @@ -175,7 +174,7 @@ G_M26859_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=62 bbWeight=0 PerfScore 0.00
-Total bytes of code 274, prolog size 8, PerfScore 167.00, instruction count 98, allocated bytes for code 274 (MethodHash=5f739714) for method System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
+Total bytes of code 266, prolog size 8, PerfScore 159.00, instruction count 96, allocated bytes for code 266 (MethodHash=5f739714) for method System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -187,7 +186,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 137 (0x00089) Actual length = 274 (0x000112)
+ Function Length : 133 (0x00085) Actual length = 266 (0x00010a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -195,7 +194,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end FF end

-16 (-2.08%) : 189621.dasm - System.ServiceModel.Syndication.Rss20FeedFormatter:ReadPerson(System.Xml.XmlReader,System.ServiceModel.Syndication.SyndicationPerson):this (FullOpts)

@@ -12,8 +12,8 @@ ; V01 arg1 [V01,T00] ( 13, 21.50) ref -> r4 class-hnd single-def <System.Xml.XmlReader> ; V02 arg2 [V02,T06] ( 7, 10.50) ref -> r5 class-hnd single-def <System.ServiceModel.Syndication.SyndicationPerson> ; V03 loc0 [V03,T28] ( 2, 2 ) ubyte -> r9 single-def
-; V04 loc1 [V04,T02] ( 13, 23.09) ref -> [sp+0x2C] class-hnd exact spill-single-def <System.String> -; V05 loc2 [V05,T01] ( 10, 23.11) ref -> [sp+0x28] class-hnd exact spill-single-def <System.String>
+; V04 loc1 [V04,T01] ( 13, 23.09) ref -> [sp+0x2C] class-hnd exact spill-single-def <System.String> +; V05 loc2 [V05,T02] ( 10, 22.81) ref -> [sp+0x28] class-hnd exact spill-single-def <System.String>
; V06 loc3 [V06,T18] ( 3, 6 ) ref -> [sp+0x24] class-hnd exact spill-single-def <System.String> ; V07 loc4 [V07,T29] ( 2, 1 ) ref -> r6 class-hnd exact single-def <System.String> ; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -35,7 +35,7 @@ ; V24 tmp16 [V24,T20] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" ; V25 tmp17 [V25,T16] ( 2, 8 ) ref -> [sp+0x1C] class-hnd exact spill-single-def "Inlining Arg" <System.String> ; V26 tmp18 [V26,T30] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V27 tmp19 [V27,T21] ( 2, 4 ) ubyte -> r12 "Inline return value spill temp"
+; V27 tmp19 [V27,T21] ( 2, 4 ) ubyte -> r3 "Inline return value spill temp"
;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" ; V29 tmp21 [V29,T24] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" ;* V30 tmp22 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -43,7 +43,7 @@ ;* V32 tmp24 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp25 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp26 [V34 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V35 tmp27 [V35,T26] ( 4, 4 ) ubyte -> r12 "Inline return value spill temp"
+; V35 tmp27 [V35,T26] ( 4, 4 ) ubyte -> r3 "Inline return value spill temp"
;* V36 tmp28 [V36 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V37 tmp29 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp30 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -97,7 +97,7 @@ G_M35366_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- beq G_M35366_IG32
+ beq G_M35366_IG35
;; size=30 bbWeight=1 PerfScore 12.00 G_M35366_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz mov r0, r4 @@ -107,7 +107,7 @@ G_M35366_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- beq G_M35366_IG32
+ beq G_M35366_IG35
;; size=18 bbWeight=0.50 PerfScore 3.00 G_M35366_IG04: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz mov r0, r4 @@ -129,7 +129,7 @@ G_M35366_IG04: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} str r3, [sp+0x0C] // [V58 cse6] ; GC ptr vars +{V58} cmp r1, r3
- beq G_M35366_IG31
+ beq G_M35366_IG34
;; size=38 bbWeight=4 PerfScore 60.00 G_M35366_IG05: ; bbWeight=1.71, gcVars=00000086 {V04 V05 V58}, gcrefRegs=007A {r1 r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0] +[r3] @@ -155,7 +155,7 @@ G_M35366_IG07: ; bbWeight=2, gcrefRegs=007A {r1 r3 r4 r5 r6}, byrefRegs=0 ; gcrRegs -[r3] ; byrRegs -[r0-r1] cmp r0, 0
- bne G_M35366_IG31
+ bne G_M35366_IG34
;; size=32 bbWeight=2 PerfScore 18.00 G_M35366_IG08: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz movw r2, 0xd1ff @@ -212,7 +212,7 @@ G_M35366_IG16: ; bbWeight=0.29, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0 G_M35366_IG17: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r1] cmp r3, 0
- bne G_M35366_IG31
+ bne G_M35366_IG34
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r8+0x0C] @@ -227,19 +227,21 @@ G_M35366_IG17: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} str r0, [sp+0x1C] // [V25 tmp17] ; GC ptr vars +{V25} cmp r5, 0
- beq G_M35366_IG35
+ beq G_M35366_IG38 + ;; size=34 bbWeight=2 PerfScore 28.00 +G_M35366_IG18: ; bbWeight=1.71, gcVars=00050086 {V04 V05 V06 V25 V58}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0]
ldr r1, [sp+0x28] ; gcrRegs +[r1] cmp r1, 0
- beq SHORT G_M35366_IG20 - ;; size=40 bbWeight=2 PerfScore 34.00 -G_M35366_IG18: ; bbWeight=1.70, gcVars=00050086 {V04 V05 V06 V25 V58}, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0]
+ beq SHORT G_M35366_IG26 + ;; size=6 bbWeight=1.71 PerfScore 5.12 +G_M35366_IG19: ; bbWeight=1.70, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr lr, [r1+0x04] cmp lr, 5
- bne SHORT G_M35366_IG20
+ bne SHORT G_M35366_IG25
;; size=10 bbWeight=1.70 PerfScore 5.10
-G_M35366_IG19: ; bbWeight=2, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M35366_IG20: ; bbWeight=2, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
lsl r2, lr, 1 add r0, r1, 8 ; byrRegs +[r0] @@ -256,59 +258,62 @@ G_M35366_IG19: ; bbWeight=2, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 blx lr // <unknown method> ; byrRegs -[r0-r1] cmp r0, 0
- ldr r1, [sp+0x28] // [V05 loc2] - ; gcrRegs +[r1] - bne G_M35366_IG31 - ;; size=38 bbWeight=2 PerfScore 22.00 -G_M35366_IG20: ; bbWeight=2, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ bne G_M35366_IG34 + ;; size=36 bbWeight=2 PerfScore 20.00 +G_M35366_IG21: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
movw r2, 0xd1ff movt r2, 0xd1ff
- ldr lr, [sp+0x2C] - ; gcrRegs +[lr] - cmp lr, r2 - beq SHORT G_M35366_IG26 - ;; size=16 bbWeight=2 PerfScore 10.00 -G_M35366_IG21: ; bbWeight=1.71, gcrefRegs=4072 {r1 r4 r5 r6 lr}, byrefRegs=0000 {}, byref, isz - cmp lr, 0 - beq SHORT G_M35366_IG23 - ;; size=6 bbWeight=1.71 PerfScore 3.41 -G_M35366_IG22: ; bbWeight=1.70, gcrefRegs=4072 {r1 r4 r5 r6 lr}, byrefRegs=0000 {}, byref, isz - ldr r12, [lr+0x04] - cmp r12, 29
+ ldr r1, [sp+0x2C] + ; gcrRegs +[r1] + cmp r1, r2 + beq SHORT G_M35366_IG29 + ;; size=14 bbWeight=2 PerfScore 10.00 +G_M35366_IG22: ; bbWeight=1.71, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + cmp r1, 0
beq SHORT G_M35366_IG24
- ;; size=10 bbWeight=1.70 PerfScore 5.10 -G_M35366_IG23: ; bbWeight=0.64, gcrefRegs=4072 {r1 r4 r5 r6 lr}, byrefRegs=0000 {}, byref, isz - mov r12, 0 - b SHORT G_M35366_IG25 - ;; size=6 bbWeight=0.64 PerfScore 1.28 -G_M35366_IG24: ; bbWeight=1.07, gcrefRegs=4072 {r1 r4 r5 r6 lr}, byrefRegs=0000 {}, byref - ldr r2, [lr+0x04]
+ ;; size=4 bbWeight=1.71 PerfScore 3.41 +G_M35366_IG23: ; bbWeight=1.70, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ldr r3, [r1+0x04] + cmp r3, 29 + beq SHORT G_M35366_IG27 + ;; size=6 bbWeight=1.70 PerfScore 5.10 +G_M35366_IG24: ; bbWeight=0.64, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + movs r3, 0 + b SHORT G_M35366_IG28 + ;; size=4 bbWeight=0.64 PerfScore 1.28 +G_M35366_IG25: ; bbWeight=0.85, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + b SHORT G_M35366_IG21 + ;; size=2 bbWeight=0.85 PerfScore 0.85 +G_M35366_IG26: ; bbWeight=0.85, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + b SHORT G_M35366_IG21 + ;; size=2 bbWeight=0.85 PerfScore 0.85 +G_M35366_IG27: ; bbWeight=1.07, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref + ldr r2, [r1+0x04]
lsls r2, r2, 1
- add r0, lr, 8
+ add r0, r1, 8
; byrRegs +[r0] movw r1, 0xd1ff ; gcrRegs -[r1] movt r1, 0xd1ff
- movw r12, 0xd1ff - movt r12, 0xd1ff - ldr r12, [r12] - blx r12 // <unknown method> - ; gcrRegs -[lr]
+ movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method>
; byrRegs -[r0]
- mov r12, r0 - ;; size=34 bbWeight=1.07 PerfScore 10.68 -G_M35366_IG25: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - b SHORT G_M35366_IG27
+ mov r3, r0 + ;; size=30 bbWeight=1.07 PerfScore 10.68 +G_M35366_IG28: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + b SHORT G_M35366_IG30
;; size=2 bbWeight=2 PerfScore 2.00
-G_M35366_IG26: ; bbWeight=0.29, gcrefRegs=4072 {r1 r4 r5 r6 lr}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r1 lr] - mov r12, 1 - b SHORT G_M35366_IG25 - ;; size=6 bbWeight=0.29 PerfScore 0.59 -G_M35366_IG27: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r1 lr] - cmp r12, 0 - bne SHORT G_M35366_IG31
+G_M35366_IG29: ; bbWeight=0.29, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r1] + movs r3, 1 + b SHORT G_M35366_IG28 + ;; size=4 bbWeight=0.29 PerfScore 0.59 +G_M35366_IG30: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r1] + cmp r3, 0 + bne SHORT G_M35366_IG34
ldr r0, [sp+0x1C] // [V25 tmp17] ; gcrRegs +[r0] str r0, [sp] // [V08 OutArgs] @@ -326,10 +331,10 @@ G_M35366_IG27: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} blx lr // <unknown method> ; gcrRegs -[r0-r3] cmp r0, 0
- bne SHORT G_M35366_IG31
+ bne SHORT G_M35366_IG34
ldrb r0, [r6+0x1C] cmp r0, 0
- beq SHORT G_M35366_IG31
+ beq SHORT G_M35366_IG34
add r3, r5, 16 ; byrRegs +[r3] str r3, [sp+0x18] // [V41 tmp33] @@ -339,7 +344,7 @@ G_M35366_IG27: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} cmp r2, 0 str r2, [sp+0x14] // [V43 tmp35] ; GC ptr vars +{V43}
- bne SHORT G_M35366_IG28
+ bne SHORT G_M35366_IG31
movw r0, 0xd1ff movt r0, 0xd1ff movw r2, 0xd1ff @@ -373,8 +378,8 @@ G_M35366_IG27: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} ; byrRegs -[r0] str r1, [sp+0x14] // [V43 tmp35] ; GC ptr vars +{V43}
- ;; size=112 bbWeight=2 PerfScore 86.00 -G_M35366_IG28: ; bbWeight=2, gcVars=00040806 {V04 V05 V06 V43}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=110 bbWeight=2 PerfScore 86.00 +G_M35366_IG31: ; bbWeight=2, gcVars=00040806 {V04 V05 V06 V43}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r1] ; GC ptr vars -{V04 V44} movw r0, 0xd1ff @@ -390,13 +395,13 @@ G_M35366_IG28: ; bbWeight=2, gcVars=00040806 {V04 V05 V06 V43}, gcrefRegs ldr r3, [sp+0x2C] // [V04 loc1] ; gcrRegs +[r3] cmp r3, 0
- bne SHORT G_M35366_IG29
+ bne SHORT G_M35366_IG32
movw r0, 0xd1ff ; gcrRegs -[r0] ...

+12 (+1.35%) : 236574.dasm - Microsoft.VisualBasic.CompilerServices.Utils:PropertyToString(System.Reflection.PropertyInfo):System.String (FullOpts)

@@ -62,7 +62,7 @@ ;* V51 tmp40 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V52 tmp41 [V52,T29] ( 2, 2 ) byref -> r0 single-def "Inlining Arg" ; V53 tmp42 [V53,T30] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
-; V54 tmp43 [V54,T20] ( 3, 5.90) ref -> r6 class-hnd "Inline return value spill temp" <System.String>
+; V54 tmp43 [V54,T20] ( 3, 5.90) ref -> registers class-hnd "Inline return value spill temp" <System.String>
; V55 tmp44 [V55,T06] ( 5, 9.48) int -> [sp+0x0C] spill-single-def "Inline stloc first use temp" ; V56 tmp45 [V56,T17] ( 3, 5.69) int -> r0 "Inline stloc first use temp" ; V57 tmp46 [V57,T04] ( 7, 13.28) ref -> [sp+0x00] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String> @@ -75,14 +75,14 @@ ;* V64 tmp53 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V65 tmp54 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V66 tmp55 [V66,T10] ( 2, 7.59) byref -> r0 "Inlining Arg"
-; V67 tmp56 [V67,T11] ( 2, 7.59) byref -> r1 "Inlining Arg"
+; V67 tmp56 [V67,T11] ( 2, 7.59) byref -> r3 "Inlining Arg"
;* V68 tmp57 [V68,T21] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V70 tmp59 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V71 tmp60 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V72 tmp61 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V73 tmp62 [V73,T12] ( 2, 7.59) byref -> r0 "Inlining Arg"
-; V74 tmp63 [V74,T13] ( 2, 7.59) byref -> r1 "Inlining Arg"
+; V74 tmp63 [V74,T13] ( 2, 7.59) byref -> r2 "Inlining Arg"
; V75 tmp64 [V75,T27] ( 3, 3 ) ref -> r0 single-def "argument with side effect" ; V76 tmp65 [V76,T18] ( 2, 4 ) ref -> r2 single-def "argument with side effect" ; V77 tmp66 [V77,T03] ( 2, 16 ) ref -> r1 "argument with side effect" @@ -172,9 +172,9 @@ G_M56809_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; gcrRegs +[r10] ldr r1, [r10+0x04] subs r1, r1, 2
- bvs G_M56809_IG34
+ bvs G_M56809_IG33
adds r1, r1, 1
- bvs G_M56809_IG34
+ bvs G_M56809_IG33
movw r0, 0xd1ff ; gcrRegs -[r0] movt r0, 0xd1ff @@ -195,10 +195,10 @@ G_M56809_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; gcrRegs -[r0-r1] ldr r0, [r10+0x04] subs r0, r0, 1
- bvs G_M56809_IG34
+ bvs G_M56809_IG33
ldr r3, [r10+0x04] cmp r0, r3
- bhs G_M56809_IG33
+ bhs G_M56809_IG32
lsls r0, r0, 2 add r3, r10, 8 ; byrRegs +[r3] @@ -404,7 +404,7 @@ G_M56809_IG18: ; bbWeight=1, gcrefRegs=0670 {r4 r5 r6 r9 r10}, byrefRegs= movs r7, 0 ldr r8, [r9+0x04] cmp r8, 0
- ble SHORT G_M56809_IG31
+ ble SHORT G_M56809_IG28
;; size=60 bbWeight=1 PerfScore 21.00 G_M56809_IG19: ; bbWeight=4, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -413,135 +413,132 @@ G_M56809_IG19: ; bbWeight=4, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=000 lsls r3, r7, 2 ldr r3, [r0+r3] ; gcrRegs +[r3]
- str r3, [sp+0x04]
+ str r3, [sp+0x04] // [V10 loc9]
; GC ptr vars +{V10} cmp r4, 0
- bne SHORT G_M56809_IG29 - ;; size=14 bbWeight=4 PerfScore 24.00 -G_M56809_IG20: ; bbWeight=2, gcVars=0000000000000200 {V10}, gcrefRegs=0668 {r3 r5 r6 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+ bne G_M56809_IG31 + ;; size=16 bbWeight=4 PerfScore 24.00 +G_M56809_IG20: ; bbWeight=2, gcVars=0000000000000200 {V10}, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r3]
; byrRegs -[r0]
+ ldr r3, [sp+0x04] // [V10 loc9] + ; gcrRegs +[r3]
cmp r6, 0
- beq SHORT G_M56809_IG23 - ;; size=4 bbWeight=2 PerfScore 4.00
+ beq G_M56809_IG30 + ;; size=8 bbWeight=2 PerfScore 6.00
G_M56809_IG21: ; bbWeight=1.88, gcrefRegs=0668 {r3 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz ldr r2, [r6+0x04] cmp r2, 0
- beq SHORT G_M56809_IG23 - ;; size=6 bbWeight=1.88 PerfScore 5.63
+ beq G_M56809_IG30 + ;; size=8 bbWeight=1.88 PerfScore 5.63
G_M56809_IG22: ; bbWeight=1.90, gcrefRegs=0668 {r3 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz
- str r2, [sp+0x08]
+ str r2, [sp+0x08] // [V82 cse3]
mov r1, r2
- str r1, [sp+0x0C]
+ str r1, [sp+0x0C] // [V55 tmp44]
adds r0, r1, 2 cmp r0, 0
- blt G_M56809_IG35 - b SHORT G_M56809_IG24 - ;; size=16 bbWeight=1.90 PerfScore 13.28 -G_M56809_IG23: ; bbWeight=2, gcrefRegs=0628 {r3 r5 r9 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r6] - movw r6, 0xd1ff - movt r6, 0xd1ff - b SHORT G_M56809_IG28 - ;; size=10 bbWeight=2 PerfScore 6.00 -G_M56809_IG24: ; bbWeight=1.90, gcrefRegs=0668 {r3 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r6]
+ blt G_M56809_IG34
movw lr, 0xd1ff movt lr, 0xd1ff blx lr // <unknown method> ; gcrRegs -[r3] +[r0]
- mov r3, r0 - ; gcrRegs +[r3] - str r3, [sp]
+ mov r1, r0 + ; gcrRegs +[r1] + str r1, [sp] // [V57 tmp46]
; GC ptr vars +{V57}
- cmp r3, 0 - bne SHORT G_M56809_IG25
+ cmp r1, 0 + bne SHORT G_M56809_IG23
mov r0, r5 mov r1, r5
+ movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1] + ;; size=48 bbWeight=1.90 PerfScore 36.04 +G_M56809_IG23: ; bbWeight=1.90, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz + ldr r1, [sp]
; gcrRegs +[r1]
- movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // <unknown method> - ; gcrRegs -[r0-r1 r3] - ;; size=34 bbWeight=1.90 PerfScore 24.66 -G_M56809_IG25: ; bbWeight=1.90, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp] - ; gcrRegs +[r3] - ldr r0, [r3+0x04] - ldr r1, [sp+0x08] // [V82 cse3] - cmp r0, r1 - bge SHORT G_M56809_IG26
+ ldr r0, [r1+0x04] + ldr r2, [sp+0x08] // [V82 cse3] + cmp r0, r2 + bge SHORT G_M56809_IG24
mov r0, r5 ; gcrRegs +[r0] mov r1, r5
- ; gcrRegs +[r1] - movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // <unknown method> - ; gcrRegs -[r0-r1 r3]
+ movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1]
;; size=26 bbWeight=1.90 PerfScore 20.86
-G_M56809_IG26: ; bbWeight=1.90, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp] // [V57 tmp46] - ; gcrRegs +[r3] - add r0, r3, 8
+G_M56809_IG24: ; bbWeight=1.90, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz + ldr r1, [sp] // [V57 tmp46] + ; gcrRegs +[r1] + add r0, r1, 8
; byrRegs +[r0]
- add r1, r6, 8 - ; byrRegs +[r1]
+ add r3, r6, 8 + ; byrRegs +[r3]
ldr r6, [sp+0x0C] // [V55 tmp44] ; gcrRegs -[r6] lsls r2, r6, 1
- movw lr, 0xd1ff - movt lr, 0xd1ff - ldr lr, [lr] - blx lr // <unknown method> - ; gcrRegs -[r3]
+ mov r1, r3 + ; gcrRegs -[r1] + ; byrRegs +[r1] + movw r3, 0xd1ff + ; byrRegs -[r3] + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method>
; byrRegs -[r0-r1]
- ldr r3, [sp] - ; gcrRegs +[r3] - ldr r0, [r3+0x04]
+ ldr r1, [sp] + ; gcrRegs +[r1] + ldr r0, [r1+0x04]
subs r0, r0, r6 cmp r0, 2
- bge SHORT G_M56809_IG27
+ bge SHORT G_M56809_IG25
mov r0, r5 ; gcrRegs +[r0] mov r1, r5
+ movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1] + ;; size=54 bbWeight=1.90 PerfScore 39.83 +G_M56809_IG25: ; bbWeight=1.90, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, byref + ldr r1, [sp] // [V57 tmp46]
; gcrRegs +[r1]
+ add r0, r1, 8 + ; byrRegs +[r0] + lsls r2, r6, 1 + adds r0, r0, r2
movw r2, 0xd1ff movt r2, 0xd1ff
- ldr r2, [r2] - blx r2 // <unknown method> - ; gcrRegs -[r0-r1 r3] - ;; size=54 bbWeight=1.90 PerfScore 37.93 -G_M56809_IG27: ; bbWeight=1.90, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, byref - ldr r3, [sp] // [V57 tmp46] - ; gcrRegs +[r3] - add r0, r3, 8 - ; byrRegs +[r0] - lsls r1, r6, 1 - adds r0, r0, r1 - movw r1, 0xd1ff - movt r1, 0xd1ff
+ mov r1, r2 + ; gcrRegs -[r1] + ; byrRegs +[r1]
movs r2, 4
- movw lr, 0xd1ff - movt lr, 0xd1ff - ldr lr, [lr] - blx lr // <unknown method> - ; gcrRegs -[r3] - ; byrRegs -[r0]
+ movw r3, 0xd1ff
...

+8 (+3.77%) : 145937.dasm - System.ComponentModel.Composition.Hosting.AggregateExportProvider:Dispose(ubyte):this (FullOpts)

@@ -9,26 +9,26 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 7, 11.50) ref -> r4 this class-hnd single-def <System.ComponentModel.Composition.Hosting.AggregateExportProvider>
-; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> r1 single-def -; V02 loc0 [V02,T10] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>>
+; V01 arg1 [V01,T05] ( 3, 3 ) ubyte -> r1 single-def +; V02 loc0 [V02,T09] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>>
; V03 loc1 [V03,T02] ( 5, 16.50) int -> r5
-; V04 loc2 [V04,T04] ( 3, 12 ) ref -> r9 class-hnd <System.ComponentModel.Composition.Hosting.ExportProvider>
+; V04 loc2 [V04,T04] ( 3, 12 ) ref -> r8 class-hnd <System.ComponentModel.Composition.Hosting.ExportProvider>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T00] ( 4, 32 ) ref -> [sp+0x04] class-hnd exact spill-single-def "NewObj constructor temp" <System.EventHandler`1[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs]> ; V07 tmp2 [V07,T01] ( 4, 32 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.EventHandler`1[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs]>
-; V08 tmp3 [V08,T09] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V09 cse0 [V09,T08] ( 2, 4.50) byref -> r7 hoist "CSE - aggressive" -; V10 cse1 [V10,T07] ( 3, 5 ) int -> r6 "CSE - aggressive" -; V11 cse2 [V11,T05] ( 3, 8.50) int -> r8 hoist "CSE - aggressive"
+; V08 tmp3 [V08,T08] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V09 cse0 [V09,T07] ( 2, 4.50) byref -> r7 hoist "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 5 ) int -> r6 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M53964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr} + sub sp, 12
add r11, sp, 32 mov r4, r0 ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M53964_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r0, r1 cmp r0, 0 @@ -56,15 +56,14 @@ G_M53964_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ble SHORT G_M53964_IG05 add r7, r0, 8 ; byrRegs +[r7]
- movw r8, 0xd1ff - movt r8, 0xd1ff - ;; size=52 bbWeight=0.50 PerfScore 9.50
+ ;; size=44 bbWeight=0.50 PerfScore 8.50
G_M53964_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz ; gcrRegs -[r0] lsls r0, r5, 2
- ldr r9, [r7+r0] - ; gcrRegs +[r9] - mov r0, r8
+ ldr r8, [r7+r0] + ; gcrRegs +[r8] + movw r0, 0xd1ff + movt r0, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST @@ -87,7 +86,7 @@ G_M53964_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by ldr r1, [sp+0x04] ; gcrRegs +[r1] str r0, [r1+0x0C]
- mov r0, r9
+ mov r0, r8
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff @@ -96,7 +95,8 @@ G_M53964_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by ; GC ptr vars -{V06} blx r3 // System.ComponentModel.Composition.Hosting.ExportProvider:remove_ExportsChanged(System.EventHandler`1[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs]):this ; gcrRegs -[r0-r1]
- mov r0, r8
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST @@ -119,23 +119,24 @@ G_M53964_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by ldr r1, [sp] ; gcrRegs +[r1] str r0, [r1+0x0C]
- mov r0, r9
+ mov r0, r8
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ; GC ptr vars -{V07} blx r3 // System.ComponentModel.Composition.Hosting.ExportProvider:remove_ExportsChanging(System.EventHandler`1[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs]):this
- ; gcrRegs -[r0-r1 r9]
+ ; gcrRegs -[r0-r1 r8]
adds r5, r5, 1 cmp r6, r5 bgt SHORT G_M53964_IG04
- ;; size=126 bbWeight=4 PerfScore 184.00
+ ;; size=138 bbWeight=4 PerfScore 192.00
G_M53964_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4] ; byrRegs -[r7]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12 + pop {r4,r5,r6,r7,r8,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00
G_M53964_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movw r3, 0xd1ff movt r3, 0xd1ff @@ -144,7 +145,7 @@ G_M53964_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 212, prolog size 8, PerfScore 200.50, instruction count 77, allocated bytes for code 212 (MethodHash=3b612d33) for method System.ComponentModel.Composition.Hosting.AggregateExportProvider:Dispose(ubyte):this (FullOpts)
+Total bytes of code 220, prolog size 10, PerfScore 209.50, instruction count 79, allocated bytes for code 220 (MethodHash=3b612d33) for method System.ComponentModel.Composition.Hosting.AggregateExportProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -156,7 +157,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 212 (0x0000d4)
+ Function Length : 110 (0x0006e) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -164,7 +165,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32 - FF end
+ 03 add sp, sp, #12 ; opsize 16 + A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end

+32 (+6.35%) : 263424.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 ( 4) 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 -> r3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> lr "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> r4 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> r1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> lr "field V03._index (fldOffset=0x4)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r12 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r12 "field V03._index (fldOffset=0x4)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x4)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> r3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> lr "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x8)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [sp+0x04] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r6 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r5 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> r1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> r1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x4)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> r3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> lr "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> r2 "CSE - aggressive" ; @@ -103,95 +103,74 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=00000002 {V00}, gcrefRegs=0000 {}, ldr r2, [r0] blx r3 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; gcr arg pop 0
- str r0, [sp+0x08] // [V02 loc1]
+ mov r3, r0 + ; gcrRegs +[r3] + str r3, [sp+0x08]
; GC ptr vars +{V02}
- ;; size=80 bbWeight=0.50 PerfScore 12.50 -G_M3645_IG06: ; bbWeight=0.50, gcVars=00000202 {V00 V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=82 bbWeight=0.50 PerfScore 13.00 +G_M3645_IG06: ; bbWeight=0.50, gcVars=00000202 {V00 V02}, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- ldr r5, [sp+0x0C] // [V00 this] - ; gcrRegs +[r5] - ldr r1, [r5+0x38]
+ ldr r0, [sp+0x0C] // [V00 this] + ; gcrRegs +[r0] + ldr r1, [r0+0x38]
; gcrRegs +[r1] ldr r2, [r1+0x04]
- movs r3, 0
mov lr, 0
+ mov r12, 0
cmp r2, 0
- ble SHORT G_M3645_IG11 - ;; size=16 bbWeight=0.50 PerfScore 3.50 -G_M3645_IG07: ; bbWeight=4, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz - mov r12, 12 - mul r3, r3, r12 - adds r3, 8 - adds r3, r1, r3 - ; byrRegs +[r3] - ldr r12, [r3] - ; gcrRegs +[r12] - ldr r3, [r3+0x08] - ; gcrRegs +[r3] - ; byrRegs -[r3] - ldr r6, [r5+0x2C]
+ ble G_M3645_IG17 + ;; size=20 bbWeight=0.50 PerfScore 3.50 +G_M3645_IG07: ; bbWeight=4, gcrefRegs=001B {r0 r1 r3 r4}, byrefRegs=0000 {}, byref, isz + movs r5, 12 + mul lr, lr, r5 + add lr, lr, 8 + add lr, r1 + ; byrRegs +[lr] + ldr r5, [lr] + ; gcrRegs +[r5] + ldr lr, [lr+0x08] + ; gcrRegs +[lr] + ; byrRegs -[lr] + ldr r6, [r0+0x2C]
; gcrRegs +[r6]
- cmp r12, r6
+ cmp r5, r6
beq SHORT G_M3645_IG09
- ;; size=24 bbWeight=4 PerfScore 36.00 -G_M3645_IG08: ; bbWeight=2, gcrefRegs=103A {r1 r3 r4 r5 r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=26 bbWeight=4 PerfScore 36.00 +G_M3645_IG08: ; bbWeight=2, gcrefRegs=403B {r0 r1 r3 r4 r5 lr}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
- ldr r6, [r5+0x28]
+ ldr r6, [r0+0x28]
; gcrRegs +[r6]
- cmp r12, r6 - bne SHORT G_M3645_IG10 - ;; size=6 bbWeight=2 PerfScore 6.00 -G_M3645_IG09: ; bbWeight=2, gcrefRegs=002A {r1 r3 r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4 r6 r12] - mov r4, r3 - ; gcrRegs +[r4] - ldr r3, [r4+0x04] - ; gcrRegs -[r3] - cmp r3, 0
+ cmp r5, r6
bne SHORT G_M3645_IG12
- ;; size=8 bbWeight=2 PerfScore 8.00 -G_M3645_IG10: ; bbWeight=4, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz - add r3, lr, 1 - mov lr, r3 - cmp r2, lr - bgt SHORT G_M3645_IG07 - ;; size=10 bbWeight=4 PerfScore 16.00 -G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=2 PerfScore 6.00 +G_M3645_IG09: ; bbWeight=2, gcrefRegs=400B {r0 r1 r3 lr}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4-r6] + mov r4, lr + ; gcrRegs +[r4] + ldr lr, [r4+0x04] + ; gcrRegs -[lr] + cmp lr, 0 + beq SHORT G_M3645_IG12 + ;; size=12 bbWeight=2 PerfScore 8.00 +G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=0019 {r0 r3 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
- mov r0, r5 - ; gcrRegs +[r0] - mov r1, r4 - ; gcrRegs +[r1] - ldr r2, [sp+0x08] // [V02 loc1] - ; gcrRegs +[r2] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ; GC ptr vars -{V00} - blx r3 // <unknown method> - ; gcrRegs -[r0-r2 r4-r5] - ; gcr arg pop 0 - b SHORT G_M3645_IG17 - ;; size=20 bbWeight=0.50 PerfScore 4.00 -G_M3645_IG12: ; bbWeight=0.50, gcVars=00000202 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5] - ; GC ptr vars +{V00} - ldrb r1, [r5+0x22] - ldrb r2, [r5+0x24]
+ ldrb r1, [r0+0x22] + ldrb r2, [r0+0x24]
orrs r1, r2 cmp r1, 0
- beq SHORT G_M3645_IG13 - ldr r0, [r5+0x04] - ; gcrRegs +[r0]
+ beq SHORT G_M3645_IG11 + ldr r0, [r0+0x04] + ldr r5, [sp+0x0C] // [V00 this] + ; gcrRegs +[r5]
ldr r1, [r5+0x0C] ; gcrRegs +[r1]
- ldr r2, [sp+0x08] // [V02 loc1]
+ mov r2, r3
; gcrRegs +[r2]
- movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // 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 -[r0-r2]
+ movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // 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 -[r0-r3]
; gcr arg pop 0 ldr r0, [r5+0x08] ; gcrRegs +[r0] @@ -205,28 +184,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=00000202 {V00 V02}, gcrefRegs=0030 blx r3 // 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 -[r0-r2] ; gcr arg pop 0
- ;; size=50 bbWeight=0.50 PerfScore 9.50 -G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=54 bbWeight=0.50 PerfScore 10.00 +G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r5] + ldr r5, [sp+0x0C] // [V00 this] + ; gcrRegs +[r5]
ldrb r2, [r5+0x23] ldrb r1, [r5+0x24] orrs r2, r1 cmp r2, 0
- beq SHORT G_M3645_IG11 - ldr r2, [r5+0x3C]
+ mov r0, r5 + ; gcrRegs +[r0] + beq SHORT G_M3645_IG17 + ldr r2, [r0+0x3C]
; gcrRegs +[r2]
- ldr r1, [r5+0x14]
+ ldr r1, [r0+0x14]
; gcrRegs +[r1] mov r0, r4
- ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // 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 -[r1-r2]
+ movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // 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 -[r1-r2 r5]
; gcr arg pop 0 str r0, [sp+0x04] // [V21 tmp14] ; GC ptr vars +{V21}
- mov r0, r5
+ ldr r0, [sp+0x0C] // [V00 this]
ldr r1, [sp+0x04] // [V21 tmp14] ; gcrRegs +[r1] movw r3, 0xd1ff @@ -235,35 +218,53 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- mov r6, r0 - ; gcrRegs +[r6] - ldr r2, [r6+0x04]
+ mov r5, r0 + ; gcrRegs +[r5] + ldr r2, [r5+0x04]
cmp r2, 0
- beq SHORT G_M3645_IG11 - ;; size=58 bbWeight=0.50 PerfScore 11.50 -G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] - ldrb r2, [r5+0x23]
+ ldr r0, [sp+0x0C] // [V00 this] + beq SHORT G_M3645_IG17 + ldr r3, [sp+0x08] // [V02 loc1] + ; gcrRegs +[r3] + b SHORT G_M3645_IG14 + ;; size=70 bbWeight=0.50 PerfScore 14.00 +G_M3645_IG12: ; bbWeight=4, gcVars=00000202 {V00 V02}, gcrefRegs=001B {r0 r1 r3 r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r5] +[r1] + ; GC ptr vars -{V21} + add lr, r12, 1 + mov r12, lr + cmp r2, r12 + bgt SHORT G_M3645_IG07 + ;; size=10 bbWeight=4 PerfScore 16.00 +G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0019 {r0 r3 r4}, byrefRegs=0000 {}, byref, isz
...

libraries_tests.run.linux.arm.Release.mch

-32 (-29.63%) : 76467.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-29.63%) : 369027.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-30 (-7.28%) : 373244.dasm - System.Net.Http.Headers.WarningHeaderValue:TryReadDate(System.String,byref,byref):ubyte (Tier1)

@@ -9,7 +9,7 @@ ; 4 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 7, 4.75) ref -> r5 class-hnd single-def <System.String>
+; V00 arg0 [V00,T06] ( 6, 4.67) ref -> r5 class-hnd single-def <System.String>
; V01 arg1 [V01,T05] ( 18, 5.67) byref -> r4 single-def ; V02 arg2 [V02,T07] ( 5, 3 ) byref -> r6 single-def ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref single-def @@ -21,10 +21,10 @@ ;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V10 tmp3 [V10,T22] ( 2, 0 ) struct (24) [sp+0x08] do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[System.DateTimeOffset]> ;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V12 tmp5 [V12,T08] ( 5, 4 ) int -> r1 "Inline return value spill temp" -; V13 tmp6 [V13,T03] ( 6, 12 ) int -> r2 "Inlining Arg" -; V14 tmp7 [V14,T00] ( 11, 34.08) int -> r0 "Inline stloc first use temp" -; V15 tmp8 [V15,T01] ( 6, 20.00) ushort -> r1 "Inline stloc first use temp"
+; V12 tmp5 [V12,T08] ( 5, 4 ) int -> r2 "Inline return value spill temp" +; V13 tmp6 [V13,T04] ( 5, 10 ) int -> r3 "Inlining Arg" +; V14 tmp7 [V14,T00] ( 7, 42 ) int -> r1 "Inline stloc first use temp" +; V15 tmp8 [V15,T02] ( 3, 20 ) ushort -> r2 "Inline stloc first use temp"
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ; V17 tmp10 [V17,T12] ( 4, 0 ) int -> r0 "Inlining Arg" ;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -69,9 +69,9 @@ ;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref single-def "field V33._length (fldOffset=0x4)" P-INDEP ;* V58 tmp51 [V58 ] ( 0, 0 ) ubyte -> zero-ref "V10.[000..001)" ; V59 tmp52 [V59,T09] ( 3, 4.00) int -> r0 "index expr"
-; V60 cse0 [V60,T02] ( 11, 12.75) int -> r7 "CSE - aggressive" -; V61 cse1 [V61,T04] ( 8, 10.41) byref -> r8 hoist multi-def "CSE - aggressive" -; V62 cse2 [V62,T10] ( 3, 3 ) int -> r3 "CSE - moderate"
+; V60 cse0 [V60,T01] ( 10, 20.67) int -> r7 "CSE - aggressive" +; V61 cse1 [V61,T03] ( 6, 10.33) byref -> r8 hoist multi-def "CSE - aggressive" +; V62 cse2 [V62,T10] ( 3, 3 ) int -> r0 "CSE - moderate"
; ; Lcl frame size = 52 @@ -99,116 +99,93 @@ G_M051_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, b str r0, [r6+0x0C] str r0, [r6+0x10] str r0, [r6+0x14]
- ldr r3, [r4] - mov r2, r3
+ ldr r0, [r4] + mov r3, r0
ldr r7, [r5+0x04]
- cmp r7, r2
+ cmp r7, r3
bgt SHORT G_M051_IG03
- movs r1, 0 - b SHORT G_M051_IG13
+ movs r2, 0 + b SHORT G_M051_IG09
;; size=28 bbWeight=1 PerfScore 14.00
-G_M051_IG03: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz - mov r0, r2 - cmp r2, 0 - blt SHORT G_M051_IG08
+G_M051_IG03: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref + mov r1, r3
add r8, r5, 8 ; byrRegs +[r8]
- ;; size=10 bbWeight=1 PerfScore 4.00 -G_M051_IG04: ; bbWeight=7.92, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz - lsls r1, r0, 1 - ldrh r1, [r8+r1] - cmp r1, 32
+ ;; size=6 bbWeight=1 PerfScore 2.00 +G_M051_IG04: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz + cmp r1, r7 + bhs SHORT G_M051_IG13 + lsls r2, r1, 1 + ldrh r2, [r8+r2] + cmp r2, 32
beq SHORT G_M051_IG06
- ;; size=10 bbWeight=7.92 PerfScore 31.68 -G_M051_IG05: ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz - cmp r1, 9 - bne SHORT G_M051_IG12 - ;; size=4 bbWeight=3.96 PerfScore 7.92 -G_M051_IG06: ; bbWeight=7.92, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz - adds r0, r0, 1 - cmp r7, r0
+ ;; size=14 bbWeight=8 PerfScore 48.00 +G_M051_IG05: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz + cmp r2, 9 + bne SHORT G_M051_IG08 + ;; size=4 bbWeight=4 PerfScore 8.00 +G_M051_IG06: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz + adds r1, r1, 1 + cmp r7, r1
bgt SHORT G_M051_IG04
- ;; size=6 bbWeight=7.92 PerfScore 23.76
+ ;; size=6 bbWeight=8 PerfScore 24.00
G_M051_IG07: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz ; byrRegs -[r8]
- b SHORT G_M051_IG11 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M051_IG08: ; bbWeight=0.08, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz - cmp r0, r7 - bhs SHORT G_M051_IG17 - add r8, r5, 8 - ; byrRegs +[r8] - lsls r1, r0, 1 - ldrh r1, [r8+r1] - cmp r1, 32 - beq SHORT G_M051_IG10 - ;; size=18 bbWeight=0.08 PerfScore 0.56 -G_M051_IG09: ; bbWeight=0.04, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz - ; byrRegs -[r8] - cmp r1, 9 - bne SHORT G_M051_IG12 - ;; size=4 bbWeight=0.04 PerfScore 0.08 -G_M051_IG10: ; bbWeight=0.08, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz - adds r0, r0, 1 - cmp r7, r0 - bgt SHORT G_M051_IG08 - ;; size=6 bbWeight=0.08 PerfScore 0.24 -G_M051_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz - subs r1, r7, r2 - b SHORT G_M051_IG13
+ subs r2, r7, r3 + b SHORT G_M051_IG09
;; size=4 bbWeight=1 PerfScore 2.00
-G_M051_IG12: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref - subs r1, r0, r2
+G_M051_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref + subs r2, r1, r3
;; size=2 bbWeight=1 PerfScore 1.00
-G_M051_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz - adds r0, r3, r1
+G_M051_IG09: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz + adds r0, r0, r2
str r0, [r4] ldr r0, [r4] cmp r0, r7
- bge SHORT G_M051_IG15
+ bge SHORT G_M051_IG11
;; size=10 bbWeight=1 PerfScore 5.00
-G_M051_IG14: ; bbWeight=0.67, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz
+G_M051_IG10: ; bbWeight=0.67, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz
ldr r0, [r4] cmp r0, r7
- bhs SHORT G_M051_IG17
+ bhs SHORT G_M051_IG13
add r8, r5, 8 ; byrRegs +[r8] lsls r0, r0, 1 ldrh r0, [r8+r0] cmp r0, 34
- beq SHORT G_M051_IG18
+ beq SHORT G_M051_IG14
;; size=20 bbWeight=0.67 PerfScore 5.33
-G_M051_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M051_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5] ; byrRegs -[r4 r6 r8] movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M051_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M051_IG12: ; bbWeight=1, epilog, nogc, extend
add sp, 52 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M051_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M051_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M051_IG18: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz
+G_M051_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz
; gcrRegs +[r5] ; byrRegs +[r4 r6 r8]
- cmp r1, 0 - bne SHORT G_M051_IG21
+ cmp r2, 0 + bne SHORT G_M051_IG17
;; size=4 bbWeight=0 PerfScore 0.00
-G_M051_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M051_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5] ; byrRegs -[r4 r6 r8] movs r0, 0 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M051_IG20: ; bbWeight=0, epilog, nogc, extend
+G_M051_IG16: ; bbWeight=0, epilog, nogc, extend
add sp, 52 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0 PerfScore 0.00
-G_M051_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, gcvars, byref, isz
+G_M051_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, gcvars, byref, isz
; gcrRegs +[r5] ; byrRegs +[r4 r6 r8] ldr r0, [r4] @@ -217,7 +194,7 @@ G_M051_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byref ldr r9, [r4] ldr r0, [r4] cmp r7, r0
- blo SHORT G_M051_IG24
+ blo SHORT G_M051_IG20
lsls r3, r0, 1 add r10, r8, r3 ; byrRegs +[r10] @@ -225,14 +202,14 @@ G_M051_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byref mov r2, r3 str r2, [sp+0x04] cmp r2, 0
- bge SHORT G_M051_IG22
+ bge SHORT G_M051_IG18
movs r0, 0
- b SHORT G_M051_IG23
+ b SHORT G_M051_IG19
;; size=36 bbWeight=0 PerfScore 0.00
-G_M051_IG22: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0550 {r4 r6 r8 r10}, byref
+G_M051_IG18: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0550 {r4 r6 r8 r10}, byref
movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M051_IG23: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0550 {r4 r6 r8 r10}, byref, isz
+G_M051_IG19: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0550 {r4 r6 r8 r10}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -251,7 +228,7 @@ G_M051_IG23: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0550 {r4 r6 r8 ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- ble SHORT G_M051_IG19
+ ble SHORT G_M051_IG15
ldr r3, [r4] adds r0, r3, r0 str r0, [r4] @@ -259,9 +236,9 @@ G_M051_IG23: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0550 {r4 r6 r8 sub r10, r0, r9 sub r0, r7, r9 cmp r0, r10
- bhs SHORT G_M051_IG25
+ bhs SHORT G_M051_IG21
;; size=58 bbWeight=0 PerfScore 0.00
-G_M051_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M051_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5] ; byrRegs -[r4 r6 r8] movs r0, 33 @@ -272,22 +249,22 @@ G_M051_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M051_IG25: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0150 {r4 r6 r8}, byref, isz
...

+36 (+6.67%) : 368015.dasm - System.Buffers.SearchValues:Create(System.ReadOnlySpan1[ushort]):System.Buffers.SearchValues1ushort

@@ -5,17 +5,17 @@ ; optimized using Dynamic PGO ; r11 based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7
; 0 inlinees with PGO data; 15 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T11] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 loc0 [V01 ] ( 2, 1 ) ushort -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc1 [V02 ] ( 3, 1.71) ushort -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[short]> ;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]> ; V05 loc4 [V05,T27] ( 2, 0 ) ushort -> r4
-; V06 loc5 [V06,T28] ( 2, 0 ) ushort -> r8
+; V06 loc5 [V06,T28] ( 2, 0 ) ushort -> r5
; V07 loc6 [V07,T29] ( 2, 0 ) ushort -> r4 ; V08 loc7 [V08,T30] ( 2, 0 ) ushort -> r5 ; V09 loc8 [V09,T31] ( 2, 0 ) ushort -> r6 @@ -28,8 +28,8 @@ ; V16 tmp3 [V16,T17] ( 3, 1.71) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V17 tmp4 [V17,T22] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any4SearchValues`2[ushort,short]> ; V18 tmp5 [V18,T23] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any3CharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
-; V19 tmp6 [V19,T24] ( 3, 0 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> -; V20 tmp7 [V20,T25] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.RangeCharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
+; V19 tmp6 [V19,T24] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> +; V20 tmp7 [V20,T25] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.RangeCharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
; V21 tmp8 [V21,T26] ( 3, 0 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleCharSearchValues`1[System.Buffers.SearchValues+FalseConst]> ;* V22 tmp9 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Buffers.EmptySearchValues`1[ushort]> ;* V23 tmp10 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -40,15 +40,15 @@ ;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
-; V31 tmp18 [V31,T02] ( 5, 23.57) int -> r0 "Inline stloc first use temp" -; V32 tmp19 [V32,T03] ( 4, 22.86) ushort -> r3 "Inline stloc first use temp" -; V33 tmp20 [V33,T05] ( 2, 11.43) int -> r1 "Inline stloc first use temp" -; V34 tmp21 [V34,T06] ( 2, 11.43) int -> r3 "Inline stloc first use temp" -; V35 tmp22 [V35,T00] ( 3, 34.29) byref -> r2 "Inlining Arg" -; V36 tmp23 [V36,T01] ( 3, 34.29) byref -> r2 "dup spill"
+; V31 tmp18 [V31,T03] ( 5, 23.57) int -> r6 "Inline stloc first use temp" +; V32 tmp19 [V32,T02] ( 5, 28.57) ushort -> r8 "Inline stloc first use temp" +; V33 tmp20 [V33,T06] ( 2, 11.43) int -> r0 "Inline stloc first use temp" +; V34 tmp21 [V34,T07] ( 2, 11.43) int -> r3 "Inline stloc first use temp" +; V35 tmp22 [V35,T00] ( 3, 34.29) byref -> r9 "Inlining Arg" +; V36 tmp23 [V36,T01] ( 3, 34.29) byref -> r0 "dup spill"
;* V37 tmp24 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp26 [V39,T11] ( 10, 4 ) ref -> registers "Single return block return value"
+; V39 tmp26 [V39,T12] ( 10, 4 ) ref -> registers "Single return block return value"
;* V40 tmp27 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp28 [V41 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP ; V42 tmp29 [V42,T19] ( 2, 0.71) byref -> r8 single-def "field V04._reference (fldOffset=0x0)" P-INDEP @@ -63,13 +63,13 @@ ; V51 tmp38 [V51,T15] ( 3, 3.00) int -> r0 "field V26._length (fldOffset=0x4)" P-INDEP ;* V52 tmp39 [V52 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP ;* V53 tmp40 [V53 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V54 tmp41 [V54,T09] ( 2, 6.43) byref -> r4 single-def "field V30._reference (fldOffset=0x0)" P-INDEP -; V55 tmp42 [V55,T08] ( 3, 7.14) int -> r5 "field V30._length (fldOffset=0x4)" P-INDEP -; V56 tmp43 [V56,T12] ( 10, 3.43) byref -> r4 single-def "V00.[000..004)" -; V57 tmp44 [V57,T07] ( 9, 8.43) int -> r5 "V00.[004..008)" -; V58 cse0 [V58,T13] ( 3, 3 ) byref -> r0 "CSE - moderate"
+; V54 tmp41 [V54,T10] ( 2, 6.43) byref -> r4 single-def "field V30._reference (fldOffset=0x0)" P-INDEP +; V55 tmp42 [V55,T09] ( 3, 7.14) int -> r5 "field V30._length (fldOffset=0x4)" P-INDEP +; V56 tmp43 [V56,T13] ( 10, 3.43) byref -> r4 single-def "V00.[000..004)" +; V57 tmp44 [V57,T08] ( 9, 8.43) int -> r5 "V00.[004..008)" +; V58 cse0 [V58,T14] ( 3, 3 ) byref -> r0 "CSE - moderate"
; V59 cse1 [V59,T16] ( 3, 3 ) int -> r1 "CSE - moderate"
-; V60 cse2 [V60,T14] ( 3, 3.00) ref -> r1 "CSE - aggressive"
+; V60 cse2 [V60,T05] ( 6, 11.57) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 8 @@ -86,9 +86,9 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r1, [sp+0x2C] mov r5, r1 cmp r5, 0
- beq SHORT G_M36862_IG11
+ beq SHORT G_M36862_IG13
cmp r5, 1
- beq SHORT G_M36862_IG12
+ beq G_M36862_IG14
add r2, sp, 4 add r3, sp, 0 movw lr, 0xd1ff @@ -98,12 +98,12 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M36862_IG13
+ bne G_M36862_IG15
cmp r5, 2
- beq G_M36862_IG14
+ beq G_M36862_IG16
cmp r5, 3
- beq G_M36862_IG15 - ;; size=50 bbWeight=1 PerfScore 20.00
+ beq G_M36862_IG17 + ;; size=54 bbWeight=1 PerfScore 20.00
G_M36862_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 0 bge SHORT G_M36862_IG04 @@ -123,11 +123,11 @@ G_M36862_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b ; byrRegs +[r6] mov r0, r5 cmp r0, 4
- beq G_M36862_IG16
+ beq G_M36862_IG18
;; size=10 bbWeight=1.00 PerfScore 4.00 G_M36862_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz cmp r0, 5
- beq SHORT G_M36862_IG10
+ beq SHORT G_M36862_IG12
;; size=4 bbWeight=1 PerfScore 2.00 G_M36862_IG06: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; byrRegs -[r6] @@ -136,7 +136,7 @@ G_M36862_IG06: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b mov r9, r5 ldrh r0, [sp] cmp r0, 256
- bge G_M36862_IG18
+ bge G_M36862_IG20
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -147,43 +147,60 @@ G_M36862_IG06: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 mov r7, r0 ; gcrRegs +[r7]
- movs r0, 0 - ; gcrRegs -[r0]
+ movs r6, 0
cmp r5, 0
- ble SHORT G_M36862_IG08
+ ble SHORT G_M36862_IG10
;; size=42 bbWeight=0.71 PerfScore 10.00 G_M36862_IG07: ; bbWeight=5.71, gcrefRegs=0080 {r7}, byrefRegs=0010 {r4}, byref, isz
- lsls r3, r0, 1 - ldrh r3, [r4+r3] - cmp r3, 255 - bgt G_M36862_IG17 - adds r2, r7, 4 - ; byrRegs +[r2] - asrs r1, r3, 5 - and r3, r3, 31 - mov lr, 1 - lsl r3, lr, r3 - ldrsb lr, [r2] - lsls r1, r1, 2 - adds r2, r2, r1 - ldr r1, [r2] - orrs r3, r1 - str r3, [r2] - adds r0, r0, 1 - cmp r0, r5
+ ; gcrRegs -[r0] + lsls r0, r6, 1 + ldrh r8, [r4+r0] + cmp r8, 255 + bgt G_M36862_IG19 + add r9, r7, 4 + ; byrRegs +[r9] + cmp r8, 256 + blt SHORT G_M36862_IG09 + ;; size=24 bbWeight=5.71 PerfScore 40.00 +G_M36862_IG08: ; bbWeight=2.86, gcrefRegs=0080 {r7}, byrefRegs=0210 {r4 r9}, byref + movw r1, 0xd1ff + movt r1, 0xd1ff + mov r0, r1 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ; gcr arg pop 0 + ;; size=22 bbWeight=2.86 PerfScore 20.00 +G_M36862_IG09: ; bbWeight=5.71, gcrefRegs=0080 {r7}, byrefRegs=0210 {r4 r9}, byref, isz + asr r0, r8, 5 + and r3, r8, 31 + movs r2, 1 + lsl r3, r2, r3 + ldrsb r2, [r9] + lsls r0, r0, 2 + add r0, r9 + ; byrRegs +[r0] + ldr r2, [r0] + orrs r3, r2 + str r3, [r0] + adds r6, r6, 1 + cmp r6, r5
blt SHORT G_M36862_IG07
- ;; size=46 bbWeight=5.71 PerfScore 102.86 -G_M36862_IG08: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref - ; byrRegs -[r2 r4]
+ ;; size=34 bbWeight=5.71 PerfScore 74.29 +G_M36862_IG10: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref + ; byrRegs -[r0 r4 r9]
mov r0, r7 ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00
-G_M36862_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M36862_IG11: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr} add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M36862_IG10: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, gcvars, byref, isz
+G_M36862_IG12: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, gcvars, byref, isz
; gcrRegs -[r0 r7] ; byrRegs +[r6] movw r0, 0xd1ff @@ -206,9 +223,9 @@ G_M36862_IG10: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[r0] ; byrRegs -[r1 r6] ; gcr arg pop 0
- b SHORT G_M36862_IG08
+ b SHORT G_M36862_IG10
;; size=40 bbWeight=0.29 PerfScore 4.00
-G_M36862_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M36862_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r7] movw r0, 0xd1ff movt r0, 0xd1ff @@ -219,9 +236,9 @@ G_M36862_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r7, r0 ; gcrRegs +[r7]
- b SHORT G_M36862_IG08
+ b SHORT G_M36862_IG10
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36862_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M36862_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0 r7] ; byrRegs +[r4] ldrh r4, [r4] @@ -236,9 +253,9 @@ G_M36862_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre strh r4, [r0+0x04] mov r7, r0 ; gcrRegs +[r7]
- b SHORT G_M36862_IG08
+ b SHORT G_M36862_IG10
;; size=26 bbWeight=0 PerfScore 0.00
-G_M36862_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M36862_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r7] movw r0, 0xd1ff movt r0, 0xd1ff ...

+36 (+6.67%) : 368592.dasm - System.Buffers.SearchValues:Create(System.ReadOnlySpan1[ushort]):System.Buffers.SearchValues1ushort

@@ -5,17 +5,17 @@ ; optimized using Dynamic PGO ; r11 based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
; 0 inlinees with PGO data; 15 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T11] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 loc0 [V01 ] ( 2, 1 ) ushort -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc1 [V02 ] ( 3, 1.80) ushort -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[short]> ;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]> ; V05 loc4 [V05,T27] ( 2, 0 ) ushort -> r4
-; V06 loc5 [V06,T28] ( 2, 0 ) ushort -> r8
+; V06 loc5 [V06,T28] ( 2, 0 ) ushort -> r5
; V07 loc6 [V07,T29] ( 2, 0 ) ushort -> r4 ; V08 loc7 [V08,T30] ( 2, 0 ) ushort -> r5 ; V09 loc8 [V09,T31] ( 2, 0 ) ushort -> r6 @@ -28,8 +28,8 @@ ; V16 tmp3 [V16,T17] ( 3, 1.20) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V17 tmp4 [V17,T22] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any4SearchValues`2[ushort,short]> ; V18 tmp5 [V18,T23] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any3CharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
-; V19 tmp6 [V19,T24] ( 3, 0 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> -; V20 tmp7 [V20,T25] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.RangeCharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
+; V19 tmp6 [V19,T24] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> +; V20 tmp7 [V20,T25] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.RangeCharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
; V21 tmp8 [V21,T26] ( 3, 0 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleCharSearchValues`1[System.Buffers.SearchValues+FalseConst]> ;* V22 tmp9 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Buffers.EmptySearchValues`1[ushort]> ;* V23 tmp10 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -40,15 +40,15 @@ ;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
-; V31 tmp18 [V31,T02] ( 5, 26.40) int -> r0 "Inline stloc first use temp" -; V32 tmp19 [V32,T03] ( 4, 25.60) ushort -> r3 "Inline stloc first use temp" -; V33 tmp20 [V33,T05] ( 2, 12.80) int -> r1 "Inline stloc first use temp"
+; V31 tmp18 [V31,T03] ( 5, 26.40) int -> r6 "Inline stloc first use temp" +; V32 tmp19 [V32,T02] ( 5, 32 ) ushort -> r8 "Inline stloc first use temp" +; V33 tmp20 [V33,T05] ( 2, 12.80) int -> r0 "Inline stloc first use temp"
; V34 tmp21 [V34,T06] ( 2, 12.80) int -> r3 "Inline stloc first use temp"
-; V35 tmp22 [V35,T00] ( 3, 38.40) byref -> r2 "Inlining Arg" -; V36 tmp23 [V36,T01] ( 3, 38.40) byref -> r2 "dup spill"
+; V35 tmp22 [V35,T00] ( 3, 38.40) byref -> r9 "Inlining Arg" +; V36 tmp23 [V36,T01] ( 3, 38.40) byref -> r0 "dup spill"
;* V37 tmp24 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp26 [V39,T11] ( 10, 4 ) ref -> registers "Single return block return value"
+; V39 tmp26 [V39,T12] ( 10, 4 ) ref -> registers "Single return block return value"
;* V40 tmp27 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp28 [V41 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP ; V42 tmp29 [V42,T19] ( 2, 0.80) byref -> r8 single-def "field V04._reference (fldOffset=0x0)" P-INDEP @@ -63,13 +63,13 @@ ; V51 tmp38 [V51,T15] ( 3, 3 ) int -> r0 "field V26._length (fldOffset=0x4)" P-INDEP ;* V52 tmp39 [V52 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP ;* V53 tmp40 [V53 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V54 tmp41 [V54,T09] ( 2, 7.20) byref -> r4 single-def "field V30._reference (fldOffset=0x0)" P-INDEP -; V55 tmp42 [V55,T08] ( 3, 8 ) int -> r5 "field V30._length (fldOffset=0x4)" P-INDEP -; V56 tmp43 [V56,T12] ( 10, 3.60) byref -> r4 single-def "V00.[000..004)" -; V57 tmp44 [V57,T07] ( 9, 8.60) int -> r5 "V00.[004..008)" -; V58 cse0 [V58,T13] ( 3, 3 ) byref -> r0 "CSE - moderate"
+; V54 tmp41 [V54,T10] ( 2, 7.20) byref -> r4 single-def "field V30._reference (fldOffset=0x0)" P-INDEP +; V55 tmp42 [V55,T09] ( 3, 8 ) int -> r5 "field V30._length (fldOffset=0x4)" P-INDEP +; V56 tmp43 [V56,T13] ( 10, 3.60) byref -> r4 single-def "V00.[000..004)" +; V57 tmp44 [V57,T08] ( 9, 8.60) int -> r5 "V00.[004..008)" +; V58 cse0 [V58,T14] ( 3, 3 ) byref -> r0 "CSE - moderate"
; V59 cse1 [V59,T16] ( 3, 3 ) int -> r1 "CSE - moderate"
-; V60 cse2 [V60,T14] ( 3, 3 ) ref -> r1 "CSE - aggressive"
+; V60 cse2 [V60,T07] ( 6, 12.60) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 8 @@ -86,9 +86,9 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r1, [sp+0x2C] mov r5, r1 cmp r5, 0
- beq SHORT G_M36862_IG09
+ beq SHORT G_M36862_IG11
cmp r5, 1
- beq SHORT G_M36862_IG10
+ beq G_M36862_IG12
add r2, sp, 4 add r3, sp, 0 movw lr, 0xd1ff @@ -98,11 +98,11 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M36862_IG11
+ bne G_M36862_IG13
cmp r5, 2
- beq G_M36862_IG12
+ beq G_M36862_IG14
cmp r5, 3
- beq G_M36862_IG13
+ beq G_M36862_IG15
cmp r5, 0 bge SHORT G_M36862_IG03 movw r1, 0xd1ff @@ -115,15 +115,15 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=76 bbWeight=1 PerfScore 29.00
+ ;; size=80 bbWeight=1 PerfScore 29.00
G_M36862_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz mov r6, r4 ; byrRegs +[r6] mov r0, r5 cmp r0, 4
- beq G_M36862_IG14
+ beq G_M36862_IG16
cmp r0, 5
- beq SHORT G_M36862_IG08
+ beq SHORT G_M36862_IG10
;; size=14 bbWeight=1 PerfScore 6.00 G_M36862_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; byrRegs -[r6] @@ -132,7 +132,7 @@ G_M36862_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b mov r9, r5 ldrh r0, [sp] cmp r0, 256
- bge G_M36862_IG16
+ bge G_M36862_IG18
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -143,43 +143,60 @@ G_M36862_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 mov r7, r0 ; gcrRegs +[r7]
- movs r0, 0 - ; gcrRegs -[r0]
+ movs r6, 0
cmp r5, 0
- ble SHORT G_M36862_IG06
+ ble SHORT G_M36862_IG08
;; size=42 bbWeight=0.80 PerfScore 11.20 G_M36862_IG05: ; bbWeight=6.40, gcrefRegs=0080 {r7}, byrefRegs=0010 {r4}, byref, isz
- lsls r3, r0, 1 - ldrh r3, [r4+r3] - cmp r3, 255 - bgt G_M36862_IG15 - adds r2, r7, 4 - ; byrRegs +[r2] - asrs r1, r3, 5 - and r3, r3, 31 - mov lr, 1 - lsl r3, lr, r3 - ldrsb lr, [r2] - lsls r1, r1, 2 - adds r2, r2, r1 - ldr r1, [r2] - orrs r3, r1 - str r3, [r2] - adds r0, r0, 1 - cmp r0, r5
+ ; gcrRegs -[r0] + lsls r0, r6, 1 + ldrh r8, [r4+r0] + cmp r8, 255 + bgt G_M36862_IG17 + add r9, r7, 4 + ; byrRegs +[r9] + cmp r8, 256 + blt SHORT G_M36862_IG07 + ;; size=24 bbWeight=6.40 PerfScore 44.80 +G_M36862_IG06: ; bbWeight=3.20, gcrefRegs=0080 {r7}, byrefRegs=0210 {r4 r9}, byref + movw r1, 0xd1ff + movt r1, 0xd1ff + mov r0, r1 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ; gcr arg pop 0 + ;; size=22 bbWeight=3.20 PerfScore 22.40 +G_M36862_IG07: ; bbWeight=6.40, gcrefRegs=0080 {r7}, byrefRegs=0210 {r4 r9}, byref, isz + asr r0, r8, 5 + and r3, r8, 31 + movs r2, 1 + lsl r3, r2, r3 + ldrsb r2, [r9] + lsls r0, r0, 2 + add r0, r9 + ; byrRegs +[r0] + ldr r2, [r0] + orrs r3, r2 + str r3, [r0] + adds r6, r6, 1 + cmp r6, r5
blt SHORT G_M36862_IG05
- ;; size=46 bbWeight=6.40 PerfScore 115.20 -G_M36862_IG06: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref - ; byrRegs -[r2 r4]
+ ;; size=34 bbWeight=6.40 PerfScore 83.20 +G_M36862_IG08: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref + ; byrRegs -[r0 r4 r9]
mov r0, r7 ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00
-G_M36862_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M36862_IG09: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr} add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M36862_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, gcvars, byref, isz
+G_M36862_IG10: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, gcvars, byref, isz
; gcrRegs -[r0 r7] ; byrRegs +[r6] movw r0, 0xd1ff @@ -202,9 +219,9 @@ G_M36862_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[r0] ; byrRegs -[r1 r6] ; gcr arg pop 0
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=40 bbWeight=0.20 PerfScore 2.80
-G_M36862_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M36862_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r7] movw r0, 0xd1ff movt r0, 0xd1ff @@ -215,9 +232,9 @@ G_M36862_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r7, r0 ; gcrRegs +[r7]
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36862_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M36862_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0 r7] ; byrRegs +[r4] ldrh r4, [r4] @@ -232,9 +249,9 @@ G_M36862_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre strh r4, [r0+0x04] mov r7, r0 ; gcrRegs +[r7]
- b SHORT G_M36862_IG06
+ b SHORT G_M36862_IG08
;; size=26 bbWeight=0 PerfScore 0.00
-G_M36862_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M36862_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r7] ...

+38 (+7.01%) : 251139.dasm - System.Buffers.SearchValues:Create(System.ReadOnlySpan1[ushort]):System.Buffers.SearchValues1ushort

@@ -9,13 +9,13 @@ ; 0 inlinees with PGO data; 15 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 5, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T09] ( 5, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 loc0 [V01 ] ( 2, 1 ) ushort -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op ; V02 loc1 [V02 ] ( 3, 1.50) ushort -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[short]> ;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]> ; V05 loc4 [V05,T27] ( 2, 0 ) ushort -> r5
-; V06 loc5 [V06,T28] ( 2, 0 ) ushort -> r9
+; V06 loc5 [V06,T28] ( 2, 0 ) ushort -> r4
; V07 loc6 [V07,T29] ( 2, 0 ) ushort -> r5 ; V08 loc7 [V08,T30] ( 2, 0 ) ushort -> r4 ; V09 loc8 [V09,T31] ( 2, 0 ) ushort -> r6 @@ -25,11 +25,11 @@ ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T21] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.ProbabilisticCharSearchValues> ; V15 tmp2 [V15,T04] ( 3, 10 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Latin1CharSearchValues>
-; V16 tmp3 [V16,T13] ( 3, 3 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp3 [V16,T14] ( 3, 3 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V17 tmp4 [V17,T22] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any4SearchValues`2[ushort,short]> ; V18 tmp5 [V18,T23] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any3CharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
-; V19 tmp6 [V19,T24] ( 3, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> -; V20 tmp7 [V20,T25] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.RangeCharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
+; V19 tmp6 [V19,T24] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Any2CharSearchValues`1[System.Buffers.SearchValues+FalseConst]> +; V20 tmp7 [V20,T25] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.RangeCharSearchValues`1[System.Buffers.SearchValues+FalseConst]>
; V21 tmp8 [V21,T26] ( 3, 0 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleCharSearchValues`1[System.Buffers.SearchValues+FalseConst]> ;* V22 tmp9 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Buffers.EmptySearchValues`1[ushort]> ;* V23 tmp10 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -40,15 +40,15 @@ ;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
-; V31 tmp18 [V31,T02] ( 5, 16.50) int -> r0 "Inline stloc first use temp" -; V32 tmp19 [V32,T03] ( 4, 16 ) ushort -> r3 "Inline stloc first use temp" -; V33 tmp20 [V33,T06] ( 2, 8 ) int -> r1 "Inline stloc first use temp" -; V34 tmp21 [V34,T07] ( 2, 8 ) int -> r3 "Inline stloc first use temp" -; V35 tmp22 [V35,T00] ( 3, 24 ) byref -> r2 "Inlining Arg" -; V36 tmp23 [V36,T01] ( 3, 24 ) byref -> r2 "dup spill"
+; V31 tmp18 [V31,T03] ( 5, 16.50) int -> r6 "Inline stloc first use temp" +; V32 tmp19 [V32,T02] ( 5, 20 ) ushort -> r9 "Inline stloc first use temp" +; V33 tmp20 [V33,T07] ( 2, 8 ) int -> r0 "Inline stloc first use temp" +; V34 tmp21 [V34,T08] ( 2, 8 ) int -> r3 "Inline stloc first use temp" +; V35 tmp22 [V35,T00] ( 3, 24 ) byref -> r8 "Inlining Arg" +; V36 tmp23 [V36,T01] ( 3, 24 ) byref -> r0 "dup spill"
;* V37 tmp24 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp26 [V39,T12] ( 10, 4 ) ref -> registers "Single return block return value"
+; V39 tmp26 [V39,T13] ( 10, 4 ) ref -> registers "Single return block return value"
;* V40 tmp27 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp28 [V41 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP ; V42 tmp29 [V42,T19] ( 2, 0.50) byref -> r9 single-def "field V04._reference (fldOffset=0x0)" P-INDEP @@ -63,12 +63,12 @@ ; V51 tmp38 [V51,T15] ( 3, 3 ) int -> r0 "field V26._length (fldOffset=0x4)" P-INDEP ;* V52 tmp39 [V52 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP ;* V53 tmp40 [V53 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V54 tmp41 [V54,T10] ( 2, 4.50) byref -> r5 single-def "field V30._reference (fldOffset=0x0)" P-INDEP -; V55 tmp42 [V55,T09] ( 3, 5 ) int -> r4 "field V30._length (fldOffset=0x4)" P-INDEP -; V56 tmp43 [V56,T05] ( 9, 8 ) int -> r4 "V00.[004..008)" -; V57 cse0 [V57,T11] ( 12, 4 ) byref -> r5 multi-def "CSE - moderate"
+; V54 tmp41 [V54,T11] ( 2, 4.50) byref -> r5 single-def "field V30._reference (fldOffset=0x0)" P-INDEP +; V55 tmp42 [V55,T10] ( 3, 5 ) int -> r4 "field V30._length (fldOffset=0x4)" P-INDEP +; V56 tmp43 [V56,T06] ( 9, 8 ) int -> r4 "V00.[004..008)" +; V57 cse0 [V57,T12] ( 12, 4 ) byref -> r5 multi-def "CSE - moderate"
; V58 cse1 [V58,T16] ( 3, 3 ) int -> r1 "CSE - moderate"
-; V59 cse2 [V59,T14] ( 3, 3 ) ref -> r1 "CSE - aggressive"
+; V59 cse2 [V59,T05] ( 6, 9 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 8 @@ -81,9 +81,9 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r1, [sp+0x2C] mov r4, r1 cmp r4, 0
- beq SHORT G_M36862_IG09
+ beq G_M36862_IG11
cmp r4, 1
- beq SHORT G_M36862_IG10
+ beq G_M36862_IG12
ldr r5, [sp+0x28] ; byrRegs +[r5] mov r0, r5 @@ -97,11 +97,11 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M36862_IG11
+ bne G_M36862_IG13
cmp r4, 2
- beq G_M36862_IG12
+ beq G_M36862_IG14
cmp r4, 3
- beq G_M36862_IG13
+ beq G_M36862_IG15
mov r6, r5 ; byrRegs +[r6] cmp r4, 0 @@ -116,11 +116,11 @@ G_M36862_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=78 bbWeight=1 PerfScore 30.00
+ ;; size=84 bbWeight=1 PerfScore 30.00
G_M36862_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz mov r0, r4 cmp r0, 4
- beq G_M36862_IG14
+ beq G_M36862_IG16
cmp r0, 5 bne SHORT G_M36862_IG05 ;; size=12 bbWeight=1 PerfScore 5.00 @@ -146,7 +146,7 @@ G_M36862_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, b ; gcrRegs -[r0] ; byrRegs -[r1 r6] ; gcr arg pop 0
- b SHORT G_M36862_IG07
+ b SHORT G_M36862_IG09
;; size=40 bbWeight=0.50 PerfScore 7.00 G_M36862_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz ; gcrRegs -[r7] @@ -156,7 +156,7 @@ G_M36862_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b ; byrRegs +[r9] ldrh r0, [sp] cmp r0, 256
- bge G_M36862_IG16
+ bge G_M36862_IG18
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -167,43 +167,60 @@ G_M36862_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b ; gcr arg pop 0 mov r7, r0 ; gcrRegs +[r7]
- movs r0, 0 - ; gcrRegs -[r0]
+ movs r6, 0
cmp r4, 0
- ble SHORT G_M36862_IG07
+ ble SHORT G_M36862_IG09
;; size=42 bbWeight=0.50 PerfScore 7.00 G_M36862_IG06: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0020 {r5}, byref, isz
- lsls r3, r0, 1 - ldrh r3, [r5+r3] - cmp r3, 255 - bgt G_M36862_IG15 - adds r2, r7, 4 - ; byrRegs +[r2] - asrs r1, r3, 5 - and r3, r3, 31 - mov lr, 1 - lsl r3, lr, r3 - ldrsb lr, [r2] - lsls r1, r1, 2 - adds r2, r2, r1 - ldr r1, [r2] - orrs r3, r1 - str r3, [r2] - adds r0, r0, 1 - cmp r0, r4
+ ; gcrRegs -[r0] + lsls r0, r6, 1 + ldrh r9, [r5+r0] + cmp r9, 255 + bgt G_M36862_IG17 + add r8, r7, 4 + ; byrRegs +[r8] + cmp r9, 256 + blt SHORT G_M36862_IG08 + ;; size=24 bbWeight=4 PerfScore 28.00 +G_M36862_IG07: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0120 {r5 r8}, byref + movw r1, 0xd1ff + movt r1, 0xd1ff + mov r0, r1 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ; gcr arg pop 0 + ;; size=22 bbWeight=2 PerfScore 14.00 +G_M36862_IG08: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0120 {r5 r8}, byref, isz + asr r0, r9, 5 + and r3, r9, 31 + movs r2, 1 + lsl r3, r2, r3 + ldrsb r2, [r8] + lsls r0, r0, 2 + add r0, r8 + ; byrRegs +[r0] + ldr r2, [r0] + orrs r3, r2 + str r3, [r0] + adds r6, r6, 1 + cmp r6, r4
blt SHORT G_M36862_IG06
- ;; size=46 bbWeight=4 PerfScore 72.00 -G_M36862_IG07: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref - ; byrRegs -[r2 r5]
+ ;; size=34 bbWeight=4 PerfScore 52.00 +G_M36862_IG09: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref + ; byrRegs -[r0 r5 r8]
mov r0, r7 ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00
-G_M36862_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M36862_IG10: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr} add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M36862_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M36862_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r7] movw r0, 0xd1ff movt r0, 0xd1ff @@ -214,9 +231,9 @@ G_M36862_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 mov r7, r0 ; gcrRegs +[r7]
- b SHORT G_M36862_IG07
+ b SHORT G_M36862_IG09
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36862_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M36862_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r7] ldr r5, [sp+0x28] ; byrRegs +[r5] @@ -232,9 +249,9 @@ G_M36862_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, strh r5, [r0+0x04] mov r7, r0 ; gcrRegs +[r7]
- b SHORT G_M36862_IG07
+ b SHORT G_M36862_IG09
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36862_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M36862_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r7] movw r0, 0xd1ff movt r0, 0xd1ff @@ -243,27 +260,27 @@ G_M36862_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0
- mov r6, r0 - ; gcrRegs +[r6]
+ mov r4, r0 + ; gcrRegs +[r4]
...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-32 (-29.63%) : 20316.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 -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-29.63%) : 146800.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 -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-2.92%) : 127226.dasm - System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)

@@ -12,8 +12,8 @@ ; V01 loc0 [V01,T00] ( 8, 24 ) int -> r0 ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 24 ) int -> lr "dup spill"
-; V04 tmp2 [V04,T16] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V05 tmp3 [V05,T13] ( 2, 4 ) ushort -> r1 "Inlining Arg"
+; V04 tmp2 [V04,T17] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V05 tmp3 [V05,T14] ( 2, 4 ) ushort -> r1 "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V08 tmp6 [V08 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" @@ -21,22 +21,23 @@ ; V10 tmp8 [V10,T04] ( 2, 16 ) ushort -> r1 "Inlining Arg" ; V11 tmp9 [V11,T12] ( 3, 6 ) ref -> r0 single-def "arr expr" ; V12 tmp10 [V12,T01] ( 3, 24 ) ref -> lr "arr expr"
-;* V13 tmp11 [V13,T14] ( 0, 0 ) ref -> zero-ref "arr expr" -; V14 tmp12 [V14,T17] ( 2, 0 ) ref -> r1 "argument with side effect"
+;* V13 tmp11 [V13,T15] ( 0, 0 ) ref -> zero-ref "arr expr" +; V14 tmp12 [V14,T18] ( 2, 0 ) ref -> r1 "argument with side effect"
; V15 tmp13 [V15,T03] ( 2, 16 ) ref -> r2 "arr expr" ; V16 cse0 [V16,T05] ( 3, 12 ) ref -> r2 "CSE - aggressive"
-;* V17 cse1 [V17,T15] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V17 cse1 [V17,T16] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
; V18 cse2 [V18,T09] ( 3, 10 ) int -> lr "CSE - aggressive"
-; V19 cse3 [V19,T06] ( 5, 12 ) int -> r6 "CSE - aggressive" -; V20 cse4 [V20,T11] ( 4, 8 ) byref -> r5 "CSE - aggressive" -; V21 cse5 [V21,T07] ( 3, 12 ) int -> r7 "CSE - aggressive"
+; V19 cse3 [V19,T06] ( 5, 12 ) int -> r7 "CSE - aggressive" +; V20 cse4 [V20,T11] ( 4, 8 ) byref -> r6 "CSE - aggressive" +; V21 cse5 [V21,T07] ( 3, 12 ) int -> r8 "CSE - aggressive"
; V22 cse6 [V22,T10] ( 3, 10 ) int -> r3 "CSE - aggressive"
+; V23 cse7 [V23,T13] ( 3, 6 ) int -> r5 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M26859_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr} - add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r11,lr} + add r11, sp, 24
mov r4, r0 ; gcrRegs +[r4] ;; size=10 bbWeight=1 PerfScore 3.00 @@ -49,22 +50,22 @@ G_M26859_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bne SHORT G_M26859_IG09 ;; size=18 bbWeight=1 PerfScore 6.00 G_M26859_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ movw r5, 0xd1ff + movt r5, 0xd1ff + ldr r0, [r5]
; gcrRegs +[r0] movs r2, 2 ldr r1, [r0+0x04] cmp r2, r1 bhs SHORT G_M26859_IG08 ldrh r1, [r0+0x0C]
- add r5, r4, 8 - ; byrRegs +[r5] - mov r0, r5
+ add r6, r4, 8 + ; byrRegs +[r6] + mov r0, r6
; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r6, [r4+0x04] - mov r2, r6
+ ldr r7, [r4+0x04] + mov r2, r7
sxth r1, r1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -74,44 +75,42 @@ G_M26859_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre cmp r0, -1 beq SHORT G_M26859_IG07 ;; size=50 bbWeight=1 PerfScore 19.00
-G_M26859_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+G_M26859_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
subs r3, r0, 1
- cmp r3, r6
+ cmp r3, r7
bhs SHORT G_M26859_IG08 lsls r3, r0, 1 subs r1, r3, 2
- ldrh r1, [r5+r1] - movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2]
+ ldrh r1, [r6+r1] + ldr r2, [r5]
; gcrRegs +[r2] mov lr, r2 ; gcrRegs +[lr] mov r12, 1
- ldr r7, [lr+0x04] - cmp r12, r7
+ ldr r8, [lr+0x04] + cmp r12, r8
bhs SHORT G_M26859_IG08 ldrh lr, [lr+0x0A] ; gcrRegs -[lr] cmp r1, lr beq SHORT G_M26859_IG06
- ;; size=44 bbWeight=4 PerfScore 68.00 -G_M26859_IG05: ; bbWeight=2, gcrefRegs=0014 {r2 r4}, byrefRegs=0020 {r5}, byref, isz
+ ;; size=36 bbWeight=4 PerfScore 60.00 +G_M26859_IG05: ; bbWeight=2, gcrefRegs=0014 {r2 r4}, byrefRegs=0040 {r6}, byref, isz
adds r1, r0, 1
- cmp r1, r6
+ cmp r1, r7
bhs SHORT G_M26859_IG08 adds r3, r3, 2
- ldrh r3, [r5+r3]
+ ldrh r3, [r6+r3]
cmp r3, lr bne SHORT G_M26859_IG10 ;; size=14 bbWeight=2 PerfScore 14.00
-G_M26859_IG06: ; bbWeight=4, gcrefRegs=0014 {r2 r4}, byrefRegs=0020 {r5}, byref, isz
+G_M26859_IG06: ; bbWeight=4, gcrefRegs=0014 {r2 r4}, byrefRegs=0040 {r6}, byref, isz
add lr, r0, 1 movs r3, 2
- cmp r3, r7
+ cmp r3, r8
bhs SHORT G_M26859_IG08 ldrh r1, [r2+0x0C]
- sub r3, r6, lr
+ sub r3, r7, lr
mov r0, r4 ; gcrRegs +[r0] mov r2, lr @@ -126,8 +125,8 @@ G_M26859_IG06: ; bbWeight=4, gcrefRegs=0014 {r2 r4}, byrefRegs=0020 {r5}, ;; size=40 bbWeight=4 PerfScore 56.00 G_M26859_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4]
- ; byrRegs -[r5] - pop {r4,r5,r6,r7,r11,pc}
+ ; byrRegs -[r6] + pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00 G_M26859_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movw r3, 0xd1ff @@ -175,7 +174,7 @@ G_M26859_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=62 bbWeight=0 PerfScore 0.00
-Total bytes of code 274, prolog size 8, PerfScore 167.00, instruction count 98, allocated bytes for code 274 (MethodHash=5f739714) for method System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
+Total bytes of code 266, prolog size 8, PerfScore 159.00, instruction count 96, allocated bytes for code 266 (MethodHash=5f739714) for method System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -187,7 +186,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 137 (0x00089) Actual length = 274 (0x000112)
+ Function Length : 133 (0x00085) Actual length = 266 (0x00010a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -195,7 +194,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end FF end

+8 (+3.77%) : 79969.dasm - System.ComponentModel.Composition.Hosting.AggregateExportProvider:Dispose(ubyte):this (FullOpts)

@@ -9,26 +9,26 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 7, 11.50) ref -> r4 this class-hnd single-def <System.ComponentModel.Composition.Hosting.AggregateExportProvider>
-; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> r1 single-def -; V02 loc0 [V02,T10] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>>
+; V01 arg1 [V01,T05] ( 3, 3 ) ubyte -> r1 single-def +; V02 loc0 [V02,T09] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>>
; V03 loc1 [V03,T02] ( 5, 16.50) int -> r5
-; V04 loc2 [V04,T04] ( 3, 12 ) ref -> r9 class-hnd <System.ComponentModel.Composition.Hosting.ExportProvider>
+; V04 loc2 [V04,T04] ( 3, 12 ) ref -> r8 class-hnd <System.ComponentModel.Composition.Hosting.ExportProvider>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T00] ( 4, 32 ) ref -> [sp+0x04] class-hnd exact spill-single-def "NewObj constructor temp" <System.EventHandler`1[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs]> ; V07 tmp2 [V07,T01] ( 4, 32 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.EventHandler`1[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs]>
-; V08 tmp3 [V08,T09] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V09 cse0 [V09,T08] ( 2, 4.50) byref -> r7 hoist "CSE - aggressive" -; V10 cse1 [V10,T07] ( 3, 5 ) int -> r6 "CSE - aggressive" -; V11 cse2 [V11,T05] ( 3, 8.50) int -> r8 hoist "CSE - aggressive"
+; V08 tmp3 [V08,T08] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V09 cse0 [V09,T07] ( 2, 4.50) byref -> r7 hoist "CSE - aggressive" +; V10 cse1 [V10,T06] ( 3, 5 ) int -> r6 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M53964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr} + sub sp, 12
add r11, sp, 32 mov r4, r0 ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M53964_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r0, r1 cmp r0, 0 @@ -56,15 +56,14 @@ G_M53964_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ble SHORT G_M53964_IG05 add r7, r0, 8 ; byrRegs +[r7]
- movw r8, 0xd1ff - movt r8, 0xd1ff - ;; size=52 bbWeight=0.50 PerfScore 9.50
+ ;; size=44 bbWeight=0.50 PerfScore 8.50
G_M53964_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz ; gcrRegs -[r0] lsls r0, r5, 2
- ldr r9, [r7+r0] - ; gcrRegs +[r9] - mov r0, r8
+ ldr r8, [r7+r0] + ; gcrRegs +[r8] + movw r0, 0xd1ff + movt r0, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST @@ -87,7 +86,7 @@ G_M53964_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by ldr r1, [sp+0x04] ; gcrRegs +[r1] str r0, [r1+0x0C]
- mov r0, r9
+ mov r0, r8
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff @@ -96,7 +95,8 @@ G_M53964_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by ; GC ptr vars -{V06} blx r3 // System.ComponentModel.Composition.Hosting.ExportProvider:remove_ExportsChanged(System.EventHandler`1[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs]):this ; gcrRegs -[r0-r1]
- mov r0, r8
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST @@ -119,23 +119,24 @@ G_M53964_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by ldr r1, [sp] ; gcrRegs +[r1] str r0, [r1+0x0C]
- mov r0, r9
+ mov r0, r8
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ; GC ptr vars -{V07} blx r3 // System.ComponentModel.Composition.Hosting.ExportProvider:remove_ExportsChanging(System.EventHandler`1[System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs]):this
- ; gcrRegs -[r0-r1 r9]
+ ; gcrRegs -[r0-r1 r8]
adds r5, r5, 1 cmp r6, r5 bgt SHORT G_M53964_IG04
- ;; size=126 bbWeight=4 PerfScore 184.00
+ ;; size=138 bbWeight=4 PerfScore 192.00
G_M53964_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4] ; byrRegs -[r7]
- pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12 + pop {r4,r5,r6,r7,r8,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00
G_M53964_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movw r3, 0xd1ff movt r3, 0xd1ff @@ -144,7 +145,7 @@ G_M53964_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 212, prolog size 8, PerfScore 200.50, instruction count 77, allocated bytes for code 212 (MethodHash=3b612d33) for method System.ComponentModel.Composition.Hosting.AggregateExportProvider:Dispose(ubyte):this (FullOpts)
+Total bytes of code 220, prolog size 10, PerfScore 209.50, instruction count 79, allocated bytes for code 220 (MethodHash=3b612d33) for method System.ComponentModel.Composition.Hosting.AggregateExportProvider:Dispose(ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -156,7 +157,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 212 (0x0000d4)
+ Function Length : 110 (0x0006e) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -164,7 +165,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- AB FC pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}; opsize 32 - FF end
+ 03 add sp, sp, #12 ; opsize 16 + A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end

+30 (+4.67%) : 98423.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)

@@ -12,13 +12,13 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V02 loc1 [V02,T03] ( 3, 9 ) ref -> r4 class-hnd exact single-def <<unknown class>> ; V03 loc2 [V03 ] ( 8, 14 ) struct (24) [sp+0x18] 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 -> r6 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
+; V04 loc3 [V04,T02] ( 3, 12 ) ref -> r8 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 -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp2 [V07,T07] ( 2, 4 ) ref -> r2 class-hnd single-def "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T09] ( 2, 4 ) ref -> r2 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 -> r2
+; V10 tmp5 [V10,T11] ( 4, 3.50) ref -> r2
;* 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 -> r2 class-hnd exact "NewObj constructor temp" <<unknown class>> ; V13 tmp8 [V13,T05] ( 5, 5 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -26,7 +26,7 @@ ;* 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] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V18 tmp13 [V18,T08] ( 2, 4 ) struct (24) [sp+0x00] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V18 tmp13 [V18,T10] ( 2, 4 ) struct (24) [sp+0x00] 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 -> r4 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..004)" @@ -37,17 +37,17 @@ ;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V27 tmp22 [V27,T15] ( 2, 0 ) ref -> r0 "argument with side effect" ; V28 tmp23 [V28,T16] ( 2, 0 ) ref -> r1 "argument with side effect"
-; V29 cse0 [V29,T04] ( 3, 6 ) int -> r5 "CSE - aggressive" -; V30 cse1 [V30,T10] ( 6, 3 ) ref -> r1 multi-def "CSE - aggressive" -; V31 cse2 [V31,T11] ( 4, 3 ) int -> r6 "CSE - aggressive"
+; V29 cse0 [V29,T07] ( 2, 5 ) int -> r6 hoist "CSE - aggressive" +; V30 cse1 [V30,T08] ( 2, 5 ) int -> r7 hoist "CSE - aggressive" +; V31 cse2 [V31,T04] ( 3, 6 ) int -> r5 "CSE - aggressive"
; ; Lcl frame size = 52 G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr}
sub sp, 52
- add r11, sp, 64 - sub r3, r11, 64
+ add r11, sp, 72 + sub r3, r11, 72
movs r4, 6 movs r1, 0 movs r2, 0 @@ -93,16 +93,15 @@ G_M64326_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bne SHORT G_M64326_IG04 ;; size=84 bbWeight=1 PerfScore 27.00 G_M64326_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0] - ;; size=22 bbWeight=0.50 PerfScore 3.50
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M64326_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz mov r0, r5 ; gcrRegs +[r0] @@ -120,20 +119,19 @@ G_M64326_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b bne SHORT G_M64326_IG06 ;; size=38 bbWeight=1 PerfScore 12.00 G_M64326_IG05: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0] - ;; size=22 bbWeight=0.50 PerfScore 3.50
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M64326_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- movw r6, 0xd1ff - movt r6, 0xd1ff - ldr r2, [r6]
+ movw r0, 0xd1ff + movt r0, 0xd1ff + ldr r2, [r0]
; gcrRegs +[r2] cmp r2, 0 bne SHORT G_M64326_IG08 @@ -148,7 +146,9 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; gcrRegs +[r0] mov r2, r0 ; gcrRegs +[r2]
- ldr r1, [r6-0x34]
+ movw r1, 0xd1ff + movt r1, 0xd1ff + ldr r1, [r1]
; gcrRegs +[r1] cmp r1, 0 beq G_M64326_IG11 @@ -163,14 +163,15 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} movw r1, 0xd1ff movt r1, 0xd1ff str r1, [r2+0x0C]
- mov r0, r6
+ movw r0, 0xd1ff + movt r0, 0xd1ff
mov r1, r2 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1]
- ;; size=66 bbWeight=0.50 PerfScore 10.50
+ ;; size=78 bbWeight=0.50 PerfScore 12.00
G_M64326_IG08: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0000 {}, byref, isz mov r0, r4 ; gcrRegs +[r0] @@ -227,17 +228,20 @@ G_M64326_IG08: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0000 {} ; gcrRegs -[r2] cmp r0, 0 beq SHORT G_M64326_IG10
- ;; size=118 bbWeight=1 PerfScore 41.00
+ movw r6, 0xd1ff + movt r6, 0xd1ff + movw r7, 0xd1ff + movt r7, 0xd1ff + ;; size=134 bbWeight=1 PerfScore 45.00
G_M64326_IG09: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff
+ mov r0, r6
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0]
- mov r6, r0 - ; gcrRegs +[r6] - adds r0, r6, 4
+ mov r8, r0 + ; gcrRegs +[r8] + add r0, r8, 4
; gcrRegs -[r0] ; byrRegs +[r0] add r1, sp, 40 @@ -248,9 +252,8 @@ G_M64326_IG09: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_BYREF
- movw r0, 0xd1ff
+ mov r0, r7
; byrRegs -[r0]
- movt r0, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST @@ -261,12 +264,12 @@ G_M64326_IG09: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre adds r0, r2, 4 ; gcrRegs -[r0] ; byrRegs +[r0]
- mov r1, r6
+ mov r1, r8
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r6]
+ ; gcrRegs -[r1 r8]
; byrRegs -[r0] movw r1, 0xd1ff movt r1, 0xd1ff @@ -293,11 +296,11 @@ G_M64326_IG09: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // <unknown method> cmp r0, 0 bne SHORT G_M64326_IG09
- ;; size=144 bbWeight=4 PerfScore 188.00
+ ;; size=134 bbWeight=4 PerfScore 180.00
G_M64326_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4] add sp, 52
- pop {r4,r5,r6,r11,pc}
+ pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00 G_M64326_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movw r3, 0xd1ff @@ -345,7 +348,7 @@ G_M64326_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=86 bbWeight=0 PerfScore 0.00
-Total bytes of code 642, prolog size 26, PerfScore 303.50, instruction count 213, allocated bytes for code 642 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
+Total bytes of code 672, prolog size 26, PerfScore 302.00, instruction count 220, allocated bytes for code 672 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
; ============================================================ Unwind Info: @@ -357,7 +360,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 321 (0x00141) Actual length = 642 (0x000282)
+ Function Length : 336 (0x00150) Actual length = 672 (0x0002a0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -366,6 +369,6 @@ Unwind Info: ---- Unwind codes ---- ---- Epilog start at index 0 ---- 0D add sp, sp, #52 ; opsize 16
- A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
+ A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end

+32 (+6.61%) : 8748.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 ( 4) 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 -> r3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> lr "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> r4 "field V01.array (fldOffset=0x0)" P-INDEP ; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> r1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> lr "field V03._index (fldOffset=0x4)" P-INDEP -; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r12 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r12 "field V03._index (fldOffset=0x4)" P-INDEP +; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x4)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> r3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> lr "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x8)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [sp+0x04] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r6 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r5 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> r1 single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> r1 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x4)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> r3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> lr "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym" ; V29 cse0 [V29,T07] ( 3, 5 ) int -> r2 "CSE - aggressive" ; @@ -96,95 +96,74 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=00000002 {V00}, gcrefRegs=0000 {}, ldr r2, [r0] blx r3 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; gcr arg pop 0
- str r0, [sp+0x08] // [V02 loc1]
+ mov r3, r0 + ; gcrRegs +[r3] + str r3, [sp+0x08]
; GC ptr vars +{V02}
- ;; size=60 bbWeight=0.50 PerfScore 9.50 -G_M10501_IG06: ; bbWeight=0.50, gcVars=00000202 {V00 V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=62 bbWeight=0.50 PerfScore 10.00 +G_M10501_IG06: ; bbWeight=0.50, gcVars=00000202 {V00 V02}, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- ldr r5, [sp+0x0C] // [V00 this] - ; gcrRegs +[r5] - ldr r1, [r5+0x38]
+ ldr r0, [sp+0x0C] // [V00 this] + ; gcrRegs +[r0] + ldr r1, [r0+0x38]
; gcrRegs +[r1] ldr r2, [r1+0x04]
- movs r3, 0
mov lr, 0
+ mov r12, 0
cmp r2, 0
- ble SHORT G_M10501_IG11 - ;; size=16 bbWeight=0.50 PerfScore 3.50 -G_M10501_IG07: ; bbWeight=4, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz - mov r12, 12 - mul r3, r3, r12 - adds r3, 8 - adds r3, r1, r3 - ; byrRegs +[r3] - ldr r12, [r3] - ; gcrRegs +[r12] - ldr r3, [r3+0x08] - ; gcrRegs +[r3] - ; byrRegs -[r3] - ldr r6, [r5+0x2C]
+ ble G_M10501_IG17 + ;; size=20 bbWeight=0.50 PerfScore 3.50 +G_M10501_IG07: ; bbWeight=4, gcrefRegs=001B {r0 r1 r3 r4}, byrefRegs=0000 {}, byref, isz + movs r5, 12 + mul lr, lr, r5 + add lr, lr, 8 + add lr, r1 + ; byrRegs +[lr] + ldr r5, [lr] + ; gcrRegs +[r5] + ldr lr, [lr+0x08] + ; gcrRegs +[lr] + ; byrRegs -[lr] + ldr r6, [r0+0x2C]
; gcrRegs +[r6]
- cmp r12, r6
+ cmp r5, r6
beq SHORT G_M10501_IG09
- ;; size=24 bbWeight=4 PerfScore 36.00 -G_M10501_IG08: ; bbWeight=2, gcrefRegs=103A {r1 r3 r4 r5 r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=26 bbWeight=4 PerfScore 36.00 +G_M10501_IG08: ; bbWeight=2, gcrefRegs=403B {r0 r1 r3 r4 r5 lr}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
- ldr r6, [r5+0x28]
+ ldr r6, [r0+0x28]
; gcrRegs +[r6]
- cmp r12, r6 - bne SHORT G_M10501_IG10 - ;; size=6 bbWeight=2 PerfScore 6.00 -G_M10501_IG09: ; bbWeight=2, gcrefRegs=002A {r1 r3 r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4 r6 r12] - mov r4, r3 - ; gcrRegs +[r4] - ldr r3, [r4+0x04] - ; gcrRegs -[r3] - cmp r3, 0
+ cmp r5, r6
bne SHORT G_M10501_IG12
- ;; size=8 bbWeight=2 PerfScore 8.00 -G_M10501_IG10: ; bbWeight=4, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz - add r3, lr, 1 - mov lr, r3 - cmp r2, lr - bgt SHORT G_M10501_IG07 - ;; size=10 bbWeight=4 PerfScore 16.00 -G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=2 PerfScore 6.00 +G_M10501_IG09: ; bbWeight=2, gcrefRegs=400B {r0 r1 r3 lr}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4-r6] + mov r4, lr + ; gcrRegs +[r4] + ldr lr, [r4+0x04] + ; gcrRegs -[lr] + cmp lr, 0 + beq SHORT G_M10501_IG12 + ;; size=12 bbWeight=2 PerfScore 8.00 +G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=0019 {r0 r3 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
- mov r0, r5 - ; gcrRegs +[r0] - mov r1, r4 - ; gcrRegs +[r1] - ldr r2, [sp+0x08] // [V02 loc1] - ; gcrRegs +[r2] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ; GC ptr vars -{V00} - blx r3 // <unknown method> - ; gcrRegs -[r0-r2 r4-r5] - ; gcr arg pop 0 - b SHORT G_M10501_IG17 - ;; size=20 bbWeight=0.50 PerfScore 4.00 -G_M10501_IG12: ; bbWeight=0.50, gcVars=00000202 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5] - ; GC ptr vars +{V00} - ldrb r1, [r5+0x22] - ldrb r2, [r5+0x24]
+ ldrb r1, [r0+0x22] + ldrb r2, [r0+0x24]
orrs r1, r2 cmp r1, 0
- beq SHORT G_M10501_IG13 - ldr r0, [r5+0x04] - ; gcrRegs +[r0]
+ beq SHORT G_M10501_IG11 + ldr r0, [r0+0x04] + ldr r5, [sp+0x0C] // [V00 this] + ; gcrRegs +[r5]
ldr r1, [r5+0x0C] ; gcrRegs +[r1]
- ldr r2, [sp+0x08] // [V02 loc1]
+ mov r2, r3
; gcrRegs +[r2]
- movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // 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 -[r0-r2]
+ movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // 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 -[r0-r3]
; gcr arg pop 0 ldr r0, [r5+0x08] ; gcrRegs +[r0] @@ -198,28 +177,32 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=00000202 {V00 V02}, gcrefRegs=0030 blx r3 // 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 -[r0-r2] ; gcr arg pop 0
- ;; size=50 bbWeight=0.50 PerfScore 9.50 -G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=54 bbWeight=0.50 PerfScore 10.00 +G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r5] + ldr r5, [sp+0x0C] // [V00 this] + ; gcrRegs +[r5]
ldrb r2, [r5+0x23] ldrb r1, [r5+0x24] orrs r2, r1 cmp r2, 0
- beq SHORT G_M10501_IG11 - ldr r2, [r5+0x3C]
+ mov r0, r5 + ; gcrRegs +[r0] + beq SHORT G_M10501_IG17 + ldr r2, [r0+0x3C]
; gcrRegs +[r2]
- ldr r1, [r5+0x14]
+ ldr r1, [r0+0x14]
; gcrRegs +[r1] mov r0, r4
- ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // 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 -[r1-r2]
+ movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // 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 -[r1-r2 r5]
; gcr arg pop 0 str r0, [sp+0x04] // [V21 tmp14] ; GC ptr vars +{V21}
- mov r0, r5
+ ldr r0, [sp+0x0C] // [V00 this]
ldr r1, [sp+0x04] // [V21 tmp14] ; gcrRegs +[r1] movw r3, 0xd1ff @@ -228,35 +211,53 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- mov r6, r0 - ; gcrRegs +[r6] - ldr r2, [r6+0x04]
+ mov r5, r0 + ; gcrRegs +[r5] + ldr r2, [r5+0x04]
cmp r2, 0
- beq SHORT G_M10501_IG11 - ;; size=58 bbWeight=0.50 PerfScore 11.50 -G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] - ldrb r2, [r5+0x23]
+ ldr r0, [sp+0x0C] // [V00 this] + beq SHORT G_M10501_IG17 + ldr r3, [sp+0x08] // [V02 loc1] + ; gcrRegs +[r3] + b SHORT G_M10501_IG14 + ;; size=70 bbWeight=0.50 PerfScore 14.00 +G_M10501_IG12: ; bbWeight=4, gcVars=00000202 {V00 V02}, gcrefRegs=001B {r0 r1 r3 r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r5] +[r1] + ; GC ptr vars -{V21} + add lr, r12, 1 + mov r12, lr + cmp r2, r12 + bgt SHORT G_M10501_IG07 + ;; size=10 bbWeight=4 PerfScore 16.00 +G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=0019 {r0 r3 r4}, byrefRegs=0000 {}, byref, isz
...

realworld.run.linux.arm.checked.mch

-32 (-29.63%) : 18872.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 -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 7, 5 ) int -> r1 single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> r2 -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> registers
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T03] ( 6, 4.50) int -> r1 single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> r2 +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> r3 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 4, 4.54) byref -> lr hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> r3 "CSE - aggressive" +; V06 cse1 [V06,T05] ( 2, 4.50) byref -> r0 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,69 +34,44 @@ G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0] mov r2, r1
- cmp r1, 0 - blt SHORT G_M3357_IG10 - add lr, r0, 8 - ; byrRegs +[lr] - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ adds r0, 8
; gcrRegs -[r0]
- lsls r0, r2, 1 - ldrh r0, [lr+r0] - cmp r0, 32
+ ; byrRegs +[r0] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r2, r3 + bhs SHORT G_M3357_IG13 + lsl lr, r2, 1 + ldrh lr, [r0+lr] + cmp lr, 32
beq SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 15.84 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz - cmp r0, 9 - bne SHORT G_M3357_IG15 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz
+ ;; size=18 bbWeight=4 PerfScore 24.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 9 + bne SHORT G_M3357_IG11 + ;; size=6 bbWeight=2 PerfScore 4.00 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
adds r2, r2, 1 cmp r3, r2 bgt SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 11.88 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - b SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r2, r3 - bhs SHORT G_M3357_IG17 - add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r2, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32 - beq SHORT G_M3357_IG12 - ;; size=22 bbWeight=0.04 PerfScore 0.28 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp lr, 9 - bne SHORT G_M3357_IG15 - ;; size=6 bbWeight=0.02 PerfScore 0.04 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - adds r2, r2, 1 - cmp r3, r2 - bgt SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.04 PerfScore 0.12 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0]
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
subs r0, r3, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
subs r0, r2, r1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -104,7 +79,7 @@ G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 108, prolog size 6, PerfScore 42.62, instruction count 41, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 76, prolog size 6, PerfScore 49.00, instruction count 28, allocated bytes for code 76 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-1.32%) : 14199.dasm - FSharp.Compiler.TypedTreeOps:liftAllBefore(int[]):int (FullOpts)

@@ -112,7 +112,7 @@ G_M38681_IG04: ; bbWeight=4, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs= ; gcr arg pop 0 mov r4, r0 cmp r4, r9
- bhs SHORT G_M38681_IG07
+ bhs SHORT G_M38681_IG09
add r0, r5, 8 ; byrRegs +[r0] lsls r3, r4, 2 @@ -161,31 +161,14 @@ G_M38681_IG05: ; bbWeight=32, gcrefRegs=05E4 {r2 r5 r6 r7 r8 r10}, byrefR ; gcrRegs -[r0 r2] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M38681_IG08
+ beq SHORT G_M38681_IG10
;; size=38 bbWeight=32 PerfScore 448.00
-G_M38681_IG06: ; bbWeight=16, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz - ldr r0, [sp+0x10] // [V18 tmp4] - adds r0, r0, 1 - mov r3, r0 - ldr r2, [sp+0x04] // [V20 tmp6] - ; gcrRegs +[r2] - ldr lr, [sp+0x0C] // [V19 tmp5] - b SHORT G_M38681_IG05 - ;; size=14 bbWeight=16 PerfScore 96.00 -G_M38681_IG07: ; bbWeight=0, gcVars=00000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r2 r5-r8 r10]
+G_M38681_IG06: ; bbWeight=4, gcVars=00000100 {V04}, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V20}
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M38681_IG08: ; bbWeight=4, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r5-r8 r10]
cmp r6, 0
- bne SHORT G_M38681_IG10
+ bne SHORT G_M38681_IG11
;; size=4 bbWeight=4 PerfScore 8.00
-G_M38681_IG09: ; bbWeight=2, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M38681_IG07: ; bbWeight=2, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 {}, byref
; gcrRegs -[r6-r7] movw r0, 0xd1ff movt r0, 0xd1ff @@ -202,10 +185,33 @@ G_M38681_IG09: ; bbWeight=2, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 { str r0, [r1+0x04] mov r6, r1 ; gcrRegs +[r6]
- b SHORT G_M38681_IG11 - ;; size=30 bbWeight=2 PerfScore 22.00 -G_M38681_IG10: ; bbWeight=2, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref - ; gcrRegs -[r1] +[r7]
+ ;; size=28 bbWeight=2 PerfScore 20.00 +G_M38681_IG08: ; bbWeight=4, gcrefRegs=0562 {r1 r5 r6 r8 r10}, byrefRegs=0000 {}, byref, isz + mov r7, r1 + ; gcrRegs +[r7] + b SHORT G_M38681_IG03 + ;; size=4 bbWeight=4 PerfScore 8.00 +G_M38681_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1 r5-r8 r10] + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M38681_IG10: ; bbWeight=16, gcVars=00000102 {V04 V20}, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r5-r8 r10] + ; GC ptr vars +{V01 V20} + ldr r0, [sp+0x10] // [V18 tmp4] + adds r0, r0, 1 + mov r3, r0 + ldr r2, [sp+0x04] // [V20 tmp6] + ; gcrRegs +[r2] + ldr lr, [sp+0x0C] // [V19 tmp5] + b SHORT G_M38681_IG05 + ;; size=14 bbWeight=16 PerfScore 96.00 +G_M38681_IG11: ; bbWeight=2, gcVars=00000100 {V04}, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r2] + ; GC ptr vars -{V01 V20}
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -226,14 +232,10 @@ G_M38681_IG10: ; bbWeight=2, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs= blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r7] ; byrRegs -[r0]
- ;; size=38 bbWeight=2 PerfScore 26.00 -G_M38681_IG11: ; bbWeight=4, gcrefRegs=0562 {r1 r5 r6 r8 r10}, byrefRegs=0000 {}, byref, isz - mov r7, r1 - ; gcrRegs +[r7] - b SHORT G_M38681_IG03 - ;; size=4 bbWeight=4 PerfScore 8.00
+ b SHORT G_M38681_IG08 + ;; size=40 bbWeight=2 PerfScore 28.00
G_M38681_IG12: ; bbWeight=1, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r1 r5 r8]
+ ; gcrRegs -[r1 r5 r8] +[r7]
mov r0, r10 ; gcrRegs +[r0] movw r4, 0xd1ff @@ -290,7 +292,7 @@ G_M38681_IG18: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0004 {r2}, ldr r0, [r2+0x04] ; gcrRegs +[r0] ldr lr, [r2+0x08]
- mov r10, lr
+ mov r6, lr
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M38681_IG19: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r2] @@ -300,11 +302,11 @@ G_M38681_IG19: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre beq SHORT G_M38681_IG22 ldr r0, [r0+0x08] ; gcrRegs -[r0]
- cmp r0, r10
+ cmp r0, r6
ble SHORT G_M38681_IG21 ;; size=12 bbWeight=4 PerfScore 24.00 G_M38681_IG20: ; bbWeight=2, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- mov r10, r0
+ mov r6, r0
;; size=2 bbWeight=2 PerfScore 2.00 G_M38681_IG21: ; bbWeight=4, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz mov r0, r3 @@ -313,8 +315,8 @@ G_M38681_IG21: ; bbWeight=4, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre ;; size=4 bbWeight=4 PerfScore 8.00 G_M38681_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r0 r3]
- add r0, r10, 1 - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ adds r0, r6, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M38681_IG23: ; bbWeight=0.50, epilog, nogc, extend add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} @@ -326,20 +328,18 @@ G_M38681_IG24: ; bbWeight=0, gcVars=00000100 {V04}, gcrefRegs=0000 {}, by str r3, [sp] ;; size=10 bbWeight=0 PerfScore 0.00 G_M38681_IG25: ; bbWeight=0, gcVars=00000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r10, [r11-0x30] // [V04 loc3] - ; gcrRegs +[r10] - cmp r10, 0 - beq SHORT G_M38681_IG27 - mov r0, r10
+ ldr r0, [r11-0x30] // [V04 loc3]
; gcrRegs +[r0]
+ cmp r0, 0 + beq SHORT G_M38681_IG27
movw r4, 0xd1ff movt r4, 0xd1ff ldr r3, [r4] ; GC ptr vars -{V04} blx r3 // <unknown method>
- ; gcrRegs -[r0 r10]
+ ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M38681_IG26: ; bbWeight=0, funclet epilog, nogc, extend pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00 @@ -347,7 +347,7 @@ G_M38681_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-Total bytes of code 456, prolog size 20, PerfScore 854.50, instruction count 166, allocated bytes for code 456 (MethodHash=d09b68e6) for method FSharp.Compiler.TypedTreeOps:liftAllBefore(int[]):int (FullOpts)
+Total bytes of code 450, prolog size 20, PerfScore 854.50, instruction count 165, allocated bytes for code 450 (MethodHash=d09b68e6) for method FSharp.Compiler.TypedTreeOps:liftAllBefore(int[]):int (FullOpts)
; ============================================================ Unwind Info: @@ -359,7 +359,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 207 (0x000cf) Actual length = 414 (0x00019e)
+ Function Length : 206 (0x000ce) Actual length = 412 (0x00019c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -385,7 +385,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ Function Length : 19 (0x00013) Actual length = 38 (0x000026)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-1.24%) : 23048.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)

@@ -10,14 +10,14 @@ ; ; V00 this [V00,T27] ( 9, 227 ) ref -> [sp+0x44] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T38] ( 8, 82 ) ref -> [sp+0x40] class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
-; V02 arg2 [V02,T36] ( 12, 132.18) ref -> [sp+0x3C] class-hnd single-def <System.__Canon[]>
+; V02 arg2 [V02,T36] ( 12, 132.18) ref -> r6 class-hnd single-def <System.__Canon[]>
; V03 arg3 [V03 ] ( 5, 6 ) struct ( 4) [sp+0xB4] ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V04 arg4 [V04,T41] ( 5, 64 ) int -> [sp+0xB8] single-def
-; V05 loc0 [V05,T01] ( 41,1378 ) ref -> [sp+0x38] class-hnd EH-live spill-single-def <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]> -; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [sp+0x34] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V05 loc0 [V05,T01] ( 41,1378 ) ref -> [sp+0x3C] class-hnd EH-live spill-single-def <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]> +; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [sp+0x38] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc2 [V07,T62] ( 8, 28 ) int -> [sp+0x80] spill-single-def ; V08 loc3 [V08,T58] ( 9, 33 ) int -> [sp+0x7C]
-; V09 loc4 [V09,T63] ( 6, 28 ) ref -> [sp+0x30] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V09 loc4 [V09,T63] ( 6, 44 ) ref -> [sp+0x34] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V10 loc5 [V10,T68] ( 2, 16 ) ref -> r4 class-hnd <System.__Canon> ; V11 loc6 [V11,T35] ( 4, 112 ) ubyte -> [sp+0x78] ; V12 loc7 [V12 ] ( 7, 224 ) struct ( 8) [sp+0x70] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -26,9 +26,9 @@ ; V15 loc10 [V15,T20] ( 6, 354.56) ref -> r9 class-hnd exact <<unknown class>> ; V16 loc11 [V16,T21] ( 5, 352 ) int -> [sp+0x68] spill-single-def ; V17 loc12 [V17,T00] ( 22,1826.56) int -> [sp+0x64]
-; V18 loc13 [V18,T12] ( 10, 640 ) ref -> [sp+0x2C] class-hnd <System.__Canon>
+; V18 loc13 [V18,T12] ( 10, 640 ) ref -> [sp+0x30] class-hnd <System.__Canon>
; V19 loc14 [V19,T11] ( 12, 642.56) int -> [sp+0x60]
-; V20 loc15 [V20,T39] ( 4, 80 ) ref -> [sp+0x28] class-hnd <System.__Canon>
+; V20 loc15 [V20,T39] ( 4, 80 ) ref -> [sp+0x2C] class-hnd <System.__Canon>
; V21 loc16 [V21,T40] ( 13, 74.24) int -> r2 ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V23 tmp1 [V23 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -37,7 +37,7 @@ ;* V26 tmp4 [V26 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V27 tmp5 [V27 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V28 tmp6 [V28 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V29 tmp7 [V29,T72] ( 4, 12 ) int -> r6 "VirtualCall with runtime lookup"
+; V29 tmp7 [V29,T72] ( 4, 12 ) int -> r4 "VirtualCall with runtime lookup"
;* V30 tmp8 [V30 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V31 tmp9 [V31,T43] ( 4, 48 ) int -> r4 "VirtualCall with runtime lookup" ;* V32 tmp10 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]> @@ -66,16 +66,16 @@ ; V55 tmp33 [V55,T02] ( 6, 768 ) byref -> r3 "Inlining Arg" ; V56 tmp34 [V56,T15] ( 8, 512 ) int -> lr "Inline stloc first use temp" ;* V57 tmp35 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
-; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> r1 "Inlining Arg" -; V59 tmp37 [V59,T60] ( 4, 32 ) int -> r0 "Inline stloc first use temp"
+; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> r0 "Inlining Arg" +; V59 tmp37 [V59,T60] ( 4, 32 ) int -> r2 "Inline stloc first use temp"
; V60 tmp38 [V60,T77] ( 5, 6 ) ref -> [sp+0xB4] do-not-enreg[] single-def "field V03.array (fldOffset=0x0)" P-DEP ; V61 tmp39 [V61 ] ( 6, 192 ) ref -> [sp+0x70] do-not-enreg[X] addr-exposed "field V12.AssemblySymbol (fldOffset=0x0)" P-DEP ; V62 tmp40 [V62 ] ( 2, 64 ) int -> [sp+0x74] do-not-enreg[X] addr-exposed "field V12.DefinitionIndex (fldOffset=0x4)" P-DEP ; V63 tmp41 [V63,T69] ( 2, 16 ) ref -> r4 "field V32.AssemblySymbol (fldOffset=0x0)" P-INDEP ; V64 tmp42 [V64,T71] ( 2, 16 ) int -> [sp+0x5C] spill-single-def "field V32.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V65 tmp43 [V65,T24] ( 4, 256 ) ref -> [sp+0x24] "field V42.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V65 tmp43 [V65,T24] ( 4, 256 ) ref -> [sp+0x28] "field V42.AssemblySymbol (fldOffset=0x0)" P-INDEP
; V66 tmp44 [V66,T25] ( 4, 256 ) int -> r8 "field V42.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V67 tmp45 [V67,T70] ( 2, 16 ) ref -> [sp+0x20] spill-single-def "field V45.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V67 tmp45 [V67,T70] ( 2, 16 ) ref -> [sp+0x24] spill-single-def "field V45.AssemblySymbol (fldOffset=0x0)" P-INDEP
;* V68 tmp46 [V68,T79] ( 0, 0 ) int -> zero-ref "field V45.DefinitionIndex (fldOffset=0x4)" P-INDEP ;* V69 tmp47 [V69 ] ( 0, 0 ) ref -> zero-ref "field V49.AssemblySymbol (fldOffset=0x0)" P-INDEP ;* V70 tmp48 [V70 ] ( 0, 0 ) int -> zero-ref "field V49.DefinitionIndex (fldOffset=0x4)" P-INDEP @@ -83,7 +83,7 @@ ;* V72 tmp50 [V72 ] ( 0, 0 ) int -> zero-ref "field V54.DefinitionIndex (fldOffset=0x4)" P-INDEP ;* V73 tmp51 [V73 ] ( 0, 0 ) ref -> zero-ref "field V57.AssemblySymbol (fldOffset=0x0)" P-INDEP ;* V74 tmp52 [V74 ] ( 0, 0 ) int -> zero-ref "field V57.DefinitionIndex (fldOffset=0x4)" P-INDEP
-; V75 tmp53 [V75,T73] ( 3, 12 ) ref -> r6 "argument with side effect"
+; V75 tmp53 [V75,T73] ( 3, 12 ) ref -> r4 "argument with side effect"
; V76 tmp54 [V76,T74] ( 3, 12 ) ref -> r0 "argument with side effect" ; V77 tmp55 [V77,T78] ( 2, 8 ) ref -> r0 "argument with side effect" ; V78 tmp56 [V78,T46] ( 3, 48 ) ref -> r0 "arr expr" @@ -96,7 +96,7 @@ ; V85 tmp63 [V85,T06] ( 6, 768 ) ref -> r3 "argument with side effect" ; V86 tmp64 [V86,T07] ( 6, 768 ) ref -> registers "arr expr" ; V87 tmp65 [V87,T10] ( 6, 768 ) int -> lr "index expr"
-; V88 tmp66 [V88,T08] ( 6, 768 ) byref -> [sp+0x1C] "BlockOp address local"
+; V88 tmp66 [V88,T08] ( 6, 768 ) byref -> [sp+0x20] "BlockOp address local"
; V89 tmp67 [V89,T09] ( 6, 768 ) ref -> r12 "arr expr" ; V90 tmp68 [V90,T48] ( 3, 48 ) ref -> r0 "argument with side effect" ; V91 tmp69 [V91,T49] ( 3, 48 ) ref -> r0 "arr expr" @@ -107,7 +107,7 @@ ; V96 tmp74 [V96,T88] ( 2, 4 ) ref -> r0 single-def "argument with side effect" ; V97 tmp75 [V97,T89] ( 2, 4 ) ref -> r0 single-def "argument with side effect" ; V98 PSPSym [V98,T95] ( 1, 1 ) int -> [sp+0x8C] do-not-enreg[V] "PSPSym"
-; V99 cse0 [V99,T84] ( 8, 5 ) byref -> [sp+0x18] multi-def "CSE - conservative"
+; V99 cse0 [V99,T84] ( 8, 5 ) byref -> [sp+0x1C] multi-def "CSE - conservative"
;* V100 cse1 [V100,T96] ( 0, 0 ) int -> zero-ref "CSE - moderate" ;* V101 cse2 [V101,T56] ( 0, 0 ) int -> zero-ref hoist multi-def "CSE - moderate" ;* V102 cse3 [V102,T80] ( 0, 0 ) int -> zero-ref "CSE - moderate" @@ -117,19 +117,19 @@ ; V106 cse7 [V106,T57] ( 3, 39.60) ref -> r1 "CSE - conservative" ; V107 cse8 [V107,T23] ( 6, 256 ) int -> [sp+0x58] "CSE - moderate" ; V108 cse9 [V108,T30] ( 6, 170 ) int -> [sp+0x54] spill-single-def "CSE - moderate"
-; V109 cse10 [V109,T17] ( 11, 430 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V109 cse10 [V109,T17] ( 11, 430 ) byref -> [sp+0x18] spill-single-def "CSE - moderate"
; V110 cse11 [V110,T37] ( 3, 96 ) int -> [sp+0x50] "CSE - moderate" ; V111 cse12 [V111,T19] ( 3, 380.16) int -> r1 "CSE - moderate"
-; V112 cse13 [V112,T18] ( 3, 380.16) ref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V112 cse13 [V112,T18] ( 3, 380.16) ref -> [sp+0x14] spill-single-def "CSE - moderate"
; V113 cse14 [V113,T66] ( 3, 24 ) int -> r1 "CSE - conservative"
-; V114 cse15 [V114,T64] ( 3, 24 ) ref -> [sp+0x0C] spill-single-def "CSE - conservative"
+; V114 cse15 [V114,T64] ( 3, 24 ) ref -> [sp+0x10] spill-single-def "CSE - conservative"
; V115 cse16 [V115,T67] ( 3, 24 ) int -> r1 "CSE - conservative"
-; V116 cse17 [V116,T65] ( 3, 24 ) ref -> [sp+0x08] spill-single-def "CSE - conservative"
+; V116 cse17 [V116,T65] ( 3, 24 ) ref -> [sp+0x0C] spill-single-def "CSE - conservative"
; V117 cse18 [V117,T92] ( 3, 3.84) int -> r1 "CSE - conservative" ; V118 cse19 [V118,T91] ( 3, 3.84) ref -> r2 "CSE - conservative" ; V119 cse20 [V119,T34] ( 9, 46 ) int -> [sp+0x4C] multi-def "CSE - moderate" ; V120 cse21 [V120,T16] ( 4, 506.88) int -> r8 "CSE - moderate"
-; V121 cse22 [V121,T33] ( 5, 152 ) byref -> [sp+0x04] "CSE - moderate"
+; V121 cse22 [V121,T33] ( 5, 152 ) byref -> [sp+0x08] "CSE - moderate"
; V122 cse23 [V122,T55] ( 5, 42.08) int -> [sp+0x48] spill-single-def "CSE - moderate" ; V123 rat0 [V123,T85] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V124 rat1 [V124,T86] ( 3, 4 ) int -> r1 "runtime lookup" @@ -138,7 +138,7 @@ ;* V127 rat4 [V127,T83] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ;* V128 rat5 [V128,T90] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V129 rat6 [V129,T75] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V130 rat7 [V130,T76] ( 3, 11.20) int -> r0 "fgMakeTemp is creating a new local variable"
+; V130 rat7 [V130,T76] ( 3, 11.20) int -> r4 "fgMakeTemp is creating a new local variable"
; V131 rat8 [V131,T53] ( 3, 44.80) int -> r4 "fgMakeTemp is creating a new local variable" ;* V132 rat9 [V132,T61] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V133 rat10 [V133,T54] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" @@ -151,7 +151,7 @@ ; V140 rat17 [V140,T98] ( 3, 0 ) int -> r9 "Spilling to split statement for tree" ; V141 rat18 [V141,T99] ( 3, 0 ) int -> r1 "runtime lookup" ; V142 rat19 [V142,T100] ( 3, 0 ) int -> r1 "fgMakeTemp is creating a new local variable"
-; TEMP_01 int -> [r11-0xAC]
+; TEMP_01 int -> [r11-0xA8]
; ; Lcl frame size = 144 @@ -168,15 +168,14 @@ G_M32652_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r0, [r11-0x28] str r0, [sp+0x44] // [V00 this] ; GC ptr vars +{V00}
- str r2, [sp+0x3C] // [V02 arg2] - ; GC ptr vars +{V02}
mov r5, r0 ; gcrRegs +[r5] mov r7, r1 ; gcrRegs +[r7]
- ldr r8, [sp+0xB8] // [V04 arg4] - ;; size=38 bbWeight=1 PerfScore 15.00 -G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000001008000000 {V00 V02}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r6, r2 + ; gcrRegs +[r6] + ;; size=34 bbWeight=1 PerfScore 14.00 +G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000000008000000 {V00}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r9, [r5] mov r0, r9 ldr r1, [r0+0x24] @@ -185,10 +184,10 @@ G_M32652_IG02: ; bbWeight=1, gcVars=00000000000000000000001008000000 {V00 cmp r1, 0 beq SHORT G_M32652_IG04 ;; size=16 bbWeight=1 PerfScore 7.00
-G_M32652_IG03: ; bbWeight=0.80, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG03: ; bbWeight=0.80, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
b SHORT G_M32652_IG05 ;; size=2 bbWeight=0.80 PerfScore 0.80
-G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff @@ -197,7 +196,7 @@ G_M32652_IG04: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcr arg pop 0 mov r1, r0 ;; size=20 bbWeight=0.20 PerfScore 1.20
-G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M32652_IG05: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
mov r0, r1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -215,9 +214,9 @@ G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ldr r2, [r0] blx r3 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; gcr arg pop 0
- str r0, [sp+0x38] // [V05 loc0]
+ str r0, [sp+0x3C] // [V05 loc0]
; GC ptr vars +{V05}
- str r4, [sp+0x18] // [V99 cse0]
+ str r4, [sp+0x1C] // [V99 cse0]
; GC ptr vars +{V99} ldr r0, [r4+0x08] movw r2, 0xd1ff @@ -227,10 +226,10 @@ G_M32652_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b blx r2 // Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this ; byrRegs -[r4] ; gcr arg pop 0
- str r0, [sp+0x34] // [V06 loc1]
+ str r0, [sp+0x38] // [V06 loc1]
; GC ptr vars +{V06} ;; size=52 bbWeight=1 PerfScore 20.00
-G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000001008004002 {V00 V02 V05 V06 V99}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000000008004002 {V00 V05 V06 V99}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] ldr r0, [sp+0xB4] // [V60 tmp38] ; gcrRegs +[r0] @@ -240,59 +239,56 @@ G_M32652_IG06: ; bbWeight=1, gcVars=00000000001000000000001008004002 {V00 str r1, [sp+0x80] // [V07 loc2] mov lr, 1 cmp r1, 1
- ble G_M32652_IG77
+ ble G_M32652_IG75
;; size=20 bbWeight=1 PerfScore 8.00
-G_M32652_IG07: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r12, [r7+0x04] str r12, [sp+0x48] // [V122 cse23] cmp lr, r12
- bhs SHORT G_M32652_IG12
+ bhs SHORT G_M32652_IG11
lsl r0, lr, 3 adds r0, 8 ldr r0, [r7+r0] ; gcrRegs +[r0] cmp r0, 0
- bne G_M32652_IG76
+ bne G_M32652_IG74
;; size=26 bbWeight=4 PerfScore 36.00
-G_M32652_IG08: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG08: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r0, [sp+0xB4] // [V60 tmp38] ; gcrRegs +[r0] adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0]
- str r0, [sp+0x14] // [V109 cse10]
+ str r0, [sp+0x18] // [V109 cse10]
; GC ptr vars +{V109} str lr, [sp+0x7C] // [V08 loc3]
- lsl r6, lr, 2 - ldr r6, [r0+r6] - ; gcrRegs +[r6] - mov r0, r6
+ lsl r4, lr, 2 + ldr r4, [r0+r4] + ; gcrRegs +[r4] + mov r0, r4
; gcrRegs +[r0] ; byrRegs -[r0]
- ldr r6, [r6] - ; gcrRegs -[r6] - ldr r6, [r6+0x30] - ldr r6, [r6+0x04] - blx r6 // <unknown method>
+ ldr r4, [r4] + ; gcrRegs -[r4]
...

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

@@ -41,7 +41,7 @@ G_M17353_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre mov r5, r4 ; gcrRegs +[r5] cmp r4, 0
- beq SHORT G_M17353_IG09
+ beq SHORT G_M17353_IG08
;; size=6 bbWeight=1 PerfScore 3.00 G_M17353_IG03: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz mov r0, r5 @@ -70,7 +70,7 @@ G_M17353_IG04: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0
- bne SHORT G_M17353_IG11
+ bne SHORT G_M17353_IG12
mov r6, r5 ; gcrRegs +[r6] add r1, sp, 0 @@ -102,25 +102,29 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} cmp r0, r1 bne SHORT G_M17353_IG03 ;; size=6 bbWeight=2 PerfScore 6.00
-G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
+G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4-r5]
+ b SHORT G_M17353_IG10 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r6] + movs r0, 0 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend + add sp, 20 + pop {r4,r5,r6,r11,pc} + ;; size=6 bbWeight=0.50 PerfScore 1.00 +G_M17353_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r6]
mov r0, r6 ; gcrRegs +[r0] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend
add sp, 20 pop {r4,r5,r6,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M17353_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r6] - movs r0, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend - add sp, 20 - pop {r4,r5,r6,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M17353_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r5]
+G_M17353_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0 r6] +[r5]
mov r1, r5 ; gcrRegs +[r1] movw r3, 0xd1ff @@ -130,7 +134,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byr bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 156, prolog size 20, PerfScore 127.00, instruction count 63, allocated bytes for code 156 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 158, prolog size 20, PerfScore 127.50, instruction count 64, allocated bytes for code 158 (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 : 78 (0x0004e) Actual length = 156 (0x00009c)
+ Function Length : 79 (0x0004f) Actual length = 158 (0x00009e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+10 (+2.87%) : 35537.dasm - Interop+Sys:IsMemberOfGroup(uint):ubyte (FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T09] ( 4, 3.50) int -> r7 single-def ;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[uint]> ;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[uint]>
-; V03 loc2 [V03,T05] ( 5, 13 ) int -> r8
+; V03 loc2 [V03,T05] ( 6, 13.50) int -> r8
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref ptr ; V05 loc4 [V05 ] ( 2, 8 ) byref -> [sp+0x24] must-init pinned ptr ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -112,7 +112,7 @@ G_M60279_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 4.00 G_M60279_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movs r6, 1
- b SHORT G_M60279_IG18
+ b SHORT G_M60279_IG20
;; size=4 bbWeight=0.50 PerfScore 1.00 G_M60279_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r6, sp, 40 @@ -142,12 +142,12 @@ G_M60279_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0042 {r1 r6}, b cmp r8, 0 bge SHORT G_M60279_IG14 cmp r8, -1
- bne SHORT G_M60279_IG17
+ bne SHORT G_M60279_IG19
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] cmp r3, 0
- bne SHORT G_M60279_IG20
+ bne SHORT G_M60279_IG22
;; size=48 bbWeight=4 PerfScore 72.00 G_M60279_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[r6] @@ -162,7 +162,7 @@ G_M60279_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movw r1, 0xd1ff movt r1, 0xd1ff cmp r0, r1
- bne SHORT G_M60279_IG17
+ bne SHORT G_M60279_IG19
lsls r1, r4, 1 movw r0, 0xd1ff movt r0, 0xd1ff @@ -178,8 +178,16 @@ G_M60279_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M60279_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz ; gcrRegs -[r0] cmp r8, r4
- bhi SHORT G_M60279_IG21
+ bhi SHORT G_M60279_IG23 + cmp r8, 0 + bge SHORT G_M60279_IG15 + movs r0, 0 + b SHORT G_M60279_IG16 + ;; size=14 bbWeight=0.50 PerfScore 3.00 +G_M60279_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref
movs r0, 1
+ ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M60279_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -194,20 +202,20 @@ G_M60279_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, b blx r3 // <unknown method> ; byrRegs -[r0 r6] cmp r0, 0
- bge SHORT G_M60279_IG15
+ bge SHORT G_M60279_IG17
movs r6, 0
- b SHORT G_M60279_IG16 - ;; size=44 bbWeight=0.50 PerfScore 9.00 -G_M60279_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b SHORT G_M60279_IG18 + ;; size=38 bbWeight=0.50 PerfScore 7.50 +G_M60279_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r6, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M60279_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M60279_IG18
+G_M60279_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M60279_IG20
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M60279_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60279_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r6, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M60279_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60279_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxtb r0, r6 ldr r3, [sp+0x08] // [V26 PInvokeFrame+0x08] ; byrRegs +[r3] @@ -216,23 +224,23 @@ G_M60279_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r12, 0xd1ff ldr lr, [sp+0x2C] // [V47 GsCookie] cmp r12, lr
- beq SHORT G_M60279_IG19
+ beq SHORT G_M60279_IG21
movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_FAIL_FAST ; byrRegs -[r3] ;; size=32 bbWeight=1 PerfScore 11.00
-G_M60279_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60279_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add sp, 52 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M60279_IG20: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60279_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_POLL_GC b SHORT G_M60279_IG12 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M60279_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60279_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -240,7 +248,7 @@ G_M60279_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 348, prolog size 24, PerfScore 226.50, instruction count 127, allocated bytes for code 348 (MethodHash=606d1488) for method Interop+Sys:IsMemberOfGroup(uint):ubyte (FullOpts)
+Total bytes of code 358, prolog size 24, PerfScore 228.50, instruction count 131, allocated bytes for code 358 (MethodHash=606d1488) for method Interop+Sys:IsMemberOfGroup(uint):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -252,7 +260,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 174 (0x000ae) Actual length = 348 (0x00015c)
+ Function Length : 179 (0x000b3) Actual length = 358 (0x000166)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+18 (+3.59%) : 20354.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 -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
+; V00 arg0 [V00,T12] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
; V01 loc0 [V01 ] ( 2, 2 ) struct (64) [sp+0x98] do-not-enreg[XS] addr-exposed ld-addr-op double-align <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[double]> ; V02 loc1 [V02 ] ( 16, 12 ) struct (136) [sp+0x10] 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,14 +17,14 @@ ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) 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,T21] ( 3, 2.50) int -> r1 "Inline stloc first use temp" -; V10 tmp6 [V10,T18] ( 6, 3.50) ref -> r4 class-hnd "Inline stloc first use temp" <double[]>
+; V09 tmp5 [V09,T20] ( 3, 2.50) int -> r1 "Inline stloc first use temp" +; V10 tmp6 [V10,T17] ( 6, 3.50) ref -> r4 class-hnd "Inline stloc first use temp" <double[]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V16 tmp12 [V16,T16] ( 8, 4 ) int -> r7 "Inline stloc first use temp"
+; V16 tmp12 [V16,T15] ( 8, 4 ) int -> r7 "Inline stloc first use temp"
; V17 tmp13 [V17 ] ( 3, 1.50) struct ( 8) [sp+0x08] 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 ( 8) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.Span`1[double]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]> @@ -35,8 +35,8 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]> ;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]> ;* V26 tmp22 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double]>
-; V27 tmp23 [V27,T12] ( 5, 5 ) int -> r8 "Inlining Arg" -; V28 tmp24 [V28,T23] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
+; V27 tmp23 [V27,T11] ( 5, 5 ) int -> r8 "Inlining Arg" +; V28 tmp24 [V28,T22] ( 2, 2 ) byref -> r1 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 ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]> @@ -46,8 +46,8 @@ ;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V37 tmp33 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V38 tmp34 [V38,T20] ( 3, 3 ) int -> r6 "Inlining Arg" -; V39 tmp35 [V39,T24] ( 2, 2 ) byref -> r5 single-def "Inlining Arg"
+; V38 tmp34 [V38,T19] ( 3, 3 ) int -> r6 "Inlining Arg" +; V39 tmp35 [V39,T23] ( 2, 2 ) byref -> r5 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double[]]> @@ -67,20 +67,20 @@ ; V56 tmp52 [V56,T03] ( 2, 16 ) byref -> r5 "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,T17] ( 4, 4 ) int -> r7 "Inlining Arg"
+; V59 tmp55 [V59,T16] ( 4, 4 ) int -> r7 "Inlining Arg"
;* V60 tmp56 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V61 tmp57 [V61,T25] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" -; V62 tmp58 [V62,T22] ( 3, 2.50) int -> r1 "Inline stloc first use temp"
+; V61 tmp57 [V61,T24] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" +; V62 tmp58 [V62,T21] ( 3, 2.50) int -> r1 "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=0x4)" P-INDEP
-; V65 tmp61 [V65,T19] ( 3, 3 ) byref -> r0 single-def "field V06._reference (fldOffset=0x0)" P-INDEP -;* V66 tmp62 [V66,T37] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
+; V65 tmp61 [V65,T18] ( 3, 3 ) byref -> r0 single-def "field V06._reference (fldOffset=0x0)" P-INDEP +;* V66 tmp62 [V66,T36] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" 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=0x4)" 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=0x4)" P-INDEP
-; V71 tmp67 [V71,T26] ( 3, 1.50) byref -> r5 "field V15._reference (fldOffset=0x0)" P-INDEP -; V72 tmp68 [V72,T27] ( 3, 1.50) int -> r6 "field V15._length (fldOffset=0x4)" P-INDEP
+; V71 tmp67 [V71,T25] ( 3, 1.50) byref -> r5 "field V15._reference (fldOffset=0x0)" P-INDEP +; V72 tmp68 [V72,T26] ( 3, 1.50) int -> r6 "field V15._length (fldOffset=0x4)" P-INDEP
; V73 tmp69 [V73 ] ( 2, 1 ) byref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V17._reference (fldOffset=0x0)" P-DEP ; V74 tmp70 [V74 ] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V17._length (fldOffset=0x4)" P-DEP ; V75 tmp71 [V75,T04] ( 8, 14.50) byref -> r5 "field V18._reference (fldOffset=0x0)" P-INDEP @@ -89,32 +89,31 @@ ;* V78 tmp74 [V78 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V81 tmp77 [V81,T15] ( 2, 4.50) byref -> r8 single-def "field V21._reference (fldOffset=0x0)" P-INDEP -; V82 tmp78 [V82,T14] ( 3, 5 ) int -> r7 "field V21._length (fldOffset=0x4)" P-INDEP
+; V81 tmp77 [V81,T14] ( 2, 4.50) byref -> r8 single-def "field V21._reference (fldOffset=0x0)" P-INDEP +; V82 tmp78 [V82,T13] ( 3, 5 ) int -> r7 "field V21._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V85 tmp81 [V85,T28] ( 2, 1 ) byref -> r1 single-def "field V25._reference (fldOffset=0x0)" P-INDEP -; V86 tmp82 [V86,T33] ( 2, 1 ) int -> r8 "field V25._length (fldOffset=0x4)" P-INDEP
+; V85 tmp81 [V85,T27] ( 2, 1 ) byref -> r1 single-def "field V25._reference (fldOffset=0x0)" P-INDEP +; V86 tmp82 [V86,T32] ( 2, 1 ) int -> r8 "field V25._length (fldOffset=0x4)" 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=0x4)" 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=0x4)" P-INDEP
-; V91 tmp87 [V91,T29] ( 2, 1 ) byref -> r5 single-def "field V37._reference (fldOffset=0x0)" P-INDEP -; V92 tmp88 [V92,T34] ( 2, 1 ) int -> r6 "field V37._length (fldOffset=0x4)" P-INDEP -; V93 tmp89 [V93,T30] ( 2, 1 ) byref -> r8 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp87 [V91,T28] ( 2, 1 ) byref -> r5 single-def "field V37._reference (fldOffset=0x0)" P-INDEP +; V92 tmp88 [V92,T33] ( 2, 1 ) int -> r6 "field V37._length (fldOffset=0x4)" P-INDEP +; V93 tmp89 [V93,T29] ( 2, 1 ) byref -> r8 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp90 [V94 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V95 tmp91 [V95,T31] ( 2, 1 ) byref -> r8 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V96 tmp92 [V96,T35] ( 2, 1 ) int -> r7 "field V43._length (fldOffset=0x4)" P-INDEP -; V97 tmp93 [V97,T09] ( 3, 8 ) byref -> r1 "field V47._reference (fldOffset=0x0)" P-INDEP
+; V95 tmp91 [V95,T30] ( 2, 1 ) byref -> r8 single-def "field V43._reference (fldOffset=0x0)" P-INDEP +; V96 tmp92 [V96,T34] ( 2, 1 ) int -> r7 "field V43._length (fldOffset=0x4)" P-INDEP +; V97 tmp93 [V97,T08] ( 3, 8 ) byref -> r1 "field V47._reference (fldOffset=0x0)" P-INDEP
; V98 tmp94 [V98,T02] ( 5, 16 ) int -> r10 "field V47._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V101 tmp97 [V101,T10] ( 2, 8 ) byref -> r5 "field V54._reference (fldOffset=0x0)" P-INDEP -; V102 tmp98 [V102,T11] ( 2, 8 ) int -> r6 "field V54._length (fldOffset=0x4)" P-INDEP -; V103 tmp99 [V103,T32] ( 2, 1 ) byref -> r8 single-def "field V60._reference (fldOffset=0x0)" P-INDEP -; V104 tmp100 [V104,T36] ( 2, 1 ) int -> r7 "field V60._length (fldOffset=0x4)" P-INDEP
+; V101 tmp97 [V101,T09] ( 2, 8 ) byref -> r5 "field V54._reference (fldOffset=0x0)" P-INDEP +; V102 tmp98 [V102,T10] ( 2, 8 ) int -> r6 "field V54._length (fldOffset=0x4)" P-INDEP +; V103 tmp99 [V103,T31] ( 2, 1 ) byref -> r8 single-def "field V60._reference (fldOffset=0x0)" P-INDEP +; V104 tmp100 [V104,T35] ( 2, 1 ) int -> r7 "field V60._length (fldOffset=0x4)" P-INDEP
; V105 cse0 [V105,T07] ( 3, 12 ) int -> [sp+0x04] spill-single-def "CSE - aggressive"
-; V106 cse1 [V106,T08] ( 9, 9 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 220 @@ -208,16 +207,15 @@ G_M60021_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, sub r6, r6, r8 cmp r6, 0 bge SHORT G_M60021_IG06
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0] - ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=78 bbWeight=0.50 PerfScore 13.00
G_M60021_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz subs r7, r7, 1 cmp r7, 0 @@ -228,16 +226,15 @@ G_M60021_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, bhi G_M60021_IG23 cmp r7, 0 bge SHORT G_M60021_IG07
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0] - ;; size=42 bbWeight=0.50 PerfScore 7.50
+ ;; size=48 bbWeight=0.50 PerfScore 8.00
G_M60021_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz mov r9, 0 cmp r7, 0 @@ -283,16 +280,15 @@ G_M60021_IG11: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0122 {r1 r5 r bge SHORT G_M60021_IG13 ;; size=40 bbWeight=4 PerfScore 60.00 G_M60021_IG12: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0] - ;; size=22 bbWeight=2 PerfScore 14.00
+ ;; size=28 bbWeight=2 PerfScore 16.00
G_M60021_IG13: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz add r9, r9, 1 cmp r9, r7 @@ -386,7 +382,7 @@ G_M60021_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 502, prolog size 26, PerfScore 200.50, instruction count 183, allocated bytes for code 502 (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 520, prolog size 26, PerfScore 203.50, instruction count 186, allocated bytes for code 520 (MethodHash=ba5d158a) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[double](System.Collections.Generic.IEnumerable`1[double]):double[] (FullOpts)
; ============================================================ Unwind Info: @@ -398,7 +394,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 251 (0x000fb) Actual length = 502 (0x0001f6)
+ Function Length : 260 (0x00104) Actual length = 520 (0x000208)
---- 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.linux.arm.checked.mch 22 7 12 3 -306 +292
benchmarks.run_pgo.linux.arm.checked.mch 143 102 21 20 -1,300 +574
benchmarks.run_tiered.linux.arm.checked.mch 19 5 11 3 -286 +272
coreclr_tests.run.linux.arm.checked.mch 280 54 179 47 -530 +1,722
libraries.crossgen2.linux.arm.checked.mch 1 0 1 0 -0 +8
libraries.pmi.linux.arm.checked.mch 123 30 53 40 -366 +818
libraries_tests.run.linux.arm.Release.mch 895 393 388 114 -6,122 +3,068
librariestestsnotieredcompilation.run.linux.arm.Release.mch 183 40 66 77 -330 +980
realworld.run.linux.arm.checked.mch 19 6 10 3 -90 +114
1,685 637 741 307 -9,330 +7,848

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 44,927 4,966 39,961 1,181 (2.56%) 1,181 (2.56%)
benchmarks.run_pgo.linux.arm.checked.mch 167,320 62,159 105,161 3,336 (1.95%) 3,336 (1.95%)
benchmarks.run_tiered.linux.arm.checked.mch 73,073 38,812 34,261 951 (1.28%) 951 (1.28%)
coreclr_tests.run.linux.arm.checked.mch 472,401 259,200 213,201 7,170 (1.50%) 7,170 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 1,774 0 1,774 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,309 6 272,303 7,786 (2.78%) 7,786 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,650 443,197 267,453 16,293 (2.24%) 16,293 (2.24%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,642 21,604 253,038 33,244 (10.80%) 33,244 (10.80%)
realworld.run.linux.arm.checked.mch 36,411 157 36,254 1,407 (3.72%) 1,407 (3.72%)
2,053,507 830,101 1,223,406 71,368 (3.36%) 71,368 (3.36%)

jit-analyze output

benchmarks.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14773010 (overridden on cmd)
Total bytes of diff: 14772996 (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), 22 unchanged.

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


benchmarks.run_pgo.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 68606114 (overridden on cmd)
Total bytes of diff: 68605388 (overridden on cmd)
Total bytes of delta: -726 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


benchmarks.run_tiered.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 18109340 (overridden on cmd)
Total bytes of diff: 18109326 (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), 19 unchanged.

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


coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321786766 (overridden on cmd)
Total bytes of diff: 321787958 (overridden on cmd)
Total bytes of delta: 1192 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.crossgen2.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 213944 (overridden on cmd)
Total bytes of diff: 213952 (overridden on cmd)
Total bytes of delta: 8 (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.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49829328 (overridden on cmd)
Total bytes of diff: 49829780 (overridden on cmd)
Total bytes of delta: 452 (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.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 244097424 (overridden on cmd)
Total bytes of diff: 244094370 (overridden on cmd)
Total bytes of delta: -3054 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 94426298 (overridden on cmd)
Total bytes of diff: 94426948 (overridden on cmd)
Total bytes of delta: 650 (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.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13618802 (overridden on cmd)
Total bytes of diff: 13618826 (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), 19 unchanged.

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