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.CommonReferenceManager
2+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.CommonReferenceManager
2+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.SearchValues
1ushort
@@ -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.SearchValues
1ushort
@@ -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.CommonReferenceManager
2+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.Span
1[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.Span
1[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.SearchValues
1ushort
@@ -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.SearchValues
1ushort
@@ -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.SearchValues
1ushort
@@ -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.CommonReferenceManager
2+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).