Assembly Diffs
linux arm64
Diffs are based on 2,259,470 contexts (1,008,044 MinOpts, 1,251,426 FullOpts).
MISSED contexts: 159 (0.01%)
Overall (-7,024 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
14,972,964 |
+148 |
benchmarks.run_pgo.linux.arm64.checked.mch |
79,903,244 |
-4,288 |
benchmarks.run_tiered.linux.arm64.checked.mch |
22,276,872 |
+184 |
coreclr_tests.run.linux.arm64.checked.mch |
509,740,232 |
+704 |
libraries.crossgen2.linux.arm64.checked.mch |
315,768 |
+0 |
libraries.pmi.linux.arm64.checked.mch |
76,281,012 |
+772 |
libraries_tests.run.linux.arm64.Release.mch |
400,018,960 |
-4,964 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
165,110,104 |
+308 |
realworld.run.linux.arm64.checked.mch |
15,918,288 |
+112 |
FullOpts (-7,024 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
14,713,212 |
+148 |
benchmarks.run_pgo.linux.arm64.checked.mch |
54,354,872 |
-4,288 |
benchmarks.run_tiered.linux.arm64.checked.mch |
4,937,908 |
+184 |
coreclr_tests.run.linux.arm64.checked.mch |
160,832,376 |
+704 |
libraries.crossgen2.linux.arm64.checked.mch |
315,768 |
+0 |
libraries.pmi.linux.arm64.checked.mch |
76,161,028 |
+772 |
libraries_tests.run.linux.arm64.Release.mch |
183,280,056 |
-4,964 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
151,612,828 |
+308 |
realworld.run.linux.arm64.checked.mch |
15,336,748 |
+112 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
-40 (-27.03%) : 4657.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-0.71%) : 16843.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)
@@ -8,19 +8,19 @@
; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T43] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
-; V01 arg1 [V01,T39] ( 5, 8 ) int -> x22 single-def
+; V00 this [V00,T44] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
+; V01 arg1 [V01,T40] ( 5, 8 ) int -> x22 single-def
; V02 arg2 [V02,T36] ( 6, 9 ) ref -> x21 class-hnd single-def <System.String>
-; V03 arg3 [V03,T40] ( 5, 8 ) long -> x23 single-def
-; V04 arg4 [V04,T41] ( 5, 8 ) int -> x24 single-def
-; V05 arg5 [V05,T42] ( 5, 8 ) int -> x25 single-def
+; V03 arg3 [V03,T41] ( 5, 8 ) long -> x23 single-def
+; V04 arg4 [V04,T42] ( 5, 8 ) int -> x24 single-def
+; V05 arg5 [V05,T43] ( 5, 8 ) int -> x25 single-def
; V06 arg6 [V06,T32] ( 7, 10 ) int -> x20 single-def
-; V07 arg7 [V07,T26] ( 12, 12 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]>
-; V08 loc0 [V08,T44] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]>
-; V09 loc1 [V09,T45] ( 5, 5 ) ubyte -> registers
-; V10 loc2 [V10,T16] ( 8, 22 ) int -> [fp+0x114]
-; V11 loc3 [V11,T17] ( 8, 22 ) int -> [fp+0x110]
-; V12 loc4 [V12,T53] ( 3, 3 ) int -> [fp+0x10C] spill-single-def
+; V07 arg7 [V07,T21] ( 12, 15 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]>
+; V08 loc0 [V08,T46] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]>
+; V09 loc1 [V09,T37] ( 5, 8 ) ubyte -> registers
+; V10 loc2 [V10,T15] ( 8, 25 ) int -> [fp+0x114]
+; V11 loc3 [V11,T16] ( 8, 25 ) int -> [fp+0x110]
+; V12 loc4 [V12,T45] ( 3, 6 ) int -> [fp+0x10C] spill-single-def
;* V13 loc5 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 loc6 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref
@@ -41,7 +41,7 @@
; V30 loc22 [V30,T34] ( 2, 9 ) ref -> [fp+0x30] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V31 loc23 [V31,T11] ( 5, 33 ) int -> [fp+0xB4]
; V32 loc24 [V32 ] ( 2, 16 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V33 loc25 [V33,T52] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
+; V33 loc25 [V33,T53] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
; V34 loc26 [V34,T35] ( 2, 9 ) ref -> x19 class-hnd exact single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V35 loc27 [V35,T12] ( 5, 33 ) int -> [fp+0x94]
;* V36 loc28 [V36 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
@@ -54,20 +54,20 @@
;* V43 tmp6 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
; V45 tmp8 [V45 ] ( 2, 16 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V46 tmp9 [V46,T48] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
+; V46 tmp9 [V46,T49] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
;* V47 tmp10 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp11 [V48,T49] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
+; V48 tmp11 [V48,T50] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
; V49 tmp12 [V49,T27] ( 2, 8 ) ubyte -> x3 "Inline return value spill temp"
; V50 tmp13 [V50,T28] ( 3, 12 ) ubyte -> x3 "Inline return value spill temp"
;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V52 tmp15 [V52,T15] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
-; V53 tmp16 [V53,T21] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
+; V52 tmp15 [V52,T17] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
+; V53 tmp16 [V53,T22] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
; V54 tmp17 [V54 ] ( 4, 16 ) byref -> [fp+0x70] must-init pinned "Inline stloc first use temp"
-; V55 tmp18 [V55,T37] ( 2, 8 ) long -> x2
+; V55 tmp18 [V55,T38] ( 2, 8 ) long -> x2
; V56 tmp19 [V56,T08] ( 2, 36 ) long -> [fp+0x68] spill-single-def "Inline stloc first use temp"
;* V57 tmp20 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V58 tmp21 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V59 tmp22 [V59,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp22 [V59,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp23 [V60 ] ( 2, 8 ) int -> [fp+0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V62 tmp25 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -77,22 +77,22 @@
; V66 tmp29 [V66 ] ( 2, 16 ) ref -> [fp+0xE8] do-not-enreg[X] addr-exposed "field V19.ParameterName (fldOffset=0x0)" P-DEP
; V67 tmp30 [V67 ] ( 2, 16 ) ref -> [fp+0xF0] do-not-enreg[X] addr-exposed "field V19.ParameterType (fldOffset=0x8)" P-DEP
; V68 tmp31 [V68 ] ( 2, 16 ) ref -> [fp+0xF8] do-not-enreg[X] addr-exposed "field V19.TypeInfo (fldOffset=0x10)" P-DEP
-; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
+; V69 tmp32 [V69,T24] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref "field V23.ParameterType (fldOffset=0x8)" P-INDEP
-; V71 tmp34 [V71,T24] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
+; V71 tmp34 [V71,T25] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
; V72 tmp35 [V72 ] ( 2, 16 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V32.ParameterName (fldOffset=0x0)" P-DEP
; V73 tmp36 [V73 ] ( 2, 16 ) ref -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V32.ParameterType (fldOffset=0x8)" P-DEP
; V74 tmp37 [V74 ] ( 2, 16 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed "field V32.TypeInfo (fldOffset=0x10)" P-DEP
-; V75 tmp38 [V75,T22] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
+; V75 tmp38 [V75,T23] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
;* V76 tmp39 [V76 ] ( 0, 0 ) ref -> zero-ref "field V36.ParameterType (fldOffset=0x8)" P-INDEP
; V77 tmp40 [V77,T19] ( 3, 20 ) ref -> x5 "field V36.TypeInfo (fldOffset=0x10)" P-INDEP
; V78 tmp41 [V78,T03] ( 3, 48 ) byref -> x1 "BlockOp address local"
-; V79 tmp42 [V79,T50] ( 2, 4 ) long -> x2 "Cast away GC"
-; V80 tmp43 [V80,T51] ( 2, 4 ) long -> x3 "Cast away GC"
-; V81 tmp44 [V81,T46] ( 2, 4 ) ref -> x7 "argument with side effect"
+; V79 tmp42 [V79,T51] ( 2, 4 ) long -> x1 "Cast away GC"
+; V80 tmp43 [V80,T52] ( 2, 4 ) long -> x3 "Cast away GC"
+; V81 tmp44 [V81,T47] ( 2, 4 ) ref -> x7 "argument with side effect"
; V82 tmp45 [V82,T04] ( 3, 48 ) byref -> x0 "BlockOp address local"
-; V83 tmp46 [V83,T25] ( 2, 16 ) long -> x2 "Cast away GC"
-; V84 tmp47 [V84,T47] ( 2, 16 ) ref -> x7 "argument with side effect"
+; V83 tmp46 [V83,T26] ( 2, 16 ) long -> x2 "Cast away GC"
+; V84 tmp47 [V84,T48] ( 2, 16 ) ref -> x7 "argument with side effect"
; V85 PSPSym [V85,T60] ( 1, 1 ) long -> [fp+0x118] do-not-enreg[V] "PSPSym"
; V86 cse0 [V86,T29] ( 3, 12 ) int -> [fp+0x58] spill-single-def "CSE - moderate"
; V87 cse1 [V87,T54] ( 3, 3 ) int -> x28 "CSE - moderate"
@@ -137,8 +137,8 @@ G_M27295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov x19, x7
; gcrRegs +[x19]
;; size=104 bbWeight=1 PerfScore 19.00
-G_M27295_IG02: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V33 V52}
+G_M27295_IG02: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V33 V53}
mov w27, wzr
;; size=4 bbWeight=1 PerfScore 0.50
G_M27295_IG03: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref, isz
@@ -184,10 +184,10 @@ G_M27295_IG04: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0
ldr w7, [x5, #0x08]
str w7, [fp, #0x50] // [V89 cse3]
cmp w7, #0
- ble G_M27295_IG10
+ ble G_M27295_IG11
;; size=28 bbWeight=1 PerfScore 7.50
-G_M27295_IG05: ; bbWeight=8, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V52}
+G_M27295_IG05: ; bbWeight=8, gcVars=0020000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V53}
mov w0, #24
mov x1, #16
str w6, [fp, #0xD1FFAB1E] // [V18 loc10]
@@ -212,70 +212,22 @@ G_M27295_IG07: ; bbWeight=8, isz, extend
blr x8
; gcrRegs -[x5]
; gcr arg pop 0
- cbz w0, G_M27295_IG11
- ldr w1, [fp, #0xE0] // [V20 loc12]
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- add w2, w2, w1
- ldr w1, [fp, #0xD1FFAB1E] // [V18 loc10]
- add w1, w1, #1
- ldr w3, [fp, #0x50] // [V89 cse3]
- cmp w3, w1
- mov w6, w1
- ldr x5, [fp, #0x40] // [V17 loc9]
- ; gcrRegs +[x5]
- bgt G_M27295_IG09
- ;; size=72 bbWeight=8 PerfScore 164.00
-G_M27295_IG08: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
+ cbnz w0, G_M27295_IG12
+ ;; size=32 bbWeight=8 PerfScore 60.00
+G_M27295_IG08: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- mov w1, #6
- cmp w20, #0
- csel w1, wzr, w1, eq
- ldr w4, [fp, #0xD1FFAB1E] // [V11 loc3]
- add w0, w4, #5
- str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
- cmp w4, #0
- csel w0, wzr, w0, eq
- str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- add w0, w2, w0
- add w5, w0, w1
- str w5, [fp, #0xD1FFAB1E] // [V16 loc8]
- sxtw x1, w5
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWARR_1_VC
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- str x0, [fp, #0x48] // [V08 loc0]
- ; GC ptr vars +{V08}
- b G_M27295_IG15
- ;; size=76 bbWeight=1 PerfScore 14.00
-G_M27295_IG09: ; bbWeight=4, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x5]
- ; GC ptr vars -{V08} +{V17 V31}
- str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG05
- ;; size=8 bbWeight=4 PerfScore 8.00
-G_M27295_IG10: ; bbWeight=0.50, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
- ; GC ptr vars -{V17 V31}
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M27295_IG11: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref
mov w27, #1
ldr w2, [fp, #0xD1FFAB1E] // [V12 loc4]
str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- mov w4, #4
- str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
+ mov w1, #4
+ str w1, [fp, #0xD1FFAB1E] // [V11 loc3]
mov x5, x19
; gcrRegs +[x5]
str x5, [fp, #0x38] // [V21 loc13]
; GC ptr vars +{V21}
mov w6, wzr
;; size=32 bbWeight=1 PerfScore 7.00
-G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27295_IG09: ; bbWeight=8, gcVars=0020000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
mov w1, #24
mov x0, #16
str w6, [fp, #0xDC] // [V22 loc14]
@@ -301,30 +253,11 @@ G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs
blr x7
; gcrRegs -[x0 x5]
; gcr arg pop 0
- cbz w0, G_M27295_IG14
- ldr w0, [fp, #0x88] // [V45 tmp8]
- ldr w1, [fp, #0xD8] // [V24 loc16]
- add w1, w1, w0
- ldr w2, [fp, #0xD1FFAB1E] // [V11 loc3]
- add w2, w2, w1
- ldr w0, [fp, #0xDC] // [V22 loc14]
- add w0, w0, #1
- ldr w1, [fp, #0x50] // [V89 cse3]
- cmp w1, w0
- str w2, [fp, #0xD1FFAB1E] // [V11 loc3]
- mov w6, w0
- ldr x5, [fp, #0x38] // [V21 loc13]
- ; gcrRegs +[x5]
- bgt G_M27295_IG12
- ;; size=128 bbWeight=8 PerfScore 344.00
-G_M27295_IG13: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
- ; GC ptr vars -{V21 V33}
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG08
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M27295_IG14
+ ;; size=76 bbWeight=8 PerfScore 212.00
+G_M27295_IG10: ; bbWeight=4, gcVars=0020000000000000 {V33}, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
+ ; GC ptr vars -{V21 V33}
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -337,47 +270,112 @@ G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000
ldr x19, [x0]
; gcrRegs +[x19]
ldr w27, [fp, #0xD1FFAB1E] // [V12 loc4]
- str wzr, [fp, #0xD1FFAB1E] // [V11 loc3]
- mov w2, wzr
- mov w0, w2
- mov w2, w27
+ mov w4, wzr
+ mov w0, wzr
+ str w27, [fp, #0xD1FFAB1E] // [V10 loc2]
+ str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
mov w27, w0
- b G_M27295_IG08
- ;; size=64 bbWeight=1 PerfScore 13.50
...
-4 (-0.15%) : 4878.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -23,24 +23,24 @@
; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1
;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt"
;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg"
;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -67,13 +67,13 @@
;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
-; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg"
-; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
+; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]>
; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg"
; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]>
@@ -90,14 +90,14 @@
;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
-; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
+; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP
;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
@@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x40] // [V100 tmp78]
cmp w1, w2
bhi G_M4730_IG74
- cmp w1, #0
- cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w3, [x1, #0x08]
cmp w3, w0
bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x27]
add x1, x1, #16
@@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {},
beq G_M4730_IG67
b G_M4730_IG27
;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89}
str w1, [fp, #0x60] // [V10 loc6]
mov w28, w2
@@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; GC ptr vars +{V89}
ldr w28, [fp, #0x68] // [V07 loc3]
;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3]
; GC ptr vars -{V57}
cmp w25, w26
@@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}
; GC ptr vars +{V13}
cbz x24, G_M4730_IG39
;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26]
ldr w26, [fp, #0x44] // [V90 tmp68]
cbz w26, G_M4730_IG32
@@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
str w0, [x19, #0x18]
b G_M4730_IG41
;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27]
; GC ptr vars +{V13 V16 V89}
b G_M4730_IG42
@@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; gcrRegs -[x26]
b G_M4730_IG47
;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26]
; GC ptr vars +{V13 V16 V89}
ldr x2, [fp, #0x30] // [V13 loc9]
@@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcr arg pop 0
b G_M4730_IG06
;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27]
; GC ptr vars +{V13 V16 V89}
ldr x1, [fp, #0x30] // [V13 loc9]
@@ -1216,7 +1215,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2704, prolog size 48, PerfScore 6977.50, instruction count 676, allocated bytes for code 2704 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2700, prolog size 48, PerfScore 6975.50, instruction count 675, allocated bytes for code 2700 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1227,7 +1226,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 676 (0x002a4) Actual length = 2704 (0x000a90)
+ Function Length : 675 (0x002a3) Actual length = 2700 (0x000a8c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.61%) : 4786.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
@@ -76,7 +76,7 @@ G_M60940_IG02: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=800
G_M60940_IG03: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
cbnz x0, G_M60940_IG04
str xzr, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=12 bbWeight=1 PerfScore 3.00
G_M60940_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -128,7 +128,7 @@ G_M60940_IG05: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {},
ldr x0, [fp, #0x38] // [V07 loc3]
; gcrRegs +[x0]
str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=52 bbWeight=1 PerfScore 14.00
G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -144,7 +144,7 @@ G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w2, wzr
mov w3, wzr
cmp w1, #0
- ble G_M60940_IG11
+ ble G_M60940_IG13
;; size=44 bbWeight=1 PerfScore 13.00
G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w4, #24
@@ -159,21 +159,28 @@ G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr w2, [fp, #0x28] // [V10 loc6+0x08]
; byrRegs -[x2]
cmp w2, #17
- beq G_M60940_IG10
+ bne G_M60940_IG10
+ ;; size=44 bbWeight=8 PerfScore 152.00
+G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M60940_IG12
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ b G_M60940_IG13
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M60940_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
add w2, w3, #1
sxtw w3, w2
cmp w1, w3
bgt G_M60940_IG07
- ;; size=60 bbWeight=8 PerfScore 172.00
-G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=8 PerfScore 20.00
+G_M60940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M60940_IG11
+ b G_M60940_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- nop
- b G_M60940_IG11
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, fp, #32 // [V10 loc6]
ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
@@ -184,9 +191,9 @@ G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcr arg pop 0
str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=36 bbWeight=1 PerfScore 10.00
-G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG13: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; GC ptr vars -{V05}
ldr x0, [fp, #0x18] // [V04 loc0]
@@ -199,36 +206,36 @@ G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=000
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M60940_IG16
+ b G_M60940_IG18
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG12: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04 V05}
ldr x0, [fp, #0x48] // [V34 PSPSym]
- bl G_M60940_IG27
+ bl G_M60940_IG29
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60940_IG13: ; bbWeight=1, nogc, extend
+G_M60940_IG15: ; bbWeight=1, nogc, extend
nop
;; size=4 bbWeight=1 PerfScore 0.50
-G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05}
ldr x0, [fp, #0x10] // [V05 loc1]
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M60940_IG15: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x50]
- ldp fp, lr, [sp], #0x60
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x60
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M60940_IG19: ; bbWeight=1, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x50]
+ ldp fp, lr, [sp], #0x60
+ ret lr
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M60940_IG20: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
@@ -236,7 +243,7 @@ G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
str x1, [sp, #0x18]
sub fp, x1, #96
;; size=20 bbWeight=0 PerfScore 0.00
-G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG21: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05}
mov x1, x0
; gcrRegs +[x1]
@@ -249,12 +256,12 @@ G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- cbnz x19, G_M60940_IG20
+ cbnz x19, G_M60940_IG22
mov w0, wzr
; gcrRegs -[x0]
- b G_M60940_IG23
+ b G_M60940_IG25
;; size=36 bbWeight=0 PerfScore 0.00
-G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -263,7 +270,7 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M60940_IG21
+ cbnz x0, G_M60940_IG23
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -276,44 +283,44 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x0, #0
cset x0, ne
; gcrRegs -[x0]
- b G_M60940_IG22
+ b G_M60940_IG24
;; size=56 bbWeight=0 PerfScore 0.00
-G_M60940_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0
cset x0, ne
;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #96
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M60940_IG25: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG27: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
adr x0, [G_M60940_IG09]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M60940_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #96
str x3, [sp, #0x18]
;; size=16 bbWeight=1 PerfScore 3.50
-G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG30: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
- cbz x0, G_M60940_IG29
+ cbz x0, G_M60940_IG31
movz x1, #0xD1FFAB1E // code for System.Reflection.PortableExecutable.PEReader:Dispose():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -323,7 +330,7 @@ G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
@@ -331,7 +338,7 @@ G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
RWD00 dq 0000FFFF5096D218h, 0000FFFF5463B840h
-Total bytes of code 652, prolog size 32, PerfScore 283.00, instruction count 163, allocated bytes for code 652 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
+Total bytes of code 656, prolog size 32, PerfScore 284.00, instruction count 164, allocated bytes for code 656 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
; ============================================================
Unwind Info:
@@ -342,7 +349,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -410,7 +417,7 @@ Unwind Info:
*************** EH table for System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider
2 EH table entries, 1 duplicate clauses, 1 cloned finallys, 4 total EH entries reported to VM
-EH#0: try [G_M60940_IG10..G_M60940_IG11) handled by [G_M60940_IG24..G_M60940_IG27) filter at [G_M60940_IG18..G_M60940_IG24)
...
+16 (+0.67%) : 22697.dasm - System.Text.Json.Tests.Perf_Deep:WriteDeepUtf16():this (FullOpts)
@@ -12,7 +12,7 @@
; V01 loc0 [V01,T00] ( 69,116.50) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Text.Json.Utf8JsonWriter>
; V02 loc1 [V02 ] ( 9, 7 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init ld-addr-op <System.Text.Json.JsonWriterOptions>
; V03 loc2 [V03,T09] ( 6, 21 ) int -> x21
-; V04 loc3 [V04,T02] ( 8, 29 ) int -> x24
+; V04 loc3 [V04,T02] ( 8, 29 ) int -> x21
; V05 loc4 [V05,T18] ( 4, 13 ) int -> x19
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T42] ( 3, 6 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Buffers.ArrayBufferWriter`1[ubyte]>
@@ -86,8 +86,8 @@
;* V75 tmp69 [V75 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V76 tmp70 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V77 tmp71 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x21 "Inlining Arg"
-; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x22 "Inlining Arg"
+; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x26 "Inlining Arg"
;* V80 tmp74 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V81 tmp75 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V82 tmp76 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -100,7 +100,7 @@
; V89 tmp83 [V89,T33] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
; V90 tmp84 [V90,T24] ( 5, 10 ) ref -> x0
;* V91 tmp85 [V91 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x22 "Inline stloc first use temp"
+; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x27 "Inline stloc first use temp"
;* V93 tmp87 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V94 tmp88 [V94 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V95 tmp89 [V95,T14] ( 2, 16 ) int -> x1 "Inlining Arg"
@@ -145,10 +145,10 @@
;* V134 tmp128 [V134 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP
;* V135 tmp129 [V135 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
;* V136 tmp130 [V136 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x25 "field V75._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x21 "field V75._length (fldOffset=0x8)" P-INDEP
-; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x25 "field V76._reference (fldOffset=0x0)" P-INDEP
-; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x21 "field V76._length (fldOffset=0x8)" P-INDEP
+; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x26 "field V75._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x22 "field V75._length (fldOffset=0x8)" P-INDEP
+; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x26 "field V76._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x22 "field V76._length (fldOffset=0x8)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
;* V143 tmp137 [V143 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP
@@ -159,7 +159,7 @@
; V148 tmp142 [V148,T37] ( 2, 8 ) long -> x24 "Cast away GC"
; V149 tmp143 [V149,T51] ( 2, 4 ) long -> x25 "Cast away GC"
; V150 tmp144 [V150,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x22 "Cast away GC"
+; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x27 "Cast away GC"
; V152 tmp146 [V152,T07] ( 3, 24 ) ref -> x1 "arr expr"
; V153 PSPSym [V153,T61] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym"
; V154 cse0 [V154,T17] ( 4, 14 ) int -> x0 "CSE - moderate"
@@ -170,21 +170,22 @@
; Lcl frame size = 72
G_M54203_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0xA0]!
stp x19, x20, [sp, #0x58]
stp x21, x22, [sp, #0x68]
stp x23, x24, [sp, #0x78]
- str x25, [sp, #0x88]
+ stp x25, x26, [sp, #0x88]
+ str x27, [sp, #0x98]
mov fp, sp
add x9, fp, #32
movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]
- add x1, sp, #144
+ add x1, sp, #160
str x1, [fp, #0x50] // [V153 PSPSym]
mov x19, x0
; gcrRegs +[x19]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M54203_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08]
; gcrRegs +[x20]
@@ -485,18 +486,18 @@ G_M54203_IG28: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
str w0, [x20, #0x28]
mov w0, #3
strb w0, [x20, #0x36]
- mov w24, wzr
+ mov w21, wzr
;; size=32 bbWeight=1 PerfScore 8.00
G_M54203_IG29: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x28]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
- cmp w24, w1
+ cmp w21, w1
bhs G_M54203_IG47
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x22, [x0, w24, UXTW #3]
+ ldr x22, [x0, w21, UXTW #3]
; gcrRegs +[x22]
cbnz x22, G_M54203_IG61
;; size=28 bbWeight=4 PerfScore 48.00
@@ -517,12 +518,12 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
- cmp w24, w0
+ cmp w21, w0
bhs G_M54203_IG47
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
- ldr w1, [x1, w24, UXTW #2]
+ ldr w1, [x1, w21, UXTW #2]
; byrRegs -[x1]
sxtw x1, w1
mov x0, x20
@@ -534,10 +535,10 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- add w24, w24, #1
+ add w21, w21, #1
movz w0, #0xD1FFAB1E
movk w0, #1 LSL #16
- cmp w24, w0
+ cmp w21, w0
blt G_M54203_IG29
;; size=72 bbWeight=4 PerfScore 82.00
G_M54203_IG32: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
@@ -631,7 +632,7 @@ G_M54203_IG39: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
b G_M54203_IG72
;; size=64 bbWeight=1 PerfScore 15.00
G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov w0, w21
+ mov w0, w22
movz x1, #0xD1FFAB1E // code for System.Text.Json.ThrowHelper:ThrowArgumentException_ValueTooLarge(long)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -640,9 +641,9 @@ G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
+G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
; gcrRegs +[x19]
- ; byrRegs +[x25]
+ ; byrRegs +[x26]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -653,7 +654,7 @@ G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
;; size=24 bbWeight=0 PerfScore 0.00
G_M54203_IG42: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x25]
+ ; byrRegs -[x26]
ldrb w4, [x20, #0x36]
ldr w2, [x20, #0x68]
mov w0, #31
@@ -915,27 +916,27 @@ G_M54203_IG60: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=100
;; size=40 bbWeight=0.50 PerfScore 4.25
G_M54203_IG61: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- add x25, x22, #12
- ; byrRegs +[x25]
- ldr w21, [x22, #0x08]
+ add x26, x22, #12
+ ; byrRegs +[x26]
+ ldr w22, [x22, #0x08]
+ ; gcrRegs -[x22]
movz w0, #0xD1FFAB1E
movk w0, #0xD1FFAB1E LSL #16
- cmp w21, w0
+ cmp w22, w0
bgt G_M54203_IG40
add x0, x20, #96
; byrRegs +[x0]
ldr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbnz w21, G_M54203_IG62
+ cbnz w22, G_M54203_IG62
movn w3, #0
b G_M54203_IG65
;; size=44 bbWeight=2 PerfScore 24.00
-G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref, isz
- ; gcrRegs -[x22]
- mov x22, x25
- ; byrRegs +[x22]
- str x22, [fp, #0x20] // [V87 tmp81]
+G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x27, x26
+ ; byrRegs +[x27]
+ str x27, [fp, #0x20] // [V87 tmp81]
cbnz x0, G_M54203_IG64
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
@@ -944,17 +945,17 @@ G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200
ldr w0, [x0]
tbz w0, #0, G_M54203_IG41
;; size=32 bbWeight=2 PerfScore 16.00
-G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
- ; byrRegs -[x22]
+G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ; byrRegs -[x27]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
;; size=16 bbWeight=2 PerfScore 9.00
-G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
- mov x1, x22
- mov w2, w21
+G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref
+ mov x1, x27
+ mov w2, w22
ldr x3, [x0]
ldr x3, [x3, #0x48]
ldr x3, [x3, #0x28]
@@ -963,13 +964,13 @@ G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200
; gcr arg pop 0
sxtw w3, w0
;; size=28 bbWeight=2 PerfScore 23.00
-G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
str xzr, [fp, #0x20] // [V87 tmp81]
cmn w3, #1
beq G_M54203_IG66
- mov x1, x25
+ mov x1, x26
; byrRegs +[x1]
- mov w2, w21
+ mov w2, w22
mov x0, x20
; gcrRegs +[x0]
movz x4, #0xD1FFAB1E // code for <unknown method>
@@ -978,12 +979,12 @@ G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
ldr x4, [x4]
blr x4
; gcrRegs -[x0]
- ; byrRegs -[x1 x25]
+ ; byrRegs -[x1 x26]
; gcr arg pop 0
b G_M54203_IG69
;; size=48 bbWeight=2 PerfScore 21.00
-G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
- ; byrRegs +[x25]
+G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
...
+20 (+3.91%) : 22692.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -33,10 +33,10 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value"
; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG23
- cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25
+ cbz w21, G_M46295_IG19
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG17
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG14
- cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16
+ cbnz x23, G_M46295_IG12
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08]
sub w0, w0, w24
cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12
; byrRegs +[x2]
sbfiz x0, x24, #1, #32
@@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -266,7 +277,7 @@ Unwind Info:
E bit : 0
...
benchmarks.run_pgo.linux.arm64.checked.mch
-16 (-3.54%) : 126900.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary
2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
@@ -23,7 +23,7 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
; V12 tmp6 [V12,T05] ( 2,399.96) long -> x1 "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> x23 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> x23 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> x24 class-hnd "Inlining Arg" <System.__Canon>
@@ -39,9 +39,9 @@
; V26 tmp20 [V26,T03] ( 2,400 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon>
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> x24 "V04.[000..008)"
-; V30 tmp24 [V30,T14] ( 4,101.01) int -> x25 "V04.[008..012)"
-; V31 tmp25 [V31,T07] ( 6,301.01) int -> registers "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> x24 "V04.[000..008)"
+; V30 tmp24 [V30,T14] ( 3,101.01) int -> x25 "V04.[008..012)"
+; V31 tmp25 [V31,T06] ( 6,301.01) int -> registers "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> x2 "V04.[024..032)"
; V33 tmp27 [V33,T11] ( 3,199.99) long -> x4 "V04.[032..040)"
;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)"
@@ -80,15 +80,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldp w25, w26, [fp, #0xF8] // [V04 loc2+0x08], [V04 loc2+0x0c]
;; size=12 bbWeight=1 PerfScore 4.50
G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- cbz w23, G_M19783_IG08
+ cbz w23, G_M19783_IG06
;; size=4 bbWeight=0.01 PerfScore 0.01
G_M19783_IG04: ; bbWeight=8.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
- b G_M19783_IG08
+ b G_M19783_IG06
;; size=4 bbWeight=8.02 PerfScore 8.02
G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x24]
cmp w22, w0
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
add x0, x19, #16
; byrRegs +[x0]
ldr x0, [x0, w22, UXTW #3]
@@ -107,11 +107,15 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
mov w26, wzr
b G_M19783_IG03
;; size=56 bbWeight=0.01 PerfScore 0.19
-G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ mov w23, #1
+ ldr w0, [x24, #0x44]
+ cmp w25, w0
+ bne G_M19783_IG18
ldr w27, [x24, #0x38]
- b G_M19783_IG10
- ;; size=8 bbWeight=100 PerfScore 400.00
+ b G_M19783_IG09
+ ;; size=24 bbWeight=100 PerfScore 900.00
G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
sxtw x0, w22
@@ -127,23 +131,17 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24},
blr x4
; gcrRegs -[x0 x2]
; gcr arg pop 0
- cbz w0, G_M19783_IG15
- ;; size=44 bbWeight=99.99 PerfScore 1199.88
-G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- mov w23, #1
- ldr w0, [x24, #0x44]
- cmp w25, w0
- bne G_M19783_IG19
+ cbz w0, G_M19783_IG14
b G_M19783_IG06
- ;; size=20 bbWeight=100 PerfScore 600.00
-G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=99.99 PerfScore 1299.87
+G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24, #0x10]
; gcrRegs +[x0]
add w1, w26, #1
sxtw w28, w1
ldr w1, [x0, #0x08]
cmp w26, w1
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
mov w1, #24
mov x2, #16
umaddl x1, w26, w1, x2
@@ -153,38 +151,38 @@ G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr w1, [x0, #0x14]
cmn w1, #1
mov w26, w28
- bge G_M19783_IG11
+ bge G_M19783_IG10
;; size=56 bbWeight=100 PerfScore 2000.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cmp w26, w27
- bhs G_M19783_IG16
- b G_M19783_IG09
+ bhs G_M19783_IG15
+ b G_M19783_IG08
;; size=12 bbWeight=100 PerfScore 250.00
-G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
+G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldp x2, x4, [x0]
; gcrRegs +[x2]
mov w28, #1
;; size=8 bbWeight=100 PerfScore 450.00
-G_M19783_IG12: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cbnz w28, G_M19783_IG07
;; size=4 bbWeight=100 PerfScore 100.00
-G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG12: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x24]
add w22, w22, #1
ldr w0, [x19, #0x08]
cmp w0, w22
- ble G_M19783_IG17
+ ble G_M19783_IG16
b G_M19783_IG05
;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21 x24]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -198,21 +196,17 @@ G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x2, [x2]
blr x2
; gcr arg pop 0
- mov w23, #1
- ldr w1, [x24, #0x44]
- cmp w25, w1
- beq G_M19783_IG06
- b G_M19783_IG19
- ;; size=64 bbWeight=0 PerfScore 0.00
-G_M19783_IG16: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+ b G_M19783_IG06
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
add w26, w27, #1
mov x2, xzr
; gcrRegs +[x2]
mov x4, xzr
mov w28, wzr
- b G_M19783_IG12
+ b G_M19783_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M19783_IG16: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x19 x24]
ldr x2, [x20, #0x08]
; gcrRegs +[x2]
@@ -226,7 +220,7 @@ G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
; gcrRegs -[x1 x20-x21]
; gcr arg pop 0
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG17: ; bbWeight=0, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -236,7 +230,7 @@ G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
add sp, sp, #224
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
@@ -247,7 +241,7 @@ G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 452, prolog size 40, PerfScore 5026.16, instruction count 113, allocated bytes for code 452 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 436, prolog size 40, PerfScore 5026.15, instruction count 109, allocated bytes for code 436 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -258,7 +252,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-44 (-3.06%) : 24663.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)
@@ -8,8 +8,8 @@
; 7 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T31] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
-; V01 arg1 [V01,T32] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V00 arg0 [V00,T30] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V01 arg1 [V01,T31] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
; V02 loc0 [V02,T28] ( 6, 6 ) long -> x19
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[uint]>
; V04 loc2 [V04,T29] ( 6, 6 ) long -> x21
@@ -23,8 +23,8 @@
;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]>
;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ptr
; V14 loc12 [V14,T05] ( 13, 39 ) int -> [fp+0x64] ptr
-; V15 loc13 [V15,T11] ( 8, 18 ) int -> [fp+0x60] spill-single-def ptr
-; V16 loc14 [V16,T18] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
+; V15 loc13 [V15,T11] ( 7, 18 ) int -> [fp+0x60] spill-single-def ptr
+; V16 loc14 [V16,T17] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
; V17 loc15 [V17,T03] ( 6, 60 ) long -> [fp+0x50] ptr
; V18 loc16 [V18,T10] ( 3, 22 ) int -> [fp+0x4C] ptr
; V19 loc17 [V19,T02] ( 13,114 ) long -> [fp+0x40] ptr
@@ -38,7 +38,7 @@
; V27 tmp5 [V27,T33] ( 3, 6 ) int -> x0 "Span.get_Item index"
; V28 tmp6 [V28,T63] ( 2, 2 ) int -> x0 "Span.get_Item index"
; V29 tmp7 [V29,T59] ( 5, 3 ) int -> x0
-; V30 tmp8 [V30,T24] ( 3, 8 ) int -> x7
+; V30 tmp8 [V30,T23] ( 3, 8 ) int -> x7
; V31 tmp9 [V31,T16] ( 5, 12 ) int -> x0
;* V32 tmp10 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[uint]>
;* V33 tmp11 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
@@ -64,8 +64,8 @@
;* V53 tmp31 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp33 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V56 tmp34 [V56,T19] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg"
-; V57 tmp35 [V57,T25] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
+; V56 tmp34 [V56,T18] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg"
+; V57 tmp35 [V57,T24] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V59 tmp37 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V60 tmp38 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -77,8 +77,8 @@
;* V66 tmp44 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V67 tmp45 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V69 tmp47 [V69,T17] ( 5, 12 ) int -> [fp+0x38] ptr "Inlining Arg"
-; V70 tmp48 [V70,T23] ( 3, 8 ) byref -> [fp+0x18] ptr "Inlining Arg"
+; V69 tmp47 [V69,T19] ( 3, 12 ) int -> [fp+0x38] spill-single-def ptr "Inlining Arg"
+; V70 tmp48 [V70,T25] ( 2, 8 ) byref -> [fp+0x18] spill-single-def ptr "Inlining Arg"
;* V71 tmp49 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V72 tmp50 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -92,7 +92,7 @@
; V81 tmp59 [V81,T48] ( 2, 4 ) long -> x0 "Inlining Arg"
; V82 tmp60 [V82,T49] ( 2, 4 ) long -> x1 "Inlining Arg"
; V83 tmp61 [V83,T14] ( 7, 15 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp62 [V84,T09] ( 15, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V84 tmp62 [V84,T09] ( 14, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
; V85 tmp63 [V85,T13] ( 6, 7 ) byref -> x21 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V86 tmp64 [V86,T08] ( 15, 21.50) int -> x22 "field V05._length (fldOffset=0x8)" P-INDEP
; V87 tmp65 [V87,T20] ( 7, 8 ) byref -> x23 single-def "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -132,7 +132,7 @@
; V121 tmp99 [V121,T43] ( 4, 4 ) long -> x2 "V01.[000..008)"
; V122 tmp100 [V122,T40] ( 5, 5 ) long -> x3 "V01.[008..016)"
; V123 GsCookie [V123 ] ( 1, 1 ) long -> [fp+0xB8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V124 cse0 [V124,T30] ( 4, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V124 cse0 [V124,T32] ( 3, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V125 cse1 [V125,T12] ( 4, 16 ) int -> [fp+0x34] spill-single-def "CSE - aggressive"
; V126 cse2 [V126,T26] ( 6, 7.50) int -> x3 multi-def "CSE - moderate"
; V127 cse3 [V127,T37] ( 3, 6 ) int -> x0 "CSE - moderate"
@@ -176,7 +176,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add w0, w1, w0
neg w0, w0, ASR #5
add w20, w0, #4
- tbnz w20, #31, G_M55503_IG48
+ tbnz w20, #31, G_M55503_IG46
add x21, fp, #152 // [V24 tmp2]
str w2, [x21]
lsr x0, x2, #32
@@ -193,13 +193,13 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add w0, w1, w0
neg w0, w0, ASR #5
add w22, w0, #4
- tbnz w22, #31, G_M55503_IG48
+ tbnz w22, #31, G_M55503_IG46
add x23, fp, #136 // [V25 tmp3]
stp xzr, xzr, [x23]
sub w0, w20, w22
add w24, w0, #1
cmp w24, #4
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
cmp w24, #0
cset x0, ge
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
@@ -278,7 +278,7 @@ G_M55503_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A80000 {x19
G_M55503_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
sxtw w5, w20
cmp w20, w22
- blt G_M55503_IG36
+ blt G_M55503_IG37
;; size=12 bbWeight=1 PerfScore 2.00
G_M55503_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
sub w6, w5, w22
@@ -383,11 +383,11 @@ G_M55503_IG25: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x2
bhi G_M55503_IG22
;; size=20 bbWeight=16 PerfScore 56.00
G_M55503_IG26: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
- cbz x13, G_M55503_IG31
+ cbz x13, G_M55503_IG32
;; size=4 bbWeight=8 PerfScore 8.00
G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w20
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
ubfiz x0, x6, #2, #32
add x9, x19, x0
; byrRegs +[x9]
@@ -402,7 +402,7 @@ G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21
str w5, [fp, #0x64] // [V14 loc12]
tbnz w1, #31, G_M55503_IG43
;; size=44 bbWeight=2 PerfScore 18.00
-G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000101000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; byrRegs -[x9]
mov x2, x21
; byrRegs +[x2]
@@ -417,60 +417,78 @@ G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57
blr x10
; byrRegs -[x0 x2]
; gcr arg pop 0
- ldr w4, [fp, #0x5C] // [V16 loc14]
- cmp w0, w4
+ ldr w2, [fp, #0x5C] // [V16 loc14]
+ cmp w0, w2
beq G_M55503_IG39
- add w1, w4, #1
+ add w1, w2, #1
cmp w0, w1
- bne G_M55503_IG44
+ beq G_M55503_IG29
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcr arg pop 0
+ ;; size=104 bbWeight=2 PerfScore 44.00
+G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr x0, [fp, #0x10] // [V124 cse0]
; byrRegs +[x0]
- ldr w5, [fp, #0x60] // [V15 loc13]
- sub w1, w20, w5
- tbnz w1, #31, G_M55503_IG38
- ;; size=76 bbWeight=2 PerfScore 38.00
-G_M55503_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V70 tmp48]
+ ; GC ptr vars +{V70}
+ ldr w4, [fp, #0x60] // [V15 loc13]
+ sub w1, w20, w4
+ str w1, [fp, #0x38] // [V69 tmp47]
+ tbnz w1, #31, G_M55503_IG44
+ ;; size=24 bbWeight=2 PerfScore 15.00
+G_M55503_IG30: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V70}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; GC ptr vars -{V124}
mov x2, x21
; byrRegs +[x2]
mov w3, w22
- movz x4, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
+ movz x5, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint
+ movk x5, #0xD1FFAB1E LSL #16
+ movk x5, #0xD1FFAB1E LSL #32
+ ldr x5, [x5]
+ ; GC ptr vars -{V70}
+ blr x5
; byrRegs -[x0 x2]
; gcr arg pop 0
ldr x2, [fp, #0x40] // [V19 loc17]
sub x2, x2, #1
cmp w0, #1
- bne G_M55503_IG47
+ bne G_M55503_IG45
;; size=44 bbWeight=2 PerfScore 21.00
-G_M55503_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
mov x13, x2
ldp w6, w5, [fp, #0x60] // [V15 loc13], [V14 loc12]
;; size=8 bbWeight=1 PerfScore 2.50
-G_M55503_IG31: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w24
- bhs G_M55503_IG33
+ bhs G_M55503_IG34
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG32: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str w13, [x23, w6, UXTW #2]
;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w5, w20
- bhs G_M55503_IG35
+ bhs G_M55503_IG36
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str wzr, [x19, w5, UXTW #2]
;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr w8, [fp, #0x34] // [V125 cse1]
sxtw w5, w8
cmp w5, w22
bge G_M55503_IG10
;; size=16 bbWeight=4 PerfScore 16.00
-G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x19 x21]
ldp w1, w0, [x23, #0x08]
orr x1, x1, x0, LSL #32
@@ -482,12 +500,12 @@ G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0xB8] // [V123 GsCookie]
cmp xip0, xip1
- beq G_M55503_IG37
+ beq G_M55503_IG38
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x23]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 14.50
-G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x27, x28, [sp, #0xD1FFAB1E]
ldp x25, x26, [sp, #0xF0]
ldp x23, x24, [sp, #0xE0]
@@ -496,19 +514,11 @@ G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0xD1FFAB1E
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
...
-8 (-1.33%) : 105569.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueImmutableDictionary():ubyte:this (Tier1-OSR)
@@ -13,70 +13,68 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
; V01 loc0 [V01,T06] ( 9, 799.92) ubyte -> x20
; V02 loc1 [V02,T11] ( 6, 299.97) ref -> x21 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T17] ( 3, 1.02) ref -> x22 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T14] ( 3, 100 ) ref -> x22 class-hnd exact <<unknown class>>
; V04 loc3 [V04,T05] ( 17,1300.89) int -> x19
; V05 loc4 [V05 ] ( 5, 400.96) ref -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x25 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x24 class-hnd exact "Inlining Arg" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
; V10 tmp4 [V10,T07] ( 8, 799.92) ubyte -> x0 "Inline return value spill temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
; V12 tmp6 [V12,T03] ( 6,2512.96) int -> x0 "Inline stloc first use temp"
-; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
+; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V15 tmp9 [V15,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V17 tmp11 [V17,T00] ( 14,4759.57) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V17 tmp11 [V17,T00] ( 14,4759.57) ref -> x25 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V08._root (fldOffset=0x0)" P-INDEP
;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref "field V08._comparers (fldOffset=0x8)" P-INDEP
-; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x26 "field V09._root (fldOffset=0x0)" P-INDEP
-; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x27 "field V09._comparers (fldOffset=0x8)" P-INDEP
+; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x25 "field V09._root (fldOffset=0x0)" P-INDEP
+; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x26 "field V09._comparers (fldOffset=0x8)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref "field V11._root (fldOffset=0x0)" P-INDEP
-; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x27 "field V11._comparers (fldOffset=0x8)" P-INDEP
+; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x26 "field V11._comparers (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T01] ( 3,3632.75) int -> x2 "CSE - aggressive"
; V25 cse1 [V25,T02] ( 3,3048.48) ref -> x4 "CSE - aggressive"
; V26 cse2 [V26,T15] ( 3, 36.69) int -> x2 "CSE - aggressive"
; V27 cse3 [V27,T16] ( 3, 30.79) ref -> x4 "CSE - aggressive"
; V28 cse4 [V28,T09] ( 7, 400.98) int -> x23 "CSE - aggressive"
-; V29 cse5 [V29,T14] ( 4, 101.00) byref -> x24 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M61968_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- stp x23, x24, [sp, #0x48]
- stp x25, x26, [sp, #0x58]
- str x27, [sp, #0x68]
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V13 tmp7], [V13 tmp7+0x08]
- str xzr, [fp, #0x20] // [V13 tmp7+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V13 tmp7], [V13 tmp7+0x08]
+ str xzr, [fp, #0x28] // [V13 tmp7+0x10]
ldr w20, [fp, #0xB4]
ldp x22, x21, [fp, #0xA0]
; gcrRegs +[x21-x22]
ldr w19, [fp, #0x9C]
- ;; size=48 bbWeight=0.01 PerfScore 0.16
+ ;; size=44 bbWeight=0.01 PerfScore 0.15
G_M61968_IG02: ; bbWeight=0.01, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w23, [x22, #0x08]
cmp w23, w19
ble G_M61968_IG22
tbnz w19, #31, G_M61968_IG11
- add x24, x22, #16
- ; byrRegs +[x24]
- ;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x22]
- ldr x25, [x24, w19, UXTW #3]
- ; gcrRegs +[x25]
+ ;; size=16 bbWeight=0.01 PerfScore 0.06
+G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
+ add x0, x22, #16
+ ; byrRegs +[x0]
+ ldr x24, [x0, w19, UXTW #3]
+ ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24
- ldp x26, x27, [x21, #0x08]
- ; gcrRegs +[x26-x27]
- ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24
+ ldp x25, x26, [x21, #0x08]
+ ; gcrRegs +[x25-x26]
+ ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0]
+ mov x1, x24
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
@@ -85,44 +83,44 @@ G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=100000
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- ldrsb wzr, [x26]
- ;; size=48 bbWeight=98.99 PerfScore 2276.77
-G_M61968_IG04: ; bbWeight=1243.91, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
- ldr x4, [x26, #0x08]
+ ldrsb wzr, [x25]
+ ;; size=52 bbWeight=98.99 PerfScore 2326.27
+G_M61968_IG04: ; bbWeight=1243.91, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
+ ldr x4, [x25, #0x08]
; gcrRegs +[x4]
cbz x4, G_M61968_IG20
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2
beq G_M61968_IG08
;; size=20 bbWeight=1243.91 PerfScore 10573.27
-G_M61968_IG05: ; bbWeight=1144.92, gcrefRegs=E200010 {x4 x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M61968_IG05: ; bbWeight=1144.92, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2
ble G_M61968_IG07
;; size=8 bbWeight=1144.92 PerfScore 1717.39
-G_M61968_IG06: ; bbWeight=584.27, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG06: ; bbWeight=584.27, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG04
;; size=8 bbWeight=584.27 PerfScore 2337.08
-G_M61968_IG07: ; bbWeight=560.65, gcrefRegs=A200010 {x4 x21 x25 x27}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x26] +[x4]
- mov x26, x4
- ; gcrRegs +[x26]
+G_M61968_IG07: ; bbWeight=560.65, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x25] +[x4]
+ mov x25, x4
+ ; gcrRegs +[x25]
b G_M61968_IG04
;; size=8 bbWeight=560.65 PerfScore 840.98
-G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, nogc
+G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x4]
- ldp x0, x2, [x26, #0x20]
- stp x0, x2, [fp, #0x10]
- ldr x0, [x26, #0x30]
- str x0, [fp, #0x20]
+ ldp x0, x2, [x25, #0x20]
+ stp x0, x2, [fp, #0x18]
+ ldr x0, [x25, #0x30]
+ str x0, [fp, #0x28]
;; size=16 bbWeight=395.96 PerfScore 3563.64
G_M61968_IG09: ; bbWeight=395.96, isz, extend
- add x0, fp, #16 // [V13 tmp7]
+ add x0, fp, #24 // [V13 tmp7]
add x4, fp, #144 // [V05 loc4]
- mov x2, x25
+ mov x2, x24
; gcrRegs +[x2]
- mov x3, x27
+ mov x3, x26
; gcrRegs +[x3]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -132,7 +130,7 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
- ; gcrRegs -[x2-x3 x25-x27]
+ ; gcrRegs -[x2-x3 x24-x26]
; gcr arg pop 0
eor w0, w20, w0
uxtb w20, w0
@@ -140,25 +138,24 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend
cmp w23, w19
ble G_M61968_IG22
;; size=68 bbWeight=395.96 PerfScore 4751.52
-G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
b G_M61968_IG03
;; size=4 bbWeight=98.99 PerfScore 98.99
G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x22]
- ; byrRegs -[x24]
cmp w19, w23
bhs G_M61968_IG19
- add x24, x22, #16
- ; byrRegs +[x24]
- ldr x25, [x24, w19, UXTW #3]
- ; gcrRegs +[x25]
+ add x0, x22, #16
+ ; byrRegs +[x0]
+ ldr x24, [x0, w19, UXTW #3]
+ ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24
- ldp x26, x27, [x21, #0x08]
- ; gcrRegs +[x26-x27]
- ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24
+ ldp x25, x26, [x21, #0x08]
+ ; gcrRegs +[x25-x26]
+ ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0]
+ mov x1, x24
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
@@ -166,46 +163,45 @@ G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=000
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1]
- ; byrRegs -[x24]
; gcr arg pop 0
- ldrsb wzr, [x26]
+ ldrsb wzr, [x25]
;; size=60 bbWeight=1.00 PerfScore 25.00
-G_M61968_IG12: ; bbWeight=12.56, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x26, #0x08]
+G_M61968_IG12: ; bbWeight=12.56, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
+ ldr x4, [x25, #0x08]
; gcrRegs +[x4]
cbz x4, G_M61968_IG21
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2
beq G_M61968_IG16
;; size=20 bbWeight=12.56 PerfScore 106.80
-G_M61968_IG13: ; bbWeight=11.56, gcrefRegs=E600010 {x4 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M61968_IG13: ; bbWeight=11.56, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2
ble G_M61968_IG15
;; size=8 bbWeight=11.56 PerfScore 17.35
-G_M61968_IG14: ; bbWeight=5.90, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M61968_IG14: ; bbWeight=5.90, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG12
;; size=8 bbWeight=5.90 PerfScore 23.61
-G_M61968_IG15: ; bbWeight=5.66, gcrefRegs=A600010 {x4 x21 x22 x25 x27}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x26] +[x4]
- mov x26, x4
- ; gcrRegs +[x26]
+G_M61968_IG15: ; bbWeight=5.66, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x25] +[x4]
+ mov x25, x4
+ ; gcrRegs +[x25]
b G_M61968_IG12
...
+20 (+3.76%) : 39037.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T09] ( 4, 3.02) byref -> x22 single-def
; V03 arg3 [V03,T07] ( 4, 4.03) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.04) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.04) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100.00) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=101.01 PerfScore 2323.20
-G_M3489_IG05: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
beq G_M3489_IG17
- ;; size=24 bbWeight=100.00 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x0, x23, x28
lsl x0, x0, #1
@@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
sxtw w3, w0
;; size=28 bbWeight=0.51 PerfScore 3.30
G_M3489_IG12: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.02 PerfScore 1.02
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- sub w0, w27, #1
- and w0, w27, w0
- sub w1, w0, #1
- and w27, w0, w1
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- cbnz w27, G_M3489_IG09
- b G_M3489_IG05
- ;; size=28 bbWeight=0.01 PerfScore 0.04
-G_M3489_IG14: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22]
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M3489_IG15: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add w0, w23, w28
;; size=8 bbWeight=1.01 PerfScore 2.52
-G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.01, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=1.01 PerfScore 9.58
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
+ sub w0, w27, #1
+ and w0, w27, w0
+ sub w1, w0, #1
+ and w27, w0, w1
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ cbnz w27, G_M3489_IG09
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG06
+ ;; size=48 bbWeight=0.01 PerfScore 0.08
+G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend
@@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3895.74, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3895.74, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -278,7 +285,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+3.76%) : 149382.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T09] ( 4, 3.02) byref -> x22 single-def
; V03 arg3 [V03,T07] ( 4, 4.04) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.05) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.05) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=101.01 PerfScore 2323.24
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x0, x23, x28
lsl x0, x0, #1
@@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
sxtw w3, w0
;; size=28 bbWeight=0.51 PerfScore 3.31
G_M3489_IG12: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.02 PerfScore 1.02
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- sub w0, w27, #1
- and w0, w27, w0
- sub w1, w0, #1
- and w27, w0, w1
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- cbnz w27, G_M3489_IG09
- b G_M3489_IG05
- ;; size=28 bbWeight=0.01 PerfScore 0.04
-G_M3489_IG14: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22]
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M3489_IG15: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add w0, w23, w28
;; size=8 bbWeight=1.01 PerfScore 2.53
-G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.01, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=1.01 PerfScore 9.60
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
+ sub w0, w27, #1
+ and w0, w27, w0
+ sub w1, w0, #1
+ and w27, w0, w1
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ cbnz w27, G_M3489_IG09
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG06
+ ;; size=48 bbWeight=0.01 PerfScore 0.08
+G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend
@@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3895.89, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3895.88, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -278,7 +285,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+4.51%) : 143938.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T14] ( 4, 3.59) byref -> x22 single-def
; V03 arg3 [V03,T09] ( 4, 7.11) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,610.10) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,610.10) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=102.84, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=102.84 PerfScore 2365.21
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.33, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
- beq G_M3489_IG19
- ;; size=24 bbWeight=100 PerfScore 650.00
+ beq G_M3489_IG18
+ ;; size=24 bbWeight=99.33 PerfScore 645.62
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -163,9 +163,27 @@ G_M3489_IG09: ; bbWeight=3.51, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG17
+ bne G_M3489_IG12
;; size=24 bbWeight=3.51 PerfScore 15.80
-G_M3489_IG10: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG10: ; bbWeight=2.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add w0, w23, w28
+ ;; size=8 bbWeight=2.84 PerfScore 7.09
+G_M3489_IG11: ; bbWeight=2.84, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x70]
+ ldp x25, x26, [sp, #0x60]
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp d10, d11, [sp, #0x20]
+ ldp d8, d9, [sp, #0x10]
+ ldp fp, lr, [sp], #0x80
+ add sp, sp, #0xD1FFAB1E
+ ret lr
+ ;; size=40 bbWeight=2.84 PerfScore 26.93
+G_M3489_IG12: ; bbWeight=1.59, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x0, x23, x28
lsl x0, x0, #1
@@ -173,9 +191,9 @@ G_M3489_IG10: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
; byrRegs +[x0]
ubfiz x2, x21, #1, #32
cmp x2, #10
- bne G_M3489_IG12
+ bne G_M3489_IG14
;; size=28 bbWeight=1.59 PerfScore 10.36
-G_M3489_IG11: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x19 x22}, byref
+G_M3489_IG13: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x19 x22}, byref
mov x1, x22
; byrRegs +[x1]
ldr x2, [x0]
@@ -187,9 +205,9 @@ G_M3489_IG11: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
cmp x2, x3
ccmp x0, x1, 0, eq
cset x3, eq
- b G_M3489_IG13
+ b G_M3489_IG15
;; size=36 bbWeight=0.80 PerfScore 11.96
-G_M3489_IG12: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x19 x22}, byref
+G_M3489_IG14: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x19 x22}, byref
; byrRegs +[x0]
mov x1, x22
; byrRegs +[x1]
@@ -202,10 +220,10 @@ G_M3489_IG12: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
; gcr arg pop 0
sxtw w3, w0
;; size=28 bbWeight=0.80 PerfScore 5.18
-G_M3489_IG13: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG16
+G_M3489_IG15: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+ cbnz w3, G_M3489_IG20
;; size=4 bbWeight=1.59 PerfScore 1.59
-G_M3489_IG14: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG16: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
sub w0, w27, #1
and w0, w27, w0
sub w1, w0, #1
@@ -213,33 +231,19 @@ G_M3489_IG14: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
cbnz w27, G_M3489_IG09
;; size=24 bbWeight=0.68 PerfScore 2.71
-G_M3489_IG15: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
- b G_M3489_IG05
- ;; size=4 bbWeight=0.67 PerfScore 0.67
-G_M3489_IG16: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19 x22]
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M3489_IG17: ; bbWeight=2.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG17: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- add w0, w23, w28
- ;; size=8 bbWeight=2.84 PerfScore 7.09
-G_M3489_IG18: ; bbWeight=2.84, epilog, nogc, extend
- ldp x27, x28, [sp, #0x70]
- ldp x25, x26, [sp, #0x60]
- ldp x23, x24, [sp, #0x50]
- ldp x21, x22, [sp, #0x40]
- ldp x19, x20, [sp, #0x30]
- ldp d10, d11, [sp, #0x20]
- ldp d8, d9, [sp, #0x10]
- ldp fp, lr, [sp], #0x80
- add sp, sp, #0xD1FFAB1E
- ret lr
- ;; size=40 bbWeight=2.84 PerfScore 26.93
-G_M3489_IG19: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG06
+ ;; size=24 bbWeight=0.67 PerfScore 4.38
+G_M3489_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M3489_IG20: ; bbWeight=0.00, epilog, nogc, extend
+G_M3489_IG19: ; bbWeight=0.00, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -251,7 +255,11 @@ G_M3489_IG20: ; bbWeight=0.00, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=0.00 PerfScore 0.02
-G_M3489_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref
+G_M3489_IG20: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ b G_M3489_IG10
+ ;; size=8 bbWeight=0.80 PerfScore 1.59
+G_M3489_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
; byrRegs +[x19 x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -271,7 +279,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 4029.12, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 556, prolog size 52, PerfScore 4029.24, instruction count 139, allocated bytes for code 556 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -282,7 +290,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 139 (0x0008b) Actual length = 556 (0x00022c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.linux.arm64.checked.mch
+0 (0.00%) : 6506.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -79,12 +79,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M44603_IG12
+ cbnz w0, G_M44603_IG10
;; size=24 bbWeight=2 PerfScore 13.00
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- b G_M44603_IG10
- ;; size=4 bbWeight=4 PerfScore 4.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ b G_M44603_IG12
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -110,7 +112,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-Total bytes of code 156, prolog size 16, PerfScore 67.25, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 156, prolog size 16, PerfScore 63.75, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 13807.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> x19 class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate>
; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [fp+0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V03 loc2 [V03,T21] ( 13, 43 ) ref -> [fp+0x38] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>>
@@ -21,7 +21,7 @@
; V10 loc9 [V10,T14] ( 9, 53 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain>
; V11 loc10 [V11,T11] ( 4, 72 ) ubyte -> x22
; V12 loc11 [V12,T23] ( 3, 40 ) int -> x21
-; V13 loc12 [V13,T02] ( 5,132 ) int -> x23
+; V13 loc12 [V13,T03] ( 5,132 ) int -> x23
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
; V15 loc14 [V15,T54] ( 3, 10 ) int -> x19
; V16 loc15 [V16,T25] ( 5, 33 ) int -> x20
@@ -33,7 +33,7 @@
;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp5 [V23,T44] ( 2, 16 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
; V24 tmp6 [V24,T12] ( 8, 64 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T37] ( 3, 24 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V27 tmp9 [V27,T38] ( 3, 24 ) ref -> x21 class-hnd exact "dup spill" <System.Object[]>
;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback>
@@ -144,10 +144,10 @@
;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 5,288 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V137 tmp119 [V137,T03] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String>
-; V138 tmp120 [V138,T01] ( 6,132 ) ref -> x25
-; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 5,320 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
+; V137 tmp119 [V137,T04] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V138 tmp120 [V138,T02] ( 6,148 ) ref -> x25
+; V139 tmp121 [V139,T01] ( 3,192 ) ref -> x25 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
@@ -165,8 +165,8 @@
;* V154 tmp136 [V154,T107] ( 0, 0 ) ref -> zero-ref
;* V155 tmp137 [V155 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V156 tmp138 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
-; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x25 class-hnd "Inlining Arg" <System.FormattableString>
-; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x24
+; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x24 class-hnd "Inlining Arg" <System.FormattableString>
+; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x25
; V159 tmp141 [V159,T31] ( 2, 32 ) ref -> x26
;* V160 tmp142 [V160 ] ( 0, 0 ) ref -> zero-ref
;* V161 tmp143 [V161 ] ( 0, 0 ) ref -> zero-ref
@@ -235,7 +235,7 @@
; V224 tmp206 [V224,T76] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V225 tmp207 [V225,T77] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V226 tmp208 [V226,T13] ( 6, 54 ) ref -> x1 "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> x0 "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> x0 "argument with side effect"
; V228 tmp210 [V228,T34] ( 2, 32 ) ref -> x0 "argument with side effect"
; V229 tmp211 [V229,T19] ( 3, 48 ) ref -> x0 "argument with side effect"
; V230 tmp212 [V230,T104] ( 2, 4 ) long -> x2 "argument with side effect"
@@ -247,13 +247,13 @@
; V236 cse1 [V236,T115] ( 3, 3 ) ref -> x1 "CSE - conservative"
; V237 cse2 [V237,T116] ( 3, 3 ) ref -> x1 "CSE - conservative"
; V238 cse3 [V238,T117] ( 3, 3 ) ref -> x1 "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
; V240 cse5 [V240,T118] ( 3, 3 ) ref -> x0 "CSE - conservative"
; V241 cse6 [V241,T82] ( 4, 4 ) ref -> x19 "CSE - conservative"
; V242 cse7 [V242,T80] ( 5, 5 ) ref -> x19 "CSE - conservative"
; V243 cse8 [V243,T119] ( 3, 3 ) int -> x21 "CSE - conservative"
; V244 cse9 [V244,T22] ( 6, 43 ) int -> x19 multi-def "CSE - moderate"
-; V245 cse10 [V245,T10] ( 3, 80 ) byref -> x24 "CSE - aggressive"
+; V245 cse10 [V245,T10] ( 3, 96 ) byref -> x24 "CSE - aggressive"
; V246 rat0 [V246,T79] ( 3, 6 ) ref -> x6 "delegate invoke call"
;
; Lcl frame size = 80
@@ -272,7 +272,7 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x48] // [V00 this]
; GC ptr vars +{V00}
;; size=44 bbWeight=1 PerfScore 10.00
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
stp xzr, xzr, [fp, #0x38] // [V03 loc2], [V02 loc1]
; GC ptr vars +{V02 V03}
@@ -418,7 +418,7 @@ G_M34773_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0xA0
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200020 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200040 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
; GC ptr vars +{V02 V03 V21 V41}
ldr x1, [x19, #0x30]
@@ -475,7 +475,7 @@ G_M34773_IG09: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}
str xzr, [fp, #0x28] // [V05 loc4]
; GC ptr vars +{V05}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200020 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200040 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V21 V41}
movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -494,7 +494,7 @@ G_M34773_IG10: ; bbWeight=1, gcVars=0000000000000000000000000000001000000
ldr w2, [x2]
tbnz w2, #0, G_M34773_IG12
;; size=52 bbWeight=1 PerfScore 17.00
-G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208020 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208040 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -681,7 +681,7 @@ G_M34773_IG16: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
;; size=24 bbWeight=1 PerfScore 6.00
G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -701,7 +701,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
@@ -724,7 +724,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
;; size=44 bbWeight=1 PerfScore 23.50
G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -744,12 +744,12 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -769,7 +769,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0 x19]
@@ -810,7 +810,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
; gcrRegs +[x19]
cbz x19, G_M34773_IG26
;; size=104 bbWeight=1 PerfScore 42.50
-G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000020 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000040 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
; GC ptr vars -{V03}
ldr x0, [x19]
@@ -897,7 +897,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x20, [x0]
; gcrRegs +[x20]
ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
@@ -911,7 +911,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x3
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=60 bbWeight=1 PerfScore 18.00
G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x48] // [V00 this]
@@ -919,7 +919,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x1, [x0, #0x38]
; gcrRegs +[x1]
ldr x1, [x1, #0x10]
- cbz x1, G_M34773_IG57
+ cbz x1, G_M34773_IG58
ldr x1, [x1, #0x08]
mov x0, x1
ldr x1, [x1]
@@ -930,7 +930,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this
@@ -956,7 +956,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [x0, #0x08]
cbnz w19, G_M34773_IG29
;; size=120 bbWeight=1 PerfScore 50.00
-G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208020 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208040 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov x19, x20
; gcrRegs +[x19]
@@ -1021,23 +1021,23 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
;; size=48 bbWeight=1 PerfScore 24.00
G_M34773_IG31: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x30] // [V04 loc3]
; gcrRegs +[x0]
- cbz x0, G_M34773_IG50
+ cbz x0, G_M34773_IG51
;; size=8 bbWeight=8 PerfScore 24.00
G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0x30] // [V04 loc3]
; gcrRegs +[x0]
ldr w19, [x0, #0x08]
- cbz w19, G_M34773_IG50
+ cbz w19, G_M34773_IG51
stp xzr, xzr, [fp, #0x18] // [V10 loc9], [V09 loc8]
; GC ptr vars +{V09 V10}
;; size=16 bbWeight=4 PerfScore 28.00
-G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
@@ -1061,7 +1061,7 @@ G_M34773_IG33: ; bbWeight=4, gcVars=0000000000000000000000000000000000000
; gcr arg pop 0
str x0, [fp, #0x20] // [V09 loc8]
...
+0 (0.00%) : 32936.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)
@@ -198,7 +198,7 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
; gcr arg pop 0
mov x26, x0
; gcrRegs +[x26]
- cbz x21, G_M41722_IG46
+ cbz x21, G_M41722_IG47
add x14, x26, #8
; byrRegs +[x14]
mov x15, x21
@@ -208,12 +208,12 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
; byrRegs -[x14]
ldr w0, [x20, #0x08]
cmp w0, #0
- ble G_M41722_IG41
+ ble G_M41722_IG42
;; size=64 bbWeight=1 PerfScore 12.50
G_M41722_IG03: ; bbWeight=4, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x08]
cmp w24, w0
- bhs G_M41722_IG43
+ bhs G_M41722_IG44
add x0, x20, #12
; byrRegs +[x0]
ldrh w0, [x0, w24, UXTW #2]
@@ -228,7 +228,7 @@ G_M41722_IG04: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M41722_IG12
+ cbz w0, G_M41722_IG13
b G_M41722_IG06
;; size=28 bbWeight=2 PerfScore 15.00
G_M41722_IG05: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
@@ -236,18 +236,18 @@ G_M41722_IG05: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M41722_IG12
+ tbz w0, #7, G_M41722_IG13
;; size=20 bbWeight=2 PerfScore 11.00
G_M41722_IG06: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
mov w25, #1
add w24, w24, #1
mov w27, w24
- b G_M41722_IG40
+ b G_M41722_IG41
;; size=16 bbWeight=2 PerfScore 5.00
G_M41722_IG07: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M41722_IG48
+ cbz x0, G_M41722_IG49
ldr w1, [x26, #0x10]
ldr w2, [x0, #0x08]
cmp w2, w1
@@ -265,52 +265,54 @@ G_M41722_IG08: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0
G_M41722_IG09: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
uxth w0, w0
cmp w0, #0xD1FFAB1E
- blo G_M41722_IG10
+ blo G_M41722_IG11
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M41722_IG14
- b G_M41722_IG11
- ;; size=40 bbWeight=8 PerfScore 76.00
-G_M41722_IG10: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M41722_IG12
+ ;; size=36 bbWeight=8 PerfScore 68.00
+G_M41722_IG10: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
+ b G_M41722_IG15
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M41722_IG11: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M41722_IG14
+ tbz w0, #7, G_M41722_IG15
;; size=20 bbWeight=8 PerfScore 44.00
-G_M41722_IG11: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG12: ; bbWeight=8, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M41722_IG48
+ cbz x0, G_M41722_IG49
ldr w1, [x26, #0x10]
sxtw w2, w1
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w2
- bls G_M41722_IG12
+ bls G_M41722_IG13
add w0, w1, #1
str w0, [x26, #0x10]
;; size=36 bbWeight=8 PerfScore 108.00
-G_M41722_IG12: ; bbWeight=16, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG13: ; bbWeight=16, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
cbnz w25, G_M41722_IG07
;; size=4 bbWeight=16 PerfScore 16.00
-G_M41722_IG13: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
- b G_M41722_IG15
- ;; size=4 bbWeight=2 PerfScore 2.00
G_M41722_IG14: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
+ b G_M41722_IG16
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
mov w25, wzr
;; size=4 bbWeight=2 PerfScore 1.00
-G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG16: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
add x0, x20, #12
; byrRegs +[x0]
ldrh w0, [x0, w24, UXTW #2]
; byrRegs -[x0]
cmp w0, #37
- bne G_M41722_IG16
+ bne G_M41722_IG17
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -341,7 +343,7 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0
sxtw w27, w0
ldr w0, [x20, #0x08]
cmp w24, w0
- bhs G_M41722_IG43
+ bhs G_M41722_IG44
add x0, x20, #12
; byrRegs +[x0]
ldrh w24, [x0, w24, UXTW #2]
@@ -349,12 +351,12 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0
ldr x0, [x26, #0x08]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M41722_IG48
+ cbz x0, G_M41722_IG49
ldr w1, [x26, #0x10]
sxtw w2, w1
ldr w3, [x0, #0x08]
cmp w3, w2
- bls G_M41722_IG17
+ bls G_M41722_IG18
add w1, w1, #1
str w1, [x26, #0x10]
add x0, x0, #12
@@ -362,37 +364,37 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0
; byrRegs +[x0]
ldrh w0, [x0, w2, UXTW #2]
; byrRegs -[x0]
- b G_M41722_IG18
+ b G_M41722_IG19
;; size=160 bbWeight=2 PerfScore 85.00
-G_M41722_IG16: ; bbWeight=1, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG17: ; bbWeight=1, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
mov w27, w24
- b G_M41722_IG40
+ b G_M41722_IG41
;; size=8 bbWeight=1 PerfScore 1.50
-G_M41722_IG17: ; bbWeight=2, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG18: ; bbWeight=2, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
; gcrRegs +[x21]
movn w0, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M41722_IG18: ; bbWeight=2, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG19: ; bbWeight=2, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
uxth w2, w0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M41722_IG19: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG20: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
sxth w0, w2
cmn w0, #1
- bne G_M41722_IG21
+ bne G_M41722_IG22
;; size=12 bbWeight=16 PerfScore 32.00
-G_M41722_IG20: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG21: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
mov w28, wzr
;; size=4 bbWeight=8 PerfScore 4.00
-G_M41722_IG21: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG22: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x18]
ldr x1, [x21, #0x08]
; gcrRegs +[x1]
ldr w3, [x1, #0x08]
cmp w3, w0
- bls G_M41722_IG23
+ bls G_M41722_IG24
;; size=20 bbWeight=16 PerfScore 168.00
-G_M41722_IG22: ; bbWeight=8, gcrefRegs=4380002 {x1 x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG23: ; bbWeight=8, gcrefRegs=4380002 {x1 x19 x20 x21 x26}, byrefRegs=0000 {}, byref
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -400,9 +402,9 @@ G_M41722_IG22: ; bbWeight=8, gcrefRegs=4380002 {x1 x19 x20 x21 x26}, byre
ldr w0, [x21, #0x18]
add w0, w0, #1
str w0, [x21, #0x18]
- b G_M41722_IG24
+ b G_M41722_IG25
;; size=24 bbWeight=8 PerfScore 56.00
-G_M41722_IG23: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG24: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
mov x0, x21
; gcrRegs +[x0]
@@ -415,32 +417,32 @@ G_M41722_IG23: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRe
; gcrRegs -[x0]
; gcr arg pop 0
;; size=28 bbWeight=8 PerfScore 52.00
-G_M41722_IG24: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG25: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M41722_IG48
+ cbz x0, G_M41722_IG49
ldr w1, [x26, #0x10]
ldr w2, [x0, #0x08]
cmp w2, w1
- bls G_M41722_IG26
+ bls G_M41722_IG27
;; size=24 bbWeight=16 PerfScore 184.00
-G_M41722_IG25: ; bbWeight=8, gcrefRegs=4380001 {x0 x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG26: ; bbWeight=8, gcrefRegs=4380001 {x0 x19 x20 x21 x26}, byrefRegs=0000 {}, byref
add x0, x0, #12
; gcrRegs -[x0]
; byrRegs +[x0]
ldrh w1, [x0, w1, UXTW #2]
- b G_M41722_IG27
+ b G_M41722_IG28
;; size=12 bbWeight=8 PerfScore 36.00
-G_M41722_IG26: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
+G_M41722_IG27: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
movn w1, #0
;; size=4 bbWeight=8 PerfScore 4.00
-G_M41722_IG27: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG28: ; bbWeight=16, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
uxth w2, w1
cmp w2, #0xD1FFAB1E
- blo G_M41722_IG29
+ blo G_M41722_IG30
;; size=12 bbWeight=16 PerfScore 32.00
-G_M41722_IG28: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG29: ; bbWeight=8, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
str w1, [fp, #0x48] // [V56 tmp41]
...
+0 (0.00%) : 45508.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
@@ -42,7 +42,7 @@
;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V32 tmp26 [V32,T36] ( 3, 6 ) int -> x26 "Inline return value spill temp"
; V33 tmp27 [V33,T37] ( 4, 8 ) int -> x0 "Inline stloc first use temp"
-; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
+; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x22 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp30 [V36,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -66,7 +66,7 @@
; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> x28 class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount>
;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount>
;* V57 tmp51 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 "Inlining Arg"
+; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V60 tmp54 [V60,T60] ( 2, 2 ) int -> x21 "Single return block return value"
; V61 tmp55 [V61,T25] ( 6, 13 ) int -> x20 "V01.[000..004)"
@@ -110,7 +110,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [fp, #0x38] // [V01 arg1]
ldrb w0, [x19, #0x4F]
- cbnz w0, G_M55237_IG91
+ cbnz w0, G_M55237_IG92
bl <unknown method>
; gcr arg pop 0
sxtw w21, w0
@@ -120,7 +120,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x44]
cmp w21, w0
- beq G_M55237_IG92
+ beq G_M55237_IG93
add x22, x19, #80
; byrRegs +[x22]
mov x0, x22
@@ -142,10 +142,10 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {
mrs x0, tpidr_el0
ldr w1, [x0, #0xD1FFAB1E]
cmp w1, #4
- blt G_M55237_IG93
+ blt G_M55237_IG94
ldr x0, [x0, #0xD1FFAB1E]
ldr x0, [x0, #0x20]
- cbz x0, G_M55237_IG93
+ cbz x0, G_M55237_IG94
ldr x0, [x0]
; byrRegs +[x0]
add x23, x0, #16
@@ -233,7 +233,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=2080000 {x19 x25}, byrefRegs=C0
; gcrRegs +[x24]
ldr w0, [x24, #0x18]
cmp w0, #0
- bgt G_M55237_IG94
+ bgt G_M55237_IG95
ldr w1, [x19, #0x40]
cmp w21, w1
bne G_M55237_IG35
@@ -287,10 +287,10 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {
mrs x0, tpidr_el0
ldr w1, [x0, #0xD1FFAB1E]
cmp w1, #4
- blt G_M55237_IG95
+ blt G_M55237_IG96
ldr x0, [x0, #0xD1FFAB1E]
ldr x0, [x0, #0x20]
- cbz x0, G_M55237_IG95
+ cbz x0, G_M55237_IG96
ldr x0, [x0]
; byrRegs +[x0]
add x23, x0, #16
@@ -512,7 +512,7 @@ G_M55237_IG36: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
ldr w0, [x19, #0x48]
mov w1, #0xD1FFAB1E
cmp w0, w1
- blo G_M55237_IG88
+ blo G_M55237_IG84
cmn w20, #1
beq G_M55237_IG38
;; size=24 bbWeight=4 PerfScore 26.00
@@ -530,11 +530,11 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
sub w0, w0, w1
cmp w0, w20
ccmp w0, #0, nc, lt
- blt G_M55237_IG84
+ blt G_M55237_IG85
sub w26, w20, w0
;; size=28 bbWeight=2 PerfScore 12.00
G_M55237_IG40: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
- cbz w26, G_M55237_IG84
+ cbz w26, G_M55237_IG85
;; size=4 bbWeight=2 PerfScore 2.00
G_M55237_IG41: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
cmp w25, #20
@@ -883,7 +883,7 @@ G_M55237_IG74: ; bbWeight=4, gcrefRegs=1080002 {x1 x19 x24}, byrefRegs=C0
; byrRegs -[x2]
; gcr arg pop 0
sxtw w21, w0
- cbz w21, G_M55237_IG86
+ cbz w21, G_M55237_IG87
ldr x0, [x24, #0x10]
ldr x26, [x19, #0x28]
cmp x0, x26
@@ -964,13 +964,55 @@ G_M55237_IG83: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
; gcrRegs -[x28]
b G_M55237_IG36
;; size=4 bbWeight=4 PerfScore 4.00
-G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19 x24]
+G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x23]
+ ldr w0, [x19, #0x48]
+ add w0, w0, #1
+ str w0, [x19, #0x48]
+ ldr w0, [x24, #0x18]
+ add w0, w0, #1
+ str w0, [x24, #0x18]
+ b G_M55237_IG89
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
+ ; gcrRegs -[x19 x24]
+ ldr w0, [x22]
+ cbnz w0, G_M55237_IG86
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 6.25
+G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+ stlr wzr, [x22]
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M55237_IG87: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x22]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M55237_IG88: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x80]
+ ldp x25, x26, [sp, #0x70]
+ ldp x23, x24, [sp, #0x60]
+ ldp x21, x22, [sp, #0x50]
+ ldp x19, x20, [sp, #0x40]
+ ldp fp, lr, [sp], #0x90
+ ret lr
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M55237_IG89: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ ; byrRegs +[x22]
mov x19, x22
; byrRegs +[x19]
ldr w0, [x19]
- cbnz w0, G_M55237_IG85
+ cbnz w0, G_M55237_IG90
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -985,56 +1027,11 @@ G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}
; byrRegs -[x22]
; gcr arg pop 0
;; size=56 bbWeight=0.50 PerfScore 6.50
-G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- stlr wzr, [x19]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M55237_IG87: ; bbWeight=0.50, epilog, nogc, extend
- ldp x27, x28, [sp, #0x80]
- ldp x25, x26, [sp, #0x70]
- ldp x23, x24, [sp, #0x60]
- ldp x21, x22, [sp, #0x50]
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x90
- ret lr
- ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG88: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; gcrRegs +[x19 x24]
- ; byrRegs +[x22]
- ldr w0, [x19, #0x48]
- add w0, w0, #1
- str w0, [x19, #0x48]
- ldr w0, [x24, #0x18]
- add w0, w0, #1
- str w0, [x24, #0x18]
- mov x19, x22
- ; gcrRegs -[x19]
- ; byrRegs +[x19]
- ldr w0, [x19]
- cbnz w0, G_M55237_IG89
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x24]
- ; byrRegs -[x22]
- ; gcr arg pop 0
- ;; size=80 bbWeight=0.50 PerfScore 11.00
-G_M55237_IG89: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stlr wzr, [x19]
uxtb w0, w21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG91: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x80]
ldp x25, x26, [sp, #0x70]
ldp x23, x24, [sp, #0x60]
@@ -1043,7 +1040,7 @@ G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x90
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; byrRegs -[x19]
mov x0, x19
@@ -1057,7 +1054,7 @@ G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -1097,7 +1094,7 @@ G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=88 bbWeight=0 PerfScore 0.00
-G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M55237_IG94: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x19]
; byrRegs +[x22]
mov w0, #4
@@ -1108,7 +1105,7 @@ G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; byrRegs +[x23]
...
+4 (+0.24%) : 12608.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan1[ushort],System.ReadOnlyMemory
1[ubyte]):this (Tier0-FullOpts)
@@ -583,12 +583,12 @@ G_M6729_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M6729_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x0]
- cbz x0, G_M6729_IG37
+ cbz x0, G_M6729_IG39
mov w19, wzr
ldr w0, [fp, #0x40] // [V10 loc7]
; gcrRegs -[x0]
cmp w0, #0
- ble G_M6729_IG34
+ ble G_M6729_IG37
ldr x0, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x0]
ldr w20, [x0, #0x08]
@@ -596,7 +596,7 @@ G_M6729_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M6729_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cmp w19, w20
- bhs G_M6729_IG35
+ bhs G_M6729_IG33
ldr x0, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x0]
ubfiz x1, x19, #6, #32
@@ -608,17 +608,30 @@ G_M6729_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x1, xzr
swpal x1, x21, [x0]
; gcrRegs +[x21]
- cbz x21, G_M6729_IG33
+ cbz x21, G_M6729_IG36
;; size=40 bbWeight=8 PerfScore 104.00
G_M6729_IG31: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0001 {x0}, byref, isz
ldr w1, [x0, #0x08]
lsr w22, w1, #31
- cbnz w22, G_M6729_IG32
- cbz w1, G_M6729_IG32
+ cbnz w22, G_M6729_IG35
+ cbz w1, G_M6729_IG35
ldr w0, [x21, #0x08]
; byrRegs -[x0]
cmp w0, w1
- blo G_M6729_IG36
+ bhs G_M6729_IG34
+ ;; size=28 bbWeight=4 PerfScore 42.00
+G_M6729_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x21]
+ ; GC ptr vars -{V06}
+ b G_M6729_IG38
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M6729_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M6729_IG34: ; bbWeight=4, gcVars=0000000000000080 {V06}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x21]
+ ; GC ptr vars +{V06 V07}
add x0, x21, #16
; byrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -628,8 +641,8 @@ G_M6729_IG31: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0001 {x0},
blr x2
; byrRegs -[x0]
; gcr arg pop 0
- ;; size=52 bbWeight=4 PerfScore 66.00
-G_M6729_IG32: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=4 PerfScore 24.00
+G_M6729_IG35: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
movz x23, #0xD1FFAB1E
movk x23, #0xD1FFAB1E LSL #16
movk x23, #0xD1FFAB1E LSL #32
@@ -646,13 +659,13 @@ G_M6729_IG32: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, by
; gcrRegs -[x0-x1 x21]
; gcr arg pop 0
;; size=44 bbWeight=4 PerfScore 44.00
-G_M6729_IG33: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6729_IG36: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w19, w19, #1
ldr w0, [fp, #0x40] // [V10 loc7]
cmp w19, w0
blt G_M6729_IG30
;; size=16 bbWeight=8 PerfScore 32.00
-G_M6729_IG34: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
@@ -673,17 +686,13 @@ G_M6729_IG34: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
ldr wzr, [x0]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V06 V07}
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M6729_IG37
+ b G_M6729_IG39
;; size=76 bbWeight=1 PerfScore 20.00
-G_M6729_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M6729_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -692,7 +701,7 @@ G_M6729_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
@@ -751,7 +760,7 @@ G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=168 bbWeight=1 PerfScore 51.00
-G_M6729_IG38: ; bbWeight=1, funclet epilog, nogc, extend
+G_M6729_IG40: ; bbWeight=1, funclet epilog, nogc, extend
ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
@@ -760,7 +769,7 @@ G_M6729_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 12.50
-Total bytes of code 1700, prolog size 68, PerfScore 734.50, instruction count 425, allocated bytes for code 1700 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
+Total bytes of code 1704, prolog size 68, PerfScore 734.50, instruction count 426, allocated bytes for code 1704 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -815,7 +824,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
+ Function Length : 167 (0x000a7) Actual length = 668 (0x00029c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+20 (+3.91%) : 48292.dasm - System.String:Concat(System.String[]):System.String (Tier1)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -33,10 +33,10 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value"
; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG23
- cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25
+ cbz w21, G_M46295_IG19
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG17
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG14
- cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16
+ cbnz x23, G_M46295_IG12
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08]
sub w0, w0, w24
cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12
; byrRegs +[x2]
sbfiz x0, x24, #1, #32
@@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -266,7 +277,7 @@ Unwind Info:
E bit : 0
...
coreclr_tests.run.linux.arm64.checked.mch
-12 (-3.19%) : 254388.dasm - System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
@@ -35,8 +35,8 @@
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x8)" P-INDEP
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref "field V19.key (fldOffset=0x0)" P-INDEP
;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V19.value (fldOffset=0x8)" P-INDEP
-; V26 tmp22 [V26,T02] ( 5, 7.03) ref -> x20 single-def "V01.[000..008)"
-; V27 tmp23 [V27,T13] ( 3, 3.44) int -> x21 "V01.[008..012)"
+; V26 tmp22 [V26,T02] ( 4, 7.03) ref -> x20 single-def "V01.[000..008)"
+; V27 tmp23 [V27,T13] ( 2, 3.44) int -> x21 "V01.[008..012)"
; V28 tmp24 [V28,T00] ( 4, 5.73) int -> registers "V01.[012..016)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "V01.[016..020)"
; V30 tmp26 [V30,T11] ( 4, 1.14) ref -> x23 "V01.[024..032)"
@@ -65,7 +65,7 @@ G_M2401_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M2401_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x20]
; gcrRegs +[x20]
- cbz x20, G_M2401_IG10
+ cbz x20, G_M2401_IG09
ldr w21, [x20, #0x44]
mov w22, wzr
b G_M2401_IG04
@@ -73,29 +73,27 @@ G_M2401_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
G_M2401_IG03: ; bbWeight=1.44, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x23]
cmp w0, #2
- bgt G_M2401_IG11
+ bgt G_M2401_IG10
;; size=8 bbWeight=1.44 PerfScore 2.17
G_M2401_IG04: ; bbWeight=2.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23]
ldr w0, [x20, #0x44]
cmp w21, w0
- bne G_M2401_IG08
- ;; size=12 bbWeight=2.44 PerfScore 11.00
-G_M2401_IG05: ; bbWeight=2.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ bne G_M2401_IG07
ldr w0, [x20, #0x38]
- ;; size=4 bbWeight=2.44 PerfScore 7.33
-G_M2401_IG06: ; bbWeight=2.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=2.44 PerfScore 18.33
+G_M2401_IG05: ; bbWeight=2.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w22, w0
- bhs G_M2401_IG10
+ bhs G_M2401_IG09
;; size=8 bbWeight=2.44 PerfScore 3.67
-G_M2401_IG07: ; bbWeight=1.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M2401_IG06: ; bbWeight=1.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x20, #0x10]
; gcrRegs +[x1]
add w2, w22, #1
sxtw w23, w2
ldr w2, [x1, #0x08]
cmp w22, w2
- bhs G_M2401_IG09
+ bhs G_M2401_IG08
mov w2, #24
mov x3, #16
umaddl x2, w22, w2, x3
@@ -105,13 +103,13 @@ G_M2401_IG07: ; bbWeight=1.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
ldr w2, [x1, #0x0C]
cmn w2, #1
mov w22, w23
- blt G_M2401_IG06
+ blt G_M2401_IG05
ldr x23, [x1]
; gcrRegs +[x23]
ldr w0, [x1, #0x10]
b G_M2401_IG03
;; size=68 bbWeight=1.14 PerfScore 30.80
-G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20 x23]
; byrRegs -[x1]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
@@ -122,18 +120,18 @@ G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M2401_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M2401_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M2401_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0 PerfScore 0.00
-G_M2401_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M2401_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20 x23]
ldr x0, [x19, #0x40]
; gcrRegs +[x0]
@@ -154,10 +152,10 @@ G_M2401_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=980000
cbz w0, G_M2401_IG04
ldr x2, [x19, #0x30]
; gcrRegs +[x2]
- cbnz x2, G_M2401_IG12
+ cbnz x2, G_M2401_IG11
ldr x2, [x19, #0x38]
;; size=56 bbWeight=0 PerfScore 0.00
-G_M2401_IG12: ; bbWeight=0, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+G_M2401_IG11: ; bbWeight=0, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
mov x1, x23
@@ -202,13 +200,10 @@ G_M2401_IG12: ; bbWeight=0, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs=
blr x3
; gcrRegs -[x0-x2 x23-x24]
; gcr arg pop 0
- ldr w0, [x20, #0x44]
- cmp w21, w0
- beq G_M2401_IG05
- b G_M2401_IG08
- ;; size=128 bbWeight=0 PerfScore 0.00
+ b G_M2401_IG04
+ ;; size=116 bbWeight=0 PerfScore 0.00
-Total bytes of code 376, prolog size 24, PerfScore 68.47, instruction count 94, allocated bytes for code 376 (MethodHash=9d11f69e) for method System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
+Total bytes of code 364, prolog size 24, PerfScore 68.47, instruction count 91, allocated bytes for code 364 (MethodHash=9d11f69e) for method System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
; ============================================================
Unwind Info:
@@ -219,7 +214,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.22%) : 314183.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
@@ -38,12 +38,12 @@ G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp w20, w21, [fp, #0x58]
;; size=36 bbWeight=1 PerfScore 12.50
G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG11
+ b G_M3612_IG09
;; size=4 bbWeight=1 PerfScore 1.00
G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
cmp w23, w0
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x19, #16
; byrRegs +[x0]
ldr x22, [x0, w23, UXTW #3]
@@ -59,12 +59,12 @@ G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000
G_M3612_IG05: ; bbWeight=10.61, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
cmp w20, w0
- bhs G_M3612_IG18
+ bhs G_M3612_IG17
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -96,28 +96,15 @@ G_M3612_IG06: ; bbWeight=1.05, gcrefRegs=480000 {x19 x22}, byrefRegs=0000
G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
sub w21, w0, #2
- tbz w21, #31, G_M3612_IG10
+ tbnz w21, #31, G_M3612_IG13
;; size=12 bbWeight=0.52 PerfScore 2.35
-G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22]
- add w23, w23, #1
- ldr w0, [x19, #0x08]
- cmp w0, w23
- ble G_M3612_IG16
- b G_M3612_IG03
- ;; size=20 bbWeight=0.52 PerfScore 3.14
-G_M3612_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr wzr, [x19, #0x08]
- b G_M3612_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.99
-G_M3612_IG10: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x22]
+G_M3612_IG08: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
sub w20, w21, #1
;; size=4 bbWeight=9.77 PerfScore 4.89
-G_M3612_IG11: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M3612_IG13
+G_M3612_IG09: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w20, #31, G_M3612_IG11
;; size=4 bbWeight=9.77 PerfScore 9.77
-G_M3612_IG12: ; bbWeight=90.23, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG10: ; bbWeight=90.23, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
mov w1, w20
@@ -129,24 +116,31 @@ G_M3612_IG12: ; bbWeight=90.23, gcrefRegs=480000 {x19 x22}, byrefRegs=000
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M3612_IG17
+ cbnz w0, G_M3612_IG16
sub w20, w20, #1
- tbz w20, #31, G_M3612_IG12
+ tbz w20, #31, G_M3612_IG10
;; size=44 bbWeight=90.23 PerfScore 857.17
-G_M3612_IG13: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG11: ; bbWeight=9.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1
- tbz w21, #31, G_M3612_IG10
+ tbz w21, #31, G_M3612_IG08
;; size=8 bbWeight=9.77 PerfScore 14.66
-G_M3612_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3612_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M3612_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr wzr, [x19, #0x08]
+ ;; size=4 bbWeight=0.50 PerfScore 1.49
+G_M3612_IG13: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ add w23, w23, #1
+ ldr w0, [x19, #0x08]
+ cmp w0, w23
+ ble G_M3612_IG15
+ b G_M3612_IG03
+ ;; size=20 bbWeight=0.52 PerfScore 3.14
+G_M3612_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -154,7 +148,7 @@ G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, sp, #64
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M3612_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x22]
mov x0, x22
; gcrRegs +[x0]
@@ -167,9 +161,9 @@ G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M3612_IG13
+ b G_M3612_IG11
;; size=36 bbWeight=0 PerfScore 0.00
-G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3612_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
@@ -180,7 +174,7 @@ G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 360, prolog size 36, PerfScore 1274.91, instruction count 90, allocated bytes for code 360 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
+Total bytes of code 352, prolog size 36, PerfScore 1273.92, instruction count 88, allocated bytes for code 352 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -191,7 +185,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-1.72%) : 412421.dasm - System.CommandLine.CliSymbol:ThrowIfEmptyOrWithWhitespaces(System.String,System.String,ubyte):System.String (Tier1)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T05] ( 7, 6 ) ref -> x19 class-hnd single-def <System.String>
; V01 arg1 [V01,T09] ( 3, 2 ) ref -> x21 class-hnd single-def <System.String>
; V02 arg2 [V02,T08] ( 3, 3 ) ubyte -> x20 single-def
-; V03 loc0 [V03,T01] ( 5, 26.52) int -> x25
+; V03 loc0 [V03,T01] ( 5, 26.52) int -> x22
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T12] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V06 tmp2 [V06,T13] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -67,27 +67,26 @@
; V55 cse0 [V55,T03] ( 4, 9.48) int -> x23 "CSE - aggressive"
; V56 cse1 [V56,T04] ( 3, 8.48) byref -> x24 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M38453_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
mov x21, x1
; gcrRegs +[x21]
mov w20, w2
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.00
G_M38453_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M38453_IG15
+ cbz x19, G_M38453_IG14
mov w22, wzr
ldr w23, [x19, #0x08]
cmp w23, #0
- ble G_M38453_IG15
+ ble G_M38453_IG14
add x24, x19, #12
; byrRegs +[x24]
;; size=24 bbWeight=1 PerfScore 6.50
@@ -101,8 +100,8 @@ G_M38453_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M38453_IG07
- b G_M38453_IG05
+ cbnz w0, G_M38453_IG05
+ b G_M38453_IG07
;; size=40 bbWeight=1 PerfScore 12.00
G_M38453_IG04: ; bbWeight=1.00, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
movz x1, #0xD1FFAB1E
@@ -119,58 +118,94 @@ G_M38453_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000
G_M38453_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21]
; byrRegs -[x24]
- b G_M38453_IG15
+ b G_M38453_IG14
;; size=4 bbWeight=1.00 PerfScore 1.00
G_M38453_IG07: ; bbWeight=1.00, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
; gcrRegs +[x19 x21]
; byrRegs +[x24]
tst w20, #255
- bne G_M38453_IG12
+ bne G_M38453_IG11
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M38453_IG08: ; bbWeight=0.60, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
- mov w25, wzr
+ mov w22, wzr
;; size=4 bbWeight=0.60 PerfScore 0.30
G_M38453_IG09: ; bbWeight=6.48, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
- ldrh w0, [x24, w25, UXTW #2]
+ ldrh w0, [x24, w22, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M38453_IG10
+ blo G_M38453_IG13
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M38453_IG14
- b G_M38453_IG11
- ;; size=40 bbWeight=6.48 PerfScore 77.76
+ cbnz w0, G_M38453_IG15
+ ;; size=36 bbWeight=6.48 PerfScore 71.28
G_M38453_IG10: ; bbWeight=6.48, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M38453_IG14
- ;; size=20 bbWeight=6.48 PerfScore 35.64
-G_M38453_IG11: ; bbWeight=6.48, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
- add w25, w25, #1
- cmp w23, w25
+ add w22, w22, #1
+ cmp w23, w22
bgt G_M38453_IG09
;; size=12 bbWeight=6.48 PerfScore 12.96
-G_M38453_IG12: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M38453_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
; byrRegs -[x24]
mov x0, x19
; gcrRegs +[x0]
;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M38453_IG13: ; bbWeight=1.00, epilog, nogc, extend
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
+G_M38453_IG12: ; bbWeight=1.00, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=24 bbWeight=1.00 PerfScore 7.00
-G_M38453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1.00 PerfScore 5.00
+G_M38453_IG13: ; bbWeight=6.48, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, gcvars, byref, isz
; gcrRegs -[x0] +[x21]
+ ; byrRegs +[x24]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldrb w0, [x1, w0, UXTW #2]
+ tbnz w0, #7, G_M38453_IG15
+ b G_M38453_IG10
+ ;; size=24 bbWeight=6.48 PerfScore 42.12
+G_M38453_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19 x21]
+ ; byrRegs -[x24]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ mov x19, x0
+ ; gcrRegs +[x19]
+ mov w0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_STRCNS
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ mov x1, x0
+ ; gcrRegs +[x1]
+ mov x0, x19
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0-x1]
+ ; gcr arg pop 0
+ mov x0, x19
+ ; gcrRegs +[x0]
+ bl CORINFO_HELP_THROW
+ ; gcrRegs -[x0 x19]
+ ; gcr arg pop 0
+ ;; size=76 bbWeight=0 PerfScore 0.00
+G_M38453_IG15: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19 x21]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -225,55 +260,22 @@ G_M38453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x20]
- ; gcr arg pop 0
- ;; size=136 bbWeight=0 PerfScore 0.00
-G_M38453_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- mov w0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_STRCNS
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- mov x1, x0
- ; gcrRegs +[x1]
- mov x0, x19
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1]
- ; gcr arg pop 0
- mov x0, x19
- ; gcrRegs +[x0]
- bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x19]
; gcr arg pop 0
brk_unix #0
- ;; size=80 bbWeight=0 PerfScore 0.00
+ ;; size=140 bbWeight=0 PerfScore 0.00
-Total bytes of code 464, prolog size 36, PerfScore 169.66, instruction count 116, allocated bytes for code 464 (MethodHash=480369ca) for method System.CommandLine.CliSymbol:ThrowIfEmptyOrWithWhitespaces(System.String,System.String,ubyte):System.String (Tier1)
+Total bytes of code 456, prolog size 32, PerfScore 166.66, instruction count 114, allocated bytes for code 456 (MethodHash=480369ca) for method System.CommandLine.CliSymbol:ThrowIfEmptyOrWithWhitespaces(System.String,System.String,ubyte):System.String (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 116 (0x00074) Actual length = 464 (0x0001d0)
+ Function Length : 114 (0x00072) Actual length = 456 (0x0001c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -281,13 +283,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 89 save_reg X#6 Z#9 (0x09); str x25, [sp, #72]
E6 save_next
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
- E4 end
- E4 end
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
...
+8 (+5.26%) : 309832.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -69,43 +69,49 @@ G_M44603_IG05: ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M44603_IG10
+ cbnz w0, G_M44603_IG10
;; size=24 bbWeight=0.36 PerfScore 2.36
-G_M44603_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- add w20, w20, #1
- cmp w21, w20
- bgt G_M44603_IG04
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M44603_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44603_IG06: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ b G_M44603_IG12
+ ;; size=4 bbWeight=0.35 PerfScore 0.35
+G_M44603_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- ;; size=4 bbWeight=0.64 PerfScore 0.32
-G_M44603_IG08: ; bbWeight=0.64, epilog, nogc, extend
+ ;; size=4 bbWeight=0.02 PerfScore 0.01
+G_M44603_IG08: ; bbWeight=0.02, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.64 PerfScore 3.18
+ ;; size=16 bbWeight=0.02 PerfScore 0.08
G_M44603_IG09: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M44603_IG06
+ tbz w0, #7, G_M44603_IG12
;; size=20 bbWeight=0.36 PerfScore 2.00
-G_M44603_IG10: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44603_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ add w20, w20, #1
+ cmp w21, w20
+ bgt G_M44603_IG04
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44603_IG11: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ b G_M44603_IG07
+ ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M44603_IG12: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M44603_IG11: ; bbWeight=0.36, epilog, nogc, extend
+G_M44603_IG13: ; bbWeight=0.36, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.36 PerfScore 1.82
-Total bytes of code 152, prolog size 20, PerfScore 26.52, instruction count 38, allocated bytes for code 152 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 160, prolog size 20, PerfScore 24.08, instruction count 40, allocated bytes for code 160 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -116,7 +122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 489126.dasm - JIT.HardwareIntrinsics.General.Vector1281.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
@@ -8,46 +8,59 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M36530_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36530_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M36530_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36530_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01]
- mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq
- cinc w0, wzr, eq
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M36530_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M36530_IG05
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M36530_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [fp, #0x1D] // [V01 arg1+0x01]
+ cmp w0, #255
+ bne G_M36530_IG05
+ mov w0, #1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M36530_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M36530_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M36530_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=46ff714d) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=46ff714d) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+36.36%) : 489154.dasm - JIT.HardwareIntrinsics.General.Vector1281.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
@@ -8,46 +8,59 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetUInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M62610_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M62610_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M62610_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62610_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01]
- mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq
- cinc w0, wzr, eq
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M62610_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M62610_IG05
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M62610_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [fp, #0x1D] // [V01 arg1+0x01]
+ cmp w0, #255
+ bne G_M62610_IG05
+ mov w0, #1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M62610_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M62610_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M62610_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=4c4b0b6d) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=4c4b0b6d) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.linux.arm64.checked.mch
+0 (0.00%) : 1845.dasm - Program:Main(System.String[]):int (FullOpts)
@@ -1587,7 +1587,7 @@ G_M58511_IG17: ; bbWeight=1, gcVars=00000000000000000000000000000000 {},
mov w23, wzr
;; size=164 bbWeight=1 PerfScore 47.00
G_M58511_IG18: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M58511_IG26
+ b G_M58511_IG35
;; size=4 bbWeight=1 PerfScore 1.00
G_M58511_IG19: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w11, [x19, #0x08]
@@ -1697,38 +1697,12 @@ G_M58511_IG25: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
ldr w0, [fp, #0xD1FFAB1E] // [V11 loc10]
ldr w11, [fp, #0xD1FFAB1E] // [V03 loc2]
cmp w0, w11
- bne G_M58511_IG27
- mov x0, x22
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- mov x11, #0xD1FFAB1E
- cmp x0, x11
- bgt G_M58511_IG35
- mov w0, #5
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14]
- add w0, w0, #1
- str w0, [fp, #0xD1FFAB1E] // [V15 loc14]
- ;; size=80 bbWeight=4 PerfScore 88.00
-G_M58511_IG26: ; bbWeight=8, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w11, [fp, #0xD1FFAB1E] // [V15 loc14]
- cmp w11, #40
- bge G_M58511_IG48
- b G_M58511_IG19
- ;; size=16 bbWeight=8 PerfScore 36.00
-G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ beq G_M58511_IG34
+ ;; size=16 bbWeight=4 PerfScore 22.00
+G_M58511_IG26: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14]
cmp w0, #2
- bge G_M58511_IG30
+ bge G_M58511_IG36
stp xzr, xzr, [fp, #0x30]
stp xzr, xzr, [fp, #0x40]
str xzr, [fp, #0x50]
@@ -1741,13 +1715,13 @@ G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
blr x3
; gcr arg pop 0
;; size=52 bbWeight=1 PerfScore 13.00
-G_M58511_IG28: ; bbWeight=1, nogc, extend
+G_M58511_IG27: ; bbWeight=1, nogc, extend
ldp q16, q17, [fp, #0x30]
stp q16, q17, [fp, #0xD1FFAB1E]
ldr x0, [fp, #0x50]
str x0, [fp, #0xD1FFAB1E]
;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG29: ; bbWeight=1, extend
+G_M58511_IG28: ; bbWeight=1, extend
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
@@ -1813,535 +1787,18 @@ G_M58511_IG29: ; bbWeight=1, extend
; gcr arg pop 0
ldr w0, [fp, #0xD1FFAB1E] // [V03 loc2]
str w0, [fp, #0xD1FFAB1E] // [V11 loc10]
- b G_M58511_IG34
- ;; size=204 bbWeight=1 PerfScore 67.00
-G_M58511_IG30: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x58]
- stp xzr, xzr, [fp, #0x68]
- str xzr, [fp, #0x78]
- add x0, fp, #88 // [V55 tmp28]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, #53
- mov w2, #3
- ldr x3, [x11]
- blr x3
- ; gcr arg pop 0
- ;; size=40 bbWeight=1 PerfScore 9.50
-G_M58511_IG31: ; bbWeight=1, nogc, extend
- sub x0, fp, #200
- ldp q16, q17, [x0, #0xD1FFAB1E]
- stp q16, q17, [fp, #0xD1FFAB1E]
- ldr x1, [x0, #0xD1FFAB1E]
- str x1, [fp, #0xD1FFAB1E]
- ;; size=20 bbWeight=1 PerfScore 8.50
-G_M58511_IG32: ; bbWeight=1, extend
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V11 loc10]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V03 loc2]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=216 bbWeight=1 PerfScore 72.50
-G_M58511_IG33: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=1 PerfScore 10.50
-G_M58511_IG34: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=200 bbWeight=1 PerfScore 66.00
+G_M58511_IG29: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov w23, #1
- b G_M58511_IG48
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M58511_IG35: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x80]
- stp xzr, xzr, [fp, #0x90]
- str xzr, [fp, #0xA0]
- add x0, fp, #128 // [V54 tmp27]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, #72
- mov w2, #2
- ldr x3, [x11]
- blr x3
- ; gcr arg pop 0
- ;; size=40 bbWeight=1 PerfScore 9.50
-G_M58511_IG36: ; bbWeight=1, nogc, extend
- ldp q16, q17, [fp, #0x80]
- stp q16, q17, [fp, #0xD1FFAB1E]
- ldr x0, [fp, #0xA0]
- str x0, [fp, #0xD1FFAB1E]
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG37: ; bbWeight=1, isz, extend
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- mov x0, x22
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14]
- add w1, w1, #1
- sxtw x1, w1
- cmp x1, #0
- beq G_M58511_IG40
- cmn x1, #1
- bne G_M58511_IG38
- cmp x0, #1
- bvs G_M58511_IG39
- ;; size=92 bbWeight=1 PerfScore 25.50
-G_M58511_IG38: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- sdiv x1, x0, x1
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
...
libraries.pmi.linux.arm64.checked.mch
-40 (-27.03%) : 141023.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-1.49%) : 120865.dasm - Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List
1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T12] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.Diagnostics.Tracing.Stacks.StackSource>
; V01 loc0 [V01,T06] ( 7, 7 ) ref -> x20 class-hnd exact single-def <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+<>c__DisplayClass0_0>
-; V02 loc1 [V02 ] ( 7, 13 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
+; V02 loc1 [V02 ] ( 7, 13 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
; V03 loc2 [V03,T01] ( 5, 18 ) ref -> x24 class-hnd <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+<>c__DisplayClass0_0>
@@ -27,12 +27,12 @@
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
; V17 tmp13 [V17,T17] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.__Canon]>
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]>
-; V19 tmp15 [V19,T02] ( 4, 16 ) ref -> x25 class-hnd exact "Inlining Arg" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample[]>
+; V19 tmp15 [V19,T02] ( 4, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample[]>
; V20 tmp16 [V20,T03] ( 3, 12 ) int -> x1 "Inlining Arg"
-; V21 tmp17 [V21 ] ( 3, 6 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V02._dictionary (fldOffset=0x0)" P-DEP
-; V22 tmp18 [V22 ] ( 4, 10 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._currentValue (fldOffset=0x8)" P-DEP
-; V23 tmp19 [V23 ] ( 3, 6 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP
-; V24 tmp20 [V24 ] ( 3, 6 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._version (fldOffset=0x14)" P-DEP
+; V21 tmp17 [V21 ] ( 3, 6 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._dictionary (fldOffset=0x0)" P-DEP
+; V22 tmp18 [V22 ] ( 4, 10 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._currentValue (fldOffset=0x8)" P-DEP
+; V23 tmp19 [V23 ] ( 3, 6 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP
+; V24 tmp20 [V24 ] ( 3, 6 ) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V02._version (fldOffset=0x14)" P-DEP
; V25 tmp21 [V25,T21] ( 3, 3 ) ref -> x0 single-def "field V16._dictionary (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26,T23] ( 0, 0 ) ref -> zero-ref single-def "field V16._currentValue (fldOffset=0x8)" P-INDEP
;* V27 tmp23 [V27,T24] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x10)" P-INDEP
@@ -45,20 +45,19 @@
; V34 cse3 [V34,T11] ( 3, 6 ) long -> x19 "CSE - aggressive"
; V35 cse4 [V35,T08] ( 4, 6 ) long -> x21 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M39455_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- stp x23, x24, [sp, #0x48]
- str x25, [sp, #0x58]
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V02 loc1], [V02 loc1+0x08]
- str xzr, [fp, #0x20] // [V02 loc1+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V02 loc1], [V02 loc1+0x08]
+ str xzr, [fp, #0x28] // [V02 loc1+0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M39455_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -156,9 +155,9 @@ G_M39455_IG04: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}
; gcrRegs +[x0]
ldr w1, [x0, #0x44]
; gcrRegs -[x1]
- stp x0, xzr, [fp, #0x10] // [V21 tmp17], [V22 tmp18]
- stp wzr, w1, [fp, #0x20] // [V23 tmp19], [V24 tmp20]
- add x0, fp, #16 // [V02 loc1]
+ stp x0, xzr, [fp, #0x18] // [V21 tmp17], [V22 tmp18]
+ stp wzr, w1, [fp, #0x28] // [V23 tmp19], [V24 tmp20]
+ add x0, fp, #24 // [V02 loc1]
; gcrRegs -[x0]
movz x19, #0xD1FFAB1E
movk x19, #0xD1FFAB1E LSL #16
@@ -181,7 +180,7 @@ G_M39455_IG04: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}
movk x23, #0xD1FFAB1E LSL #32
;; size=96 bbWeight=1 PerfScore 21.50
G_M39455_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x24, [fp, #0x18] // [V22 tmp18]
+ ldr x24, [fp, #0x20] // [V22 tmp18]
; gcrRegs +[x24]
add x0, x21, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
@@ -201,27 +200,28 @@ G_M39455_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ble G_M39455_IG07
;; size=44 bbWeight=4 PerfScore 46.00
G_M39455_IG06: ; bbWeight=2, gcrefRegs=1100004 {x2 x20 x24}, byrefRegs=0000 {}, byref, isz
- ldr x25, [x24, #0x08]
- ; gcrRegs +[x25]
- cbz x25, G_M39455_IG10
- ldr w0, [x25, #0x08]
- cmp w0, w1
+ ldr x0, [x24, #0x08]
+ ; gcrRegs +[x0]
+ cbz x0, G_M39455_IG10
+ ldr w3, [x0, #0x08]
+ cmp w3, w1
blo G_M39455_IG10
- add x0, x25, #16
+ add x0, x0, #16
+ ; gcrRegs -[x0]
; byrRegs +[x0]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x2 x25]
+ ; gcrRegs -[x2]
; byrRegs -[x0]
;; size=44 bbWeight=2 PerfScore 29.00
G_M39455_IG07: ; bbWeight=4, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz
ldr w0, [x24, #0x14]
add w0, w0, #1
str w0, [x24, #0x14]
- add x0, fp, #16 // [V02 loc1]
+ add x0, fp, #24 // [V02 loc1]
mov x1, x19
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -236,13 +236,12 @@ G_M39455_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 3.00
G_M39455_IG09: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x58]
- ldp x23, x24, [sp, #0x48]
- ldp x21, x22, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M39455_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
@@ -253,18 +252,18 @@ G_M39455_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 536, prolog size 32, PerfScore 210.25, instruction count 134, allocated bytes for code 536 (MethodHash=171665e0) for method Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
+Total bytes of code 528, prolog size 28, PerfScore 207.25, instruction count 132, allocated bytes for code 528 (MethodHash=171665e0) for method Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 134 (0x00086) Actual length = 536 (0x000218)
+ Function Length : 132 (0x00084) Actual length = 528 (0x000210)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -272,13 +271,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 8B save_reg X#6 Z#11 (0x0B); str x25, [sp, #88]
E6 save_next
E6 save_next
- C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
- E4 end
- E4 end
-8 (-1.05%) : 166587.dasm - System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
@@ -26,7 +26,7 @@
; V15 tmp1 [V15,T10] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1"
; V16 tmp2 [V16,T18] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable"
; V17 tmp3 [V17,T05] ( 5, 27 ) ref -> x24 class-hnd "spilling QMark2" <System.ComponentModel.PropertyDescriptor>
-; V18 tmp4 [V18,T21] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.PropertyDescriptorCollection>
+; V18 tmp4 [V18,T21] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.PropertyDescriptorCollection>
; V19 tmp5 [V19,T00] ( 3, 96 ) ref -> [fp+0x10] spill-single-def "argument with side effect"
; V20 tmp6 [V20,T03] ( 2, 64 ) ref -> x1 "argument with side effect"
; V21 PSPSym [V21,T24] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
@@ -100,25 +100,20 @@ G_M28628_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
blr x1
; gcrRegs -[x20]
; gcr arg pop 0
- mov x1, x0
- ; gcrRegs +[x1]
- str x1, [fp, #0x20] // [V06 loc4]
+ str x0, [fp, #0x20] // [V06 loc4]
; GC ptr vars +{V06}
- ;; size=56 bbWeight=0.50 PerfScore 9.25
-G_M28628_IG07: ; bbWeight=0.50, gcVars=0000000000004000 {V06}, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
+ ;; size=52 bbWeight=0.50 PerfScore 9.00
+G_M28628_IG07: ; bbWeight=0.50, gcVars=0000000000004000 {V06}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
movz x20, #0xD1FFAB1E
movk x20, #0xD1FFAB1E LSL #16
movk x20, #0xD1FFAB1E LSL #32
mov x11, x20
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x0-x1]
+ ldr x1, [x11]
+ blr x1
+ ; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M28628_IG22
- ;; size=32 bbWeight=0.50 PerfScore 3.75
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
G_M28628_IG08: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x20] // [V06 loc4]
; gcrRegs +[x0]
@@ -154,7 +149,7 @@ G_M28628_IG11: ; bbWeight=4, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0
; gcrRegs -[x0]
mov w25, wzr
cmp w21, #0
- ble G_M28628_IG18
+ ble G_M28628_IG21
;; size=12 bbWeight=4 PerfScore 8.00
G_M28628_IG12: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref
add x26, x19, #16
@@ -201,12 +196,12 @@ G_M28628_IG14: ; bbWeight=8, gcVars=0000000000004004 {V06 V12}, gcrefRegs
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M28628_IG19
+ cbz w0, G_M28628_IG17
;; size=24 bbWeight=8 PerfScore 92.00
G_M28628_IG15: ; bbWeight=16, gcrefRegs=11480000 {x19 x22 x24 x28}, byrefRegs=4000000 {x26}, byref, isz
ldr x1, [fp, #0x18] // [V12 loc10]
; gcrRegs +[x1]
- cbz x1, G_M28628_IG17
+ cbz x1, G_M28628_IG20
;; size=8 bbWeight=16 PerfScore 48.00
G_M28628_IG16: ; bbWeight=8, gcrefRegs=11480002 {x1 x19 x22 x24 x28}, byrefRegs=4000000 {x26}, byref, isz
mov x0, x1
@@ -220,29 +215,11 @@ G_M28628_IG16: ; bbWeight=8, gcrefRegs=11480002 {x1 x19 x22 x24 x28}, byr
blr x2
; gcrRegs -[x0-x1 x28]
; gcr arg pop 0
- cbz w0, G_M28628_IG19
+ cbnz w0, G_M28628_IG20
;; size=32 bbWeight=8 PerfScore 112.00
-G_M28628_IG17: ; bbWeight=16, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=4000000 {x26}, byref, isz
- add w25, w25, #1
- cmp w21, w25
- bgt G_M28628_IG13
- ;; size=12 bbWeight=16 PerfScore 32.00
-G_M28628_IG18: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
+G_M28628_IG17: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x24]
; byrRegs -[x26]
- ldr w14, [x22, #0x08]
- cmp w23, w14
- bhs G_M28628_IG21
- add x14, x22, #16
- ; byrRegs +[x14]
- add x14, x14, x23, LSL #3
- mov x15, x24
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x24]
- ; byrRegs -[x14]
- add w23, w23, #1
- ;; size=32 bbWeight=2 PerfScore 16.00
-G_M28628_IG19: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x20] // [V06 loc4]
; gcrRegs +[x0]
mov x11, x20
@@ -252,18 +229,40 @@ G_M28628_IG19: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {
; gcr arg pop 0
cbnz w0, G_M28628_IG08
;; size=20 bbWeight=4 PerfScore 30.00
-G_M28628_IG20: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M28628_IG18: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
b G_M28628_IG22
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28628_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28628_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
- brk_unix #0
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M28628_IG20: ; bbWeight=16, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=4000000 {x26}, byref, isz
+ ; gcrRegs +[x19 x22 x24]
+ ; byrRegs +[x26]
+ add w25, w25, #1
+ cmp w21, w25
+ bgt G_M28628_IG13
+ ;; size=12 bbWeight=16 PerfScore 32.00
+G_M28628_IG21: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x26]
+ ldr w14, [x22, #0x08]
+ cmp w23, w14
+ bhs G_M28628_IG19
+ add x14, x22, #16
+ ; byrRegs +[x14]
+ add x14, x14, x23, LSL #3
+ mov x15, x24
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x24]
+ ; byrRegs -[x14]
+ add w23, w23, #1
+ b G_M28628_IG17
+ ;; size=36 bbWeight=2 PerfScore 18.00
G_M28628_IG22: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x22]
+ ; gcrRegs -[x19]
ldr x1, [fp, #0x20] // [V06 loc4]
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -307,8 +306,8 @@ G_M28628_IG23: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x22, x0
- ; gcrRegs +[x22]
+ mov x19, x0
+ ; gcrRegs +[x19]
mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.ComponentModel.PropertyDescriptorCollection:.ctor(System.ComponentModel.PropertyDescriptor[]):this
@@ -318,7 +317,7 @@ G_M28628_IG23: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
blr x2
; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
- mov x0, x22
+ mov x0, x19
; gcrRegs +[x0]
;; size=104 bbWeight=0.50 PerfScore 10.00
G_M28628_IG24: ; bbWeight=0.50, epilog, nogc, extend
@@ -331,7 +330,7 @@ G_M28628_IG24: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M28628_IG25: ; bbWeight=0, gcVars=0000000000004000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; gcrRegs -[x0 x22]
+ ; gcrRegs -[x0 x19]
; GC ptr vars +{V06}
stp fp, lr, [sp, #-0x70]!
stp x19, x20, [sp, #0x20]
@@ -372,7 +371,7 @@ G_M28628_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 764, prolog size 40, PerfScore 845.25, instruction count 191, allocated bytes for code 764 (MethodHash=a758902b) for method System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
+Total bytes of code 756, prolog size 40, PerfScore 846.75, instruction count 189, allocated bytes for code 756 (MethodHash=a758902b) for method System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Attribute[]):System.ComponentModel.PropertyDescriptorCollection:this (FullOpts)
; ============================================================
Unwind Info:
@@ -383,7 +382,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 164 (0x000a4) Actual length = 656 (0x000290)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+2.17%) : 290543.dasm - System.Threading.RateLimiting.ConcurrencyLimiter:Release(int):this (FullOpts)
@@ -8,11 +8,11 @@
; 6 inlinees with PGO data; 29 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 32, 53.50) ref -> [fp+0x20] this class-hnd single-def <System.Threading.RateLimiting.ConcurrencyLimiter>
+; V00 this [V00,T00] ( 32, 53.50) ref -> [fp+0x18] this class-hnd single-def <System.Threading.RateLimiting.ConcurrencyLimiter>
; V01 arg1 [V01,T23] ( 3, 2.50) int -> x20 single-def
-; V02 loc0 [V02 ] ( 4, 9 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer>
-; V03 loc1 [V03,T28] ( 4, 1.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <<unknown class>>
-; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V02 loc0 [V02 ] ( 4, 9 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer>
+; V03 loc1 [V03,T28] ( 4, 1.50) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <<unknown class>>
+; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V05 loc3 [V05,T03] ( 8, 20 ) ref -> x21 class-hnd <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration>
; V06 loc4 [V06,T25] ( 2, 4.00) ref -> x15 class-hnd <System.Threading.RateLimiting.ConcurrencyLimiter+ConcurrencyLease>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -43,9 +43,9 @@
; V32 tmp25 [V32,T21] ( 3, 6.00) ubyte -> x22 "Inline stloc first use temp"
; V33 tmp26 [V33,T02] ( 7, 22.12) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
; V34 tmp27 [V34,T26] ( 3, 4.00) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V35 tmp28 [V35,T27] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V35 tmp28 [V35,T27] ( 2, 0 ) ubyte -> x25 "Inline return value spill temp"
; V36 tmp29 [V36,T13] ( 5, 9.99) int -> x14 "Inline stloc first use temp"
-; V37 tmp30 [V37,T35] ( 3, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V37 tmp30 [V37,T35] ( 3, 0 ) ubyte -> x25 "Inline return value spill temp"
; V38 tmp31 [V38,T33] ( 6, 0 ) int -> x0 "Inline stloc first use temp"
; V39 tmp32 [V39,T36] ( 3, 0 ) int -> x2 "Inline stloc first use temp"
; V40 tmp33 [V40,T34] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -56,47 +56,48 @@
;* V45 tmp38 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V46 tmp39 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.RateLimiting.ConcurrencyLimiterOptions>
;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V48 tmp41 [V48 ] ( 4, 9 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02._next (fldOffset=0x0)" P-DEP
+; V48 tmp41 [V48 ] ( 4, 9 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._next (fldOffset=0x0)" P-DEP
;* V49 tmp42 [V49,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V19.hasValue (fldOffset=0x0)" P-INDEP
; V50 tmp43 [V50,T30] ( 2, 1 ) long -> x0 single-def "field V19.value (fldOffset=0x8)" P-INDEP
; V51 tmp44 [V51,T06] ( 3, 12 ) ref -> x1 "arr expr"
; V52 tmp45 [V52,T08] ( 3, 12 ) int -> x0 "index expr"
; V53 tmp46 [V53,T07] ( 3, 12 ) ref -> x0 "arr expr"
-; V54 PSPSym [V54,T31] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+; V54 PSPSym [V54,T31] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V55 cse0 [V55,T11] ( 5, 10 ) int -> x20 "CSE - aggressive"
; V56 cse1 [V56,T20] ( 3, 6 ) int -> x12 "CSE - moderate"
; V57 cse2 [V57,T14] ( 7, 9.99) byref -> x23 "CSE - moderate"
; V58 cse3 [V58,T29] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M60402_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
+ stp x19, x20, [sp, #0x38]
+ stp x21, x22, [sp, #0x48]
+ stp x23, x24, [sp, #0x58]
+ str x25, [sp, #0x68]
mov fp, sp
- stp xzr, xzr, [fp, #0x28] // [V04 loc2], [V02 loc0]
+ stp xzr, xzr, [fp, #0x20] // [V04 loc2], [V02 loc0]
add x2, sp, #112
- str x2, [fp, #0x38] // [V54 PSPSym]
+ str x2, [fp, #0x30] // [V54 PSPSym]
mov x19, x0
; gcrRegs +[x19]
mov w20, w1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M60402_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V03 loc1]
+ str x0, [fp, #0x10] // [V03 loc1]
; GC ptr vars +{V03}
;; size=8 bbWeight=1 PerfScore 4.00
G_M60402_IG03: ; bbWeight=1, gcVars=0000000010000000 {V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb w1, [fp, #0x28] // [V04 loc2]
+ ldrb w1, [fp, #0x20] // [V04 loc2]
cbnz w1, G_M60402_IG18
- add x1, fp, #40 // [V04 loc2]
+ add x1, fp, #32 // [V04 loc2]
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
- ldrb w0, [fp, #0x28] // [V04 loc2]
+ ldrb w0, [fp, #0x20] // [V04 loc2]
cbnz w0, G_M60402_IG05
;; size=24 bbWeight=1 PerfScore 7.50
G_M60402_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
@@ -115,7 +116,7 @@ G_M60402_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
;; size=36 bbWeight=0.50 PerfScore 3.75
G_M60402_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x30]
- cbnz w0, G_M60402_IG42
+ cbnz w0, G_M60402_IG43
;; size=8 bbWeight=1 PerfScore 4.00
G_M60402_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x28]
@@ -195,12 +196,12 @@ G_M60402_IG12: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; gcrRegs -[x0]
add x14, x21, #16
; byrRegs +[x14]
- ldr x15, [fp, #0x30] // [V48 tmp41]
+ ldr x15, [fp, #0x28] // [V48 tmp41]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- str x21, [fp, #0x30] // [V48 tmp41]
+ str x21, [fp, #0x28] // [V48 tmp41]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w0, [x0, #0x18]
@@ -211,14 +212,14 @@ G_M60402_IG12: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
G_M60402_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
ldr w0, [x19, #0x28]
- str x19, [fp, #0x20] // [V00 this]
+ str x19, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w0, w1
- bne G_M60402_IG42
+ bne G_M60402_IG43
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -228,7 +229,7 @@ G_M60402_IG14: ; bbWeight=0.50, gcVars=0000000010000001 {V00 V03}, gcrefR
blr x0
; gcr arg pop 0
mov w1, #1
- ldr x19, [fp, #0x20] // [V00 this]
+ ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
strb w1, [x19, #0x38]
str x0, [x19, #0x40]
@@ -236,12 +237,12 @@ G_M60402_IG14: ; bbWeight=0.50, gcVars=0000000010000001 {V00 V03}, gcrefR
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
- cbz w0, G_M60402_IG42
+ cbz w0, G_M60402_IG43
; GC ptr vars -{V00}
bl CORINFO_HELP_POLL_GC
; gcrRegs -[x19]
; gcr arg pop 0
- b G_M60402_IG42
+ b G_M60402_IG43
;; size=48 bbWeight=0.50 PerfScore 6.50
G_M60402_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException()
@@ -255,7 +256,7 @@ G_M60402_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M60402_IG16: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs +[x15 x19-x21]
; byrRegs +[x23]
- cbz w0, G_M60402_IG35
+ cbz w25, G_M60402_IG35
b G_M60402_IG31
;; size=8 bbWeight=0 PerfScore 0.00
G_M60402_IG17: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
@@ -303,15 +304,9 @@ G_M60402_IG19: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefReg
G_M60402_IG20: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz
mov w1, #0xD1FFAB1E
tst w0, w1
- bne G_M60402_IG38
- orr w1, w0, #0xD1FFAB1E
- mov w2, w0
- casal w2, w1, [x23]
- cmp w2, w0
- beq G_M60402_IG39
- sxtw w0, w2
- b G_M60402_IG20
- ;; size=40 bbWeight=0 PerfScore 0.00
+ beq G_M60402_IG38
+ b G_M60402_IG39
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M60402_IG21: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x15 x20]
; byrRegs -[x23]
@@ -507,7 +502,7 @@ G_M60402_IG34: ; bbWeight=2.00, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mov w22, #1
;; size=4 bbWeight=2.00 PerfScore 1.00
G_M60402_IG35: ; bbWeight=2.00, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbnz w22, G_M60402_IG41
+ cbnz w22, G_M60402_IG42
;; size=4 bbWeight=2.00 PerfScore 2.00
G_M60402_IG36: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
ldr x0, [x21, #0x08]
@@ -533,19 +528,28 @@ G_M60402_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60402_IG38: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
+G_M60402_IG38: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs +[x15 x19-x21]
; byrRegs +[x23]
- mov w0, wzr
- b G_M60402_IG40
- ;; size=8 bbWeight=0 PerfScore 0.00
+ orr w1, w0, #0xD1FFAB1E
+ mov w2, w0
+ casal w2, w1, [x23]
+ cmp w2, w0
+ beq G_M60402_IG40
+ sxtw w0, w2
+ b G_M60402_IG20
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M60402_IG39: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
+ mov w25, wzr
+ b G_M60402_IG41
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M60402_IG40: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
+ mov w25, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M60402_IG41: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
b G_M60402_IG16
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60402_IG41: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M60402_IG42: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x15 x20]
; byrRegs -[x23]
add x14, x19, #32
@@ -555,21 +559,21 @@ G_M60402_IG41: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; byrRegs -[x14]
b G_M60402_IG12
;; size=16 bbWeight=2 PerfScore 10.00
-G_M60402_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60402_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x21]
- ldrb w0, [fp, #0x28] // [V04 loc2]
- cbz w0, G_M60402_IG44
+ ldrb w0, [fp, #0x20] // [V04 loc2]
+ cbz w0, G_M60402_IG45
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60402_IG43: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V03 loc1]
+G_M60402_IG44: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x10] // [V03 loc1]
; gcrRegs +[x0]
; GC ptr vars -{V03}
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
...
+32 (+3.98%) : 16669.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75
-G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00
+G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M3645_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M3645_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M3645_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M3645_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M3645_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M3645_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M3645_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M3645_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M3645_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M3645_IG17
...
+32 (+3.98%) : 183630.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75
-G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00
+G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M3645_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M3645_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M3645_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M3645_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M3645_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M3645_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M3645_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M3645_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M3645_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M3645_IG17
...
libraries_tests.run.linux.arm64.Release.mch
-40 (-27.03%) : 374874.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,13 +8,13 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 11399
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 3.97) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 5.90) int -> x1 single-def
-; V02 loc0 [V02,T01] ( 11, 7.38) int -> x3
-; V03 loc1 [V03,T03] ( 6, 4.07) ushort -> x5
+; V00 arg0 [V00,T02] ( 4, 3.97) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 4.93) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 8.72) int -> x3
+; V03 loc1 [V03,T04] ( 3, 4.07) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 3.38) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 2.33) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 4.72) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 2.32) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -26,78 +26,56 @@ G_M3357_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr w2, [x0, #0x08]
cmp w2, w1
- ble G_M3357_IG08
+ ble G_M3357_IG10
;; size=12 bbWeight=1 PerfScore 4.50
-G_M3357_IG03: ; bbWeight=0.97, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG03: ; bbWeight=0.97, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG10
- ;; size=8 bbWeight=0.97 PerfScore 1.45
-G_M3357_IG04: ; bbWeight=0.96, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M3357_IG05: ; bbWeight=1.34, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG14
- ;; size=16 bbWeight=1.34 PerfScore 6.71
-G_M3357_IG06: ; bbWeight=1.35, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG05
- ;; size=12 bbWeight=1.35 PerfScore 2.70
-G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG12
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG08: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0.03 PerfScore 0.02
-G_M3357_IG09: ; bbWeight=0.03, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.03 PerfScore 0.07
-G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0]
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.97 PerfScore 0.97
+G_M3357_IG04: ; bbWeight=1.36, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w3, w2
- bhs G_M3357_IG16
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG14
- ;; size=28 bbWeight=0.01 PerfScore 0.09
-G_M3357_IG11: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x4]
+ bhs G_M3357_IG12
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG08
+ ;; size=24 bbWeight=1.36 PerfScore 8.81
+G_M3357_IG05: ; bbWeight=1.36, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w3, w3, #1
cmp w2, w3
- bgt G_M3357_IG10
- ;; size=12 bbWeight=0.01 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ bgt G_M3357_IG04
+ ;; size=12 bbWeight=1.36 PerfScore 2.72
+G_M3357_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.01 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0.01, epilog, nogc, extend
+G_M3357_IG07: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG14: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG08: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w3, w1
;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M3357_IG15: ; bbWeight=0.96, epilog, nogc, extend
+G_M3357_IG09: ; bbWeight=0.96, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.96 PerfScore 1.92
-G_M3357_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.03 PerfScore 0.02
+G_M3357_IG11: ; bbWeight=0.03, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.03 PerfScore 0.07
+G_M3357_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 19.97, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 21.00, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-27.03%) : 401867.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,13 +8,13 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 397
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 3.52) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 4.54) int -> x1 single-def
-; V02 loc0 [V02,T02] ( 11, 3.10) int -> x3
-; V03 loc1 [V03,T04] ( 6, 1.55) ushort -> x5
+; V00 arg0 [V00,T01] ( 4, 3.51) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 6, 4.03) int -> x1 single-def
+; V02 loc0 [V02,T02] ( 7, 3.61) int -> x3
+; V03 loc1 [V03,T04] ( 3, 1.55) ushort -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.52) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 1.04) byref -> x4 hoist multi-def "CSE - moderate"
+; V05 cse0 [V05,T03] ( 5, 3.03) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 1.03) byref -> x4 hoist "CSE - moderate"
;
; Lcl frame size = 0
@@ -36,62 +36,46 @@ G_M3357_IG04: ; bbWeight=0.49, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.49 PerfScore 0.97
-G_M3357_IG05: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG07
add x4, x0, #12
; byrRegs +[x4]
- ;; size=12 bbWeight=0.51 PerfScore 1.03
-G_M3357_IG06: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=8 bbWeight=0.51 PerfScore 0.51
+G_M3357_IG06: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG08
- add w3, w3, #1
- cmp w2, w3
- ble G_M3357_IG11
- b G_M3357_IG06
- ;; size=32 bbWeight=0.51 PerfScore 4.09
-G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs -[x4]
cmp w3, w2
- bhs G_M3357_IG10
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG08
+ bhs G_M3357_IG09
+ ldrh w0, [x4, w3, UXTW #2]
+ cmp w0, #32
+ ccmp w0, #9, z, ne
+ bne G_M3357_IG07
add w3, w3, #1
cmp w2, w3
- ble G_M3357_IG11
- b G_M3357_IG07
- ;; size=44 bbWeight=0.01 PerfScore 0.05
-G_M3357_IG08: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ ble G_M3357_IG10
+ b G_M3357_IG06
+ ;; size=40 bbWeight=0.52 PerfScore 4.91
+G_M3357_IG07: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w0, w3, w1
;; size=4 bbWeight=0.51 PerfScore 0.26
-G_M3357_IG09: ; bbWeight=0.51, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.51, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.51 PerfScore 1.03
-G_M3357_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w2, w1
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 13.67, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 13.92, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -102,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-44 (-13.10%) : 574398.dasm - System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
@@ -9,16 +9,16 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 9, 4.00) ref -> x19 class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 8, 5.50) int -> x1 single-def
-; V02 arg2 [V02,T04] ( 3, 2 ) ubyte -> x20 single-def
+; V00 arg0 [V00,T01] ( 8, 4 ) ref -> x19 class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 7, 5 ) int -> x1 single-def
+; V02 arg2 [V02,T05] ( 3, 2 ) ubyte -> x20 single-def
; V03 arg3 [V03,T02] ( 4, 3 ) byref -> x3 single-def
; V04 loc0 [V04,T03] ( 18, 4 ) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 4, 2 ) int -> x2 "Inline return value spill temp"
-; V07 tmp2 [V07,T07] ( 11, 1.51) int -> x4 "Inline stloc first use temp"
-; V08 tmp3 [V08,T08] ( 6, 1.51) ushort -> x0 "Inline stloc first use temp"
-; V09 cse0 [V09,T05] ( 10, 3.50) int -> x21 "CSE - aggressive"
+; V06 tmp1 [V06,T07] ( 4, 2 ) int -> x2 "Inline return value spill temp"
+; V07 tmp2 [V07,T06] ( 7, 2 ) int -> x4 "Inline stloc first use temp"
+; V08 tmp3 [V08,T08] ( 3, 1.50) ushort -> x0 "Inline stloc first use temp"
+; V09 cse0 [V09,T04] ( 9, 4 ) int -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -40,88 +40,52 @@ G_M52160_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3},
;; size=16 bbWeight=1 PerfScore 5.50
G_M52160_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
mov w2, wzr
- b G_M52160_IG07
+ b G_M52160_IG06
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M52160_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
sxtw w4, w1
- tbnz w1, #31, G_M52160_IG11
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M52160_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ cmp w4, w21
+ bhs G_M52160_IG13
add x2, x19, #12
; byrRegs +[x2]
ldrh w0, [x2, w4, UXTW #2]
cmp w0, #32
ccmp w0, #9, z, ne
- beq G_M52160_IG13
- ;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M52160_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
- ; byrRegs -[x2]
+ beq G_M52160_IG14
sub w2, w4, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52160_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ ; byrRegs -[x2]
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M52160_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
add w22, w1, w2
cmp w21, w22
- beq G_M52160_IG09
+ beq G_M52160_IG08
;; size=12 bbWeight=1 PerfScore 2.00
-G_M52160_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
cmp w22, w21
- bhs G_M52160_IG12
+ bhs G_M52160_IG13
add x0, x19, #12
; byrRegs +[x0]
ldrh w0, [x0, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #44
- beq G_M52160_IG16
+ beq G_M52160_IG10
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M52160_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52160_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x3]
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M52160_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M52160_IG09: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M52160_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, gcvars, byref, isz
+G_M52160_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, gcvars, byref, isz
; gcrRegs +[x19]
; byrRegs +[x3]
- cmp w4, w21
- bhs G_M52160_IG12
- add x0, x19, #12
- ; byrRegs +[x0]
- ldrh w0, [x0, w4, UXTW #2]
- ; byrRegs -[x0]
- cmp w0, #32
- ccmp w0, #9, z, ne
- beq G_M52160_IG14
- b G_M52160_IG06
- ;; size=32 bbWeight=0.01 PerfScore 0.04
-G_M52160_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x3]
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M52160_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
- ; gcrRegs +[x19]
- ; byrRegs +[x3]
- add w4, w4, #1
- cmp w21, w4
- bgt G_M52160_IG05
- b G_M52160_IG15
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M52160_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
- add w4, w4, #1
- cmp w21, w4
- bgt G_M52160_IG11
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M52160_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
- sub w2, w21, w1
- b G_M52160_IG07
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M52160_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
mov w0, #1
strb w0, [x3]
add w22, w22, #1
@@ -138,10 +102,10 @@ G_M52160_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3},
; gcr arg pop 0
add w22, w0, w22
tst w20, #255
- beq G_M52160_IG09
- b G_M52160_IG18
+ beq G_M52160_IG08
+ b G_M52160_IG12
;; size=56 bbWeight=0 PerfScore 0.00
-G_M52160_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M52160_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #1
mov x0, x19
; gcrRegs +[x0]
@@ -155,21 +119,35 @@ G_M52160_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
add w22, w0, w22
;; size=36 bbWeight=0 PerfScore 0.00
-G_M52160_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M52160_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w22
- ble G_M52160_IG09
+ ble G_M52160_IG08
cmp w22, w21
- bhs G_M52160_IG12
+ bhs G_M52160_IG13
add x0, x19, #12
; byrRegs +[x0]
ldrh w0, [x0, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #44
- beq G_M52160_IG17
- b G_M52160_IG09
+ beq G_M52160_IG11
+ b G_M52160_IG08
;; size=36 bbWeight=0 PerfScore 0.00
+G_M52160_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M52160_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ ; gcrRegs +[x19]
+ ; byrRegs +[x3]
+ add w4, w4, #1
+ cmp w21, w4
+ bgt G_M52160_IG05
+ sub w2, w21, w1
+ b G_M52160_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
-Total bytes of code 336, prolog size 24, PerfScore 24.29, instruction count 84, allocated bytes for code 336 (MethodHash=17d3343f) for method System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
+Total bytes of code 292, prolog size 24, PerfScore 24.50, instruction count 73, allocated bytes for code 292 (MethodHash=17d3343f) for method System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
; ============================================================
Unwind Info:
@@ -180,7 +158,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+4.52%) : 388646.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -23,22 +23,23 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp"
; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M10785_IG13
cmp x20, x19
@@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov w0, #1
;; size=16 bbWeight=1 PerfScore 3.00
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19, #0x30]
cmn x0, #1
@@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x1, [x19, #0x18]
cmp x0, x1
bne G_M10785_IG13
+ ldr x0, [x20, #0x20]
+ ldr x1, [x19, #0x20]
+ cmp x0, x1
+ cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
@@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2, #0x10]
;; size=40 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x0, [x20, #0x28]
@@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- cset x0, eq
- uxtb w0, w0
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ uxtb w0, w21
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20]
ldr x1, [x19]
cmp x0, x1
@@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M10785_IG02
;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -273,7 +280,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -296,10 +303,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+28 (+4.64%) : 472327.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -21,24 +21,25 @@
; V09 tmp5 [V09,T07] ( 3, 0 ) ubyte -> x1 "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V12 tmp8 [V12,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V12 tmp8 [V12,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V13 tmp9 [V13,T11] ( 2, 0 ) int -> x0 "argument with side effect"
; V14 tmp10 [V14,T08] ( 2, 0 ) ref -> x19 single-def "arg temp"
; V15 tmp11 [V15,T03] ( 3, 0 ) ref -> x0 "argument with side effect"
; V16 tmp12 [V16,T12] ( 2, 0 ) int -> x0 "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M10785_IG12
cmp x20, x19
@@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov w0, #1
;; size=16 bbWeight=1 PerfScore 3.00
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19, #0x30]
cmn x0, #1
@@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x1, [x19, #0x18]
cmp x0, x1
bne G_M10785_IG12
+ ldr x0, [x20, #0x20]
+ ldr x1, [x19, #0x20]
+ cmp x0, x1
+ cset x21, eq
b G_M10785_IG14
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
@@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2, #0x10]
;; size=40 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -126,10 +134,11 @@ G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2]
;; size=84 bbWeight=0 PerfScore 0.00
G_M10785_IG10: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x0, [x20, #0x28]
@@ -148,24 +157,22 @@ G_M10785_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG13: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- cset x0, eq
- uxtb w0, w0
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ uxtb w0, w21
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG15: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20]
ldr x1, [x19]
cmp x0, x1
@@ -254,7 +261,7 @@ G_M10785_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M10785_IG02
;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 604, prolog size 12, PerfScore 9.50, instruction count 151, allocated bytes for code 604 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 632, prolog size 16, PerfScore 12.50, instruction count 158, allocated bytes for code 632 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -265,7 +272,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
+ Function Length : 158 (0x0009e) Actual length = 632 (0x000278)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -288,10 +295,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+16 (+4.88%) : 734954.dasm - System.Threading.Tasks.ParallelLoopState:Breaklong (Tier1)
@@ -11,61 +11,61 @@
;
; V00 arg0 [V00,T01] ( 6, 3.57) long -> x20 ld-addr-op single-def
; V01 arg1 [V01,T00] ( 8, 5.57) ref -> x19 class-hnd single-def <System.Threading.Tasks.ParallelLoopStateFlags`1[long]>
-; V02 loc0 [V02,T02] ( 6, 5.07) int -> x0 ld-addr-op
+; V02 loc0 [V02,T02] ( 8, 5 ) int -> x22 ld-addr-op
; V03 loc1 [V03,T03] ( 8, 3.13) long -> x21 ld-addr-op
-; V04 loc2 [V04 ] ( 2, 0.55) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
+; V04 loc2 [V04 ] ( 2, 0.55) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 tmp2 [V07,T06] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V08 tmp3 [V08,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09 ] ( 2, 1 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
+; V09 tmp4 [V09 ] ( 2, 1 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V15 tmp10 [V15 ] ( 2, 0.55) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V04._count (fldOffset=0x0)" P-DEP
-; V16 tmp11 [V16 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V09._count (fldOffset=0x0)" P-DEP
+; V15 tmp10 [V15 ] ( 2, 0.55) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V04._count (fldOffset=0x0)" P-DEP
+; V16 tmp11 [V16 ] ( 2, 1 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed "field V09._count (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17,T07] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V18 cse0 [V18,T04] ( 3, 3 ) byref -> x21 hoist "CSE - aggressive"
+; V18 cse0 [V18,T04] ( 4, 3 ) byref -> x21 hoist "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M16438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x28]
- str x21, [sp, #0x38]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
mov x20, x0
mov x19, x1
; gcrRegs +[x19]
;; size=24 bbWeight=1 PerfScore 4.50
-G_M16438_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M16438_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrsb wzr, [x19]
- str wzr, [fp, #0x18] // [V09 tmp4]
+ str wzr, [fp, #0x10] // [V09 tmp4]
add x21, x19, #8
; byrRegs +[x21]
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M16438_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldapr w0, [x21]
- mov w1, #13
- tst w0, w1
+ ldapr w22, [x21]
+ mov w0, #13
+ tst w22, w0
bne G_M16438_IG09
- orr w1, w0, #2
- mov w2, w0
- casal w2, w1, [x21]
- cmp w2, w0
- bne G_M16438_IG11
+ ;; size=28 bbWeight=1 PerfScore 9.50
+G_M16438_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ orr w0, w22, #2
+ mov w1, w22
+ casal w1, w0, [x21]
+ cmp w1, w22
+ bne G_M16438_IG10
add x0, x19, #16
; byrRegs +[x0]
ldapr x21, [x0]
; byrRegs -[x21]
cmp x20, x21
bge G_M16438_IG06
- ;; size=52 bbWeight=1 PerfScore 15.50
+ ;; size=36 bbWeight=1 PerfScore 10.50
G_M16438_IG04: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- str wzr, [fp, #0x20] // [V04 loc2]
+ str wzr, [fp, #0x18] // [V04 loc2]
add x0, x19, #16
; byrRegs +[x0]
mov x1, x21
@@ -75,7 +75,7 @@ G_M16438_IG04: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
;; size=24 bbWeight=0.46 PerfScore 2.97
G_M16438_IG05: ; bbWeight=0.09, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- add x0, fp, #32 // [V04 loc2]
+ add x0, fp, #24 // [V04 loc2]
mov w1, #20
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -96,11 +96,11 @@ G_M16438_IG05: ; bbWeight=0.09, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
;; size=64 bbWeight=0.09 PerfScore 1.33
G_M16438_IG06: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
- ldr x21, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.07 PerfScore 0.34
+ ;; size=16 bbWeight=0.07 PerfScore 0.27
G_M16438_IG07: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
add x0, x19, #16
@@ -115,10 +115,8 @@ G_M16438_IG08: ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
b G_M16438_IG06
;; size=4 bbWeight=0.93 PerfScore 0.93
-G_M16438_IG09: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbz w0, #2, G_M16438_IG06
- ;; size=4 bbWeight=0.07 PerfScore 0.07
-G_M16438_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M16438_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w22, #2, G_M16438_IG06
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -146,21 +144,25 @@ G_M16438_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
- ;; size=76 bbWeight=0 PerfScore 0.00
-G_M16438_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+ ;; size=80 bbWeight=0 PerfScore 0.00
+G_M16438_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs +[x19]
; byrRegs +[x21]
- add x0, fp, #24 // [V09 tmp4]
+ add x0, fp, #16 // [V09 tmp4]
mov w1, #20
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- b G_M16438_IG03
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ldapr w22, [x21]
+ mov w0, #13
+ tst w22, w0
+ beq G_M16438_IG03
+ b G_M16438_IG09
+ ;; size=48 bbWeight=0 PerfScore 0.00
-Total bytes of code 328, prolog size 16, PerfScore 30.23, instruction count 82, allocated bytes for code 328 (MethodHash=e1eebfc9) for method System.Threading.Tasks.ParallelLoopState:Break[long](long,System.Threading.Tasks.ParallelLoopStateFlags`1[long]) (Tier1)
+Total bytes of code 344, prolog size 16, PerfScore 30.10, instruction count 86, allocated bytes for code 344 (MethodHash=e1eebfc9) for method System.Threading.Tasks.ParallelLoopState:Break[long](long,System.Threading.Tasks.ParallelLoopStateFlags`1[long]) (Tier1)
; ============================================================
Unwind Info:
@@ -171,7 +173,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 86 (0x00056) Actual length = 344 (0x000158)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -179,9 +181,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 87 save_reg X#2 Z#7 (0x07); str x21, [sp, #56]
- C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
+ E6 save_next
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+ E4 end
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-40 (-27.03%) : 145569.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-27.03%) : 20780.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-3.55%) : 144016.dasm - System.SpanTests.ReadOnlySpanTests:TestSingleValueCount_Byte() (FullOpts)
@@ -8,63 +8,61 @@
; 6 inlinees with PGO data; 13 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00,T32] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <int[]>
-; V01 loc1 [V01,T22] ( 5, 17 ) int -> x20
-; V02 loc2 [V02,T21] ( 5, 18 ) int -> x21
-; V03 loc3 [V03 ] ( 5, 44.24) struct (16) [fp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
+;* V00 loc0 [V00,T30] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <int[]>
+; V01 loc1 [V01,T20] ( 5, 17 ) int -> x20
+; V02 loc2 [V02,T19] ( 5, 18 ) int -> x21
+; V03 loc3 [V03 ] ( 5, 44.24) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;* V04 loc4 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
; V05 loc5 [V05,T04] ( 5, 68.47) int -> x23
-; V06 loc6 [V06,T10] ( 2, 32.24) ubyte -> [fp+0x4C] spill-single-def
+; V06 loc6 [V06,T10] ( 2, 32.24) ubyte -> x26
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T30] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <int[]>
-; V09 tmp2 [V09,T25] ( 2, 16 ) ref -> x1 class-hnd "dup spill" <<unknown class>>
-; V10 tmp3 [V10,T24] ( 3, 16 ) ref -> x22 class-hnd "impAppendStmt" <System.Collections.Generic.IEnumerable`1[int]>
-; V11 tmp4 [V11,T29] ( 4, 7.81) byref -> x21
+; V08 tmp1 [V08,T28] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <int[]>
+; V09 tmp2 [V09,T23] ( 2, 16 ) ref -> x1 class-hnd "dup spill" <<unknown class>>
+; V10 tmp3 [V10,T22] ( 3, 16 ) ref -> x22 class-hnd "impAppendStmt" <System.Collections.Generic.IEnumerable`1[int]>
+; V11 tmp4 [V11,T27] ( 4, 7.81) byref -> x21
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref
-; V13 tmp6 [V13,T26] ( 4, 14 ) ref -> x1
+; V13 tmp6 [V13,T24] ( 4, 14 ) ref -> x1
; V14 tmp7 [V14,T02] ( 3, 96.71) ref -> x0 class-hnd exact "dup spill" <ubyte[]>
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V17 tmp10 [V17,T15] ( 5, 20 ) ref -> x1 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V18 tmp11 [V18,T28] ( 2, 8 ) long -> x0 "Inline stloc first use temp"
+; V18 tmp11 [V18,T26] ( 2, 8 ) long -> x0 "Inline stloc first use temp"
; V19 tmp12 [V19,T16] ( 5, 20 ) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+RangeIterator>
-; V20 tmp13 [V20,T27] ( 2, 8 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
+; V20 tmp13 [V20,T25] ( 2, 8 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
; V21 tmp14 [V21,T13] ( 4, 23.22) ref -> x0 class-hnd "Inlining Arg" <ubyte[]>
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V23 tmp16 [V23,T05] ( 2, 64.47) int -> [fp+0x48] spill-single-def "Inlining Arg"
-; V24 tmp17 [V24,T03] ( 3, 96.71) ref -> [fp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T05] ( 2, 64.47) int -> x26 "Inlining Arg"
+; V24 tmp17 [V24,T03] ( 3, 96.71) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T06] ( 3, 48.35) ref -> [fp+0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V27 tmp20 [V27,T00] ( 4,128.94) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T01] ( 4,128.94) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V29 tmp22 [V29 ] ( 3, 24.12) byref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._reference (fldOffset=0x0)" P-DEP
-; V30 tmp23 [V30 ] ( 3, 24.12) int -> [fp+0x58] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
+; V26 tmp19 [V26,T06] ( 3, 48.35) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V27 tmp20 [V27,T00] ( 4,128.94) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T01] ( 4,128.94) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V29 tmp22 [V29 ] ( 3, 24.12) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03._reference (fldOffset=0x0)" P-DEP
+; V30 tmp23 [V30 ] ( 3, 24.12) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
; V31 tmp24 [V31,T14] ( 2, 20.12) byref -> x21 "field V04._reference (fldOffset=0x0)" P-INDEP
; V32 tmp25 [V32,T12] ( 3, 24.12) int -> x22 "field V04._length (fldOffset=0x8)" P-INDEP
-; V33 tmp26 [V33,T08] ( 2, 32.24) byref -> [fp+0x18] spill-single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V34 tmp27 [V34,T11] ( 2, 32.24) int -> [fp+0x44] spill-single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V33 tmp26 [V33,T08] ( 2, 32.24) byref -> x27 "field V15._reference (fldOffset=0x0)" P-INDEP
+; V34 tmp27 [V34,T11] ( 2, 32.24) int -> x28 "field V15._length (fldOffset=0x8)" P-INDEP
;* V35 tmp28 [V35 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V37 tmp30 [V37,T09] ( 2, 32.24) byref -> x2 "field V22._reference (fldOffset=0x0)" P-INDEP
-;* V38 tmp31 [V38,T23] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
-; V39 cse0 [V39,T07] ( 3, 34.24) long -> x27 hoist "CSE - aggressive"
+;* V38 tmp31 [V38,T21] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
+; V39 cse0 [V39,T07] ( 3, 48.35) long -> [fp+0x18] spill-single-def "CSE - aggressive"
; V40 cse1 [V40,T17] ( 2, 18.12) long -> x24 hoist "CSE - moderate"
; V41 cse2 [V41,T18] ( 2, 18.12) long -> x25 hoist "CSE - moderate"
-; V42 cse3 [V42,T19] ( 2, 18.12) long -> x26 hoist "CSE - moderate"
-; V43 cse4 [V43,T20] ( 2, 18.12) long -> x28 hoist "CSE - moderate"
-; V44 cse5 [V44,T31] ( 3, 6 ) byref -> x19 "CSE - moderate"
+; V42 cse3 [V42,T29] ( 3, 6 ) byref -> x19 "CSE - moderate"
;
-; Lcl frame size = 80
+; Lcl frame size = 32
G_M13491_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xB0]!
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
- stp x23, x24, [sp, #0x80]
- stp x25, x26, [sp, #0x90]
- stp x27, x28, [sp, #0xA0]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
- stp xzr, xzr, [fp, #0x50] // [V03 loc3], [V03 loc3+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V03 loc3], [V03 loc3+0x08]
;; size=32 bbWeight=1 PerfScore 7.50
G_M13491_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
@@ -124,7 +122,7 @@ G_M13491_IG06: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19
movk x0, #0xD1FFAB1E LSL #32
ldr x1, [x0]
; gcrRegs +[x1]
- add x21, fp, #80 // [V03 loc3]
+ add x21, fp, #32 // [V03 loc3]
; byrRegs +[x21]
cbnz x1, G_M13491_IG08
;; size=24 bbWeight=4 PerfScore 24.00
@@ -185,9 +183,9 @@ G_M13491_IG09: ; bbWeight=1.81, gcrefRegs=0001 {x0}, byrefRegs=280000 {x1
;; size=16 bbWeight=1.81 PerfScore 9.93
G_M13491_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x1 x21]
- ldr x21, [fp, #0x50] // [V29 tmp22]
+ ldr x21, [fp, #0x20] // [V29 tmp22]
; byrRegs +[x21]
- ldr w22, [fp, #0x58] // [V30 tmp23]
+ ldr w22, [fp, #0x28] // [V30 tmp23]
mov w23, wzr
cmp w22, #0
ble G_M13491_IG13
@@ -199,136 +197,118 @@ G_M13491_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21
movz x25, #0xD1FFAB1E
movk x25, #0xD1FFAB1E LSL #16
movk x25, #0xD1FFAB1E LSL #32
- movz x26, #0xD1FFAB1E
- movk x26, #0xD1FFAB1E LSL #16
- movk x26, #0xD1FFAB1E LSL #32
- movz x27, #0xD1FFAB1E
- movk x27, #0xD1FFAB1E LSL #16
- movk x27, #0xD1FFAB1E LSL #32
- movz x28, #0xD1FFAB1E
- movk x28, #0xD1FFAB1E LSL #16
- movk x28, #0xD1FFAB1E LSL #32
- ;; size=60 bbWeight=2 PerfScore 15.00
+ ;; size=24 bbWeight=2 PerfScore 6.00
G_M13491_IG12: ; bbWeight=16.12, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
- ldrb w2, [x21, w23, UXTW #2]
- str w2, [fp, #0x4C] // [V06 loc6]
- ldr x3, [fp, #0x50] // [V29 tmp22]
- ; byrRegs +[x3]
- str x3, [fp, #0x18] // [V33 tmp26]
- ; GC ptr vars +{V33}
- ldr w4, [fp, #0x58] // [V30 tmp23]
- str w4, [fp, #0x44] // [V34 tmp27]
+ ldrb w26, [x21, w23, UXTW #2]
+ ldr x27, [fp, #0x20] // [V29 tmp22]
+ ; byrRegs +[x27]
+ ldr w28, [fp, #0x28] // [V30 tmp23]
mov x0, x24
mov x1, #1
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; byrRegs -[x3]
- ldr w1, [fp, #0x4C] // [V06 loc6]
- strb w1, [x0, #0x10]
+ strb w26, [x0, #0x10]
add x2, x0, #16
; byrRegs +[x2]
- ldr x0, [fp, #0x18] // [V33 tmp26]
+ mov x0, x27
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr w1, [fp, #0x44] // [V34 tmp27]
+ mov w1, w28
mov w3, #1
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
- ; GC ptr vars -{V33}
blr x4
- ; byrRegs -[x0 x2]
- str w0, [fp, #0x48] // [V23 tmp16]
+ ; byrRegs -[x0 x2 x27]
+ sxtw w26, w0
mov x0, x25
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- str x0, [fp, #0x38] // [V24 tmp17]
- ; GC ptr vars +{V24}
- mov x0, x26
+ mov x27, x0
+ ; gcrRegs +[x27]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ mov x28, x0
+ ; gcrRegs +[x28]
+ str xzr, [x28, #0x08]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ str x1, [fp, #0x18] // [V39 cse0]
+ mov x0, x1
; gcrRegs -[x0]
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- str x1, [fp, #0x30] // [V26 tmp19]
- ; GC ptr vars +{V26}
- str xzr, [x1, #0x08]
- mov x0, x27
- ; gcrRegs -[x0]
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1] +[x0]
- mov x1, x0
- ; gcrRegs +[x1]
- str x1, [fp, #0x28] // [V27 tmp20]
+ str x1, [fp, #0x10] // [V27 tmp20]
; GC ptr vars +{V27}
add x14, x1, #8
; byrRegs +[x14]
- ldr x15, [fp, #0x30] // [V26 tmp19]
+ mov x15, x28
; gcrRegs +[x15]
- ; GC ptr vars -{V26}
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15]
+ ; gcrRegs -[x0 x15 x28]
; byrRegs -[x14]
- str x28, [x1, #0x18]
- add x0, x27, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E // code for <unknown method>
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ str x0, [x1, #0x18]
+ ldr x28, [fp, #0x18] // [V39 cse0]
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- str x2, [fp, #0x20] // [V28 tmp21]
- ; GC ptr vars +{V28}
- add x14, x2, #16
+ mov x28, x0
+ ; gcrRegs +[x28]
+ add x14, x28, #16
; byrRegs +[x14]
- ldr x15, [fp, #0x28] // [V27 tmp20]
+ ldr x15, [fp, #0x10] // [V27 tmp20]
; gcrRegs +[x15]
; GC ptr vars -{V27}
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x2 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
mov w0, #2
mov w1, wzr
...
+32 (+4.08%) : 12555.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -97,95 +97,73 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=84 bbWeight=0.50 PerfScore 12.25
-G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=88 bbWeight=0.50 PerfScore 12.50
+G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M10501_IG11
+ ble G_M10501_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M10501_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M10501_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M10501_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M10501_IG10
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M10501_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M10501_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M10501_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M10501_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M10501_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M10501_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -198,28 +176,32 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M10501_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M10501_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -229,22 +211,38 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M10501_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M10501_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M10501_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M10501_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M10501_IG17
...
+36 (+4.64%) : 97878.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
@@ -12,41 +12,43 @@
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V02 loc1 [V02,T03] ( 3, 9 ) ref -> x19 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03 ] ( 8, 14 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x21 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
+; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x23 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T01] ( 7, 14 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp2 [V07,T07] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp5 [V10,T09] ( 4, 3.50) ref -> x2
+; V10 tmp5 [V10,T11] ( 4, 3.50) ref -> x2
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
; V12 tmp7 [V12,T00] ( 4, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V13 tmp8 [V13,T05] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T12] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V18 tmp13 [V18,T08] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V19 tmp14 [V19,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V18 tmp13 [V18,T10] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V19 tmp14 [V19,T15] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "V18.[000..008)"
-; V22 tmp17 [V22,T13] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
+; V22 tmp17 [V22,T14] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "V18.[012..016)"
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "V18.[016..020)"
;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V27 tmp22 [V27,T15] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V28 tmp23 [V28,T16] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V29 cse0 [V29,T04] ( 3, 6 ) long -> x20 "CSE - aggressive"
-; V30 cse1 [V30,T10] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
-; V31 cse2 [V31,T11] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V27 tmp22 [V27,T16] ( 2, 0 ) ref -> x0 "argument with side effect"
+; V28 tmp23 [V28,T17] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V29 cse0 [V29,T07] ( 2, 5 ) long -> x21 hoist "CSE - aggressive"
+; V30 cse1 [V30,T08] ( 2, 5 ) long -> x22 hoist "CSE - aggressive"
+; V31 cse2 [V31,T04] ( 3, 6 ) long -> x20 "CSE - aggressive"
+; V32 cse3 [V32,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
;
; Lcl frame size = 88
G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x68]
- str x21, [sp, #0x78]
+ stp x21, x22, [sp, #0x78]
+ str x23, [sp, #0x88]
mov fp, sp
add x9, fp, #24
movi v16.16b, #0
@@ -55,7 +57,7 @@ G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, xzr, [x9, #0x40]
mov x19, x0
; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M64326_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -139,10 +141,10 @@ G_M64326_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 3.75
G_M64326_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- ldr x2, [x21]
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x2, [x0]
; gcrRegs +[x2]
cbnz x2, G_M64326_IG08
;; size=20 bbWeight=1 PerfScore 5.50
@@ -155,7 +157,10 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]
- ldr x15, [x21, #-0x68]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ ldr x15, [x14]
; gcrRegs +[x15]
add x14, x2, #8
; byrRegs +[x14]
@@ -166,12 +171,14 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
str x14, [x2, #0x18]
- mov x14, x21
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=80 bbWeight=0.50 PerfScore 7.25
G_M64326_IG08: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
@@ -213,34 +220,36 @@ G_M64326_IG10: ; bbWeight=1, isz, extend
ldr x2, [x2]
blr x2
cbz w0, G_M64326_IG12
- ;; size=60 bbWeight=1 PerfScore 12.50
+ movz x21, #0xD1FFAB1E
+ movk x21, #0xD1FFAB1E LSL #16
+ movk x21, #0xD1FFAB1E LSL #32
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #0xD1FFAB1E LSL #32
+ ;; size=84 bbWeight=1 PerfScore 15.50
G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x21
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #8
+ mov x23, x0
+ ; gcrRegs +[x23]
+ add x14, x23, #8
; byrRegs +[x14]
add x13, fp, #88 // [V03 loc2+0x18]
; byrRegs +[x13]
bl CORINFO_HELP_ASSIGN_BYREF
; gcrRegs -[x0]
bl CORINFO_HELP_ASSIGN_BYREF
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x22
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; byrRegs -[x13-x14]
add x14, x0, #8
; byrRegs +[x14]
- mov x15, x21
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x21]
+ ; gcrRegs -[x15 x23]
; byrRegs -[x14]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -273,14 +282,15 @@ G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x2]
blr x2
cbnz w0, G_M64326_IG11
- ;; size=168 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 116.00
G_M64326_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
- ldr x21, [sp, #0x78]
+ ldr x23, [sp, #0x88]
+ ldp x21, x22, [sp, #0x78]
ldp x19, x20, [sp, #0x68]
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -318,7 +328,7 @@ G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=104 bbWeight=0 PerfScore 0.00
-Total bytes of code 776, prolog size 36, PerfScore 223.00, instruction count 194, allocated bytes for code 776 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
+Total bytes of code 812, prolog size 40, PerfScore 221.25, instruction count 203, allocated bytes for code 812 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
; ============================================================
Unwind Info:
@@ -329,7 +339,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 194 (0x000c2) Actual length = 776 (0x000308)
+ Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -337,9 +347,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ D1 11 save_reg X#4 Z#17 (0x11); str x23, [sp, #136]
+ E6 save_next
C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
- E4 end
+ 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
E4 end
+40 (+4.93%) : 97921.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentVariablesDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
@@ -13,14 +13,14 @@
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03,T03] ( 3, 9 ) ref -> x19 class-hnd exact single-def <<unknown class>>
; V04 loc3 [V04 ] ( 8, 14 ) struct (40) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V05 loc4 [V05,T01] ( 4, 16 ) ref -> x22 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass8_1>
+; V05 loc4 [V05,T01] ( 4, 16 ) ref -> x24 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass8_1>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass8_0>
; V08 tmp2 [V08,T02] ( 7, 14 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp3 [V09,T08] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V09 tmp3 [V09,T10] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
-; V12 tmp6 [V12,T10] ( 4, 3.50) ref -> x2
+; V12 tmp6 [V12,T12] ( 4, 3.50) ref -> x2
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref
@@ -31,7 +31,7 @@
;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V21 tmp15 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V22 tmp16 [V22,T14] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V23 tmp17 [V23,T09] ( 2, 4 ) struct (40) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V23 tmp17 [V23,T11] ( 2, 4 ) struct (40) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
; V24 tmp18 [V24,T16] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "V23.[000..008)"
@@ -42,17 +42,18 @@
;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V32 tmp26 [V32,T17] ( 2, 0 ) ref -> x0 "argument with side effect"
; V33 tmp27 [V33,T18] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V34 cse0 [V34,T05] ( 3, 6 ) long -> x21 "CSE - aggressive"
-; V35 cse1 [V35,T11] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
-; V36 cse2 [V36,T13] ( 3, 3 ) ref -> x22 "CSE - aggressive"
-; V37 cse3 [V37,T12] ( 4, 3 ) long -> x22 "CSE - aggressive"
+; V34 cse0 [V34,T08] ( 2, 5 ) long -> x22 hoist "CSE - aggressive"
+; V35 cse1 [V35,T09] ( 2, 5 ) long -> x23 hoist "CSE - aggressive"
+; V36 cse2 [V36,T05] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V37 cse3 [V37,T13] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
;
; Lcl frame size = 80
G_M13147_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x60]
stp x21, x22, [sp, #0x70]
+ stp x23, x24, [sp, #0x80]
mov fp, sp
add x9, fp, #16
movi v16.16b, #0
@@ -61,7 +62,7 @@ G_M13147_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, xzr, [x9, #0x40]
mov x19, x0
; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M13147_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -96,21 +97,19 @@ G_M13147_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- movz x22, #0xD1FFAB1E
- movk x22, #0xD1FFAB1E LSL #16
- movk x22, #0xD1FFAB1E LSL #32
- mov x2, x22
- ; gcrRegs +[x2]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
mov w3, #2
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x0 x2] +[x22]
+ ; gcrRegs -[x0]
cbnz w0, G_M13147_IG04
- ;; size=144 bbWeight=1 PerfScore 28.00
-G_M13147_IG03: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=140 bbWeight=1 PerfScore 27.50
+G_M13147_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -123,23 +122,24 @@ G_M13147_IG03: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M13147_IG04: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M13147_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- mov x2, x22
- ; gcrRegs +[x2]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
mov w3, #2
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x0 x2 x22]
+ ; gcrRegs -[x0]
cbnz w0, G_M13147_IG06
- ;; size=48 bbWeight=1 PerfScore 9.50
+ ;; size=56 bbWeight=1 PerfScore 10.50
G_M13147_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -154,10 +154,10 @@ G_M13147_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 3.75
G_M13147_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- movz x22, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x22, #0xD1FFAB1E LSL #16
- movk x22, #0xD1FFAB1E LSL #32
- ldr x2, [x22]
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x2, [x0]
; gcrRegs +[x2]
cbnz x2, G_M13147_IG08
;; size=20 bbWeight=1 PerfScore 5.50
@@ -170,7 +170,10 @@ G_M13147_IG07: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]
- ldr x15, [x22, #-0x88]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ ldr x15, [x14]
; gcrRegs +[x15]
add x14, x2, #8
; byrRegs +[x14]
@@ -181,12 +184,14 @@ G_M13147_IG07: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
str x14, [x2, #0x18]
- mov x14, x22
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=80 bbWeight=0.50 PerfScore 7.25
G_M13147_IG08: ; bbWeight=1, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
@@ -230,40 +235,42 @@ G_M13147_IG10: ; bbWeight=1, isz, extend
ldr x2, [x2]
blr x2
cbz w0, G_M13147_IG12
- ;; size=60 bbWeight=1 PerfScore 12.50
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #0xD1FFAB1E LSL #32
+ movz x23, #0xD1FFAB1E
+ movk x23, #0xD1FFAB1E LSL #16
+ movk x23, #0xD1FFAB1E LSL #32
+ ;; size=84 bbWeight=1 PerfScore 15.50
G_M13147_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x22
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x22, x0
- ; gcrRegs +[x22]
- add x14, x22, #8
+ mov x24, x0
+ ; gcrRegs +[x24]
+ add x14, x24, #8
; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x22, #16
+ add x14, x24, #16
; byrRegs +[x14]
add x13, fp, #80 // [V04 loc3+0x18]
; byrRegs +[x13]
bl CORINFO_HELP_ASSIGN_BYREF
bl CORINFO_HELP_ASSIGN_BYREF
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x23
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; byrRegs -[x13-x14]
add x14, x0, #8
; byrRegs +[x14]
- mov x15, x22
+ mov x15, x24
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x22]
+ ; gcrRegs -[x15 x24]
; byrRegs -[x14]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -296,14 +303,15 @@ G_M13147_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
blr x2
cbnz w0, G_M13147_IG11
- ;; size=180 bbWeight=4 PerfScore 132.00
+ ;; size=164 bbWeight=4 PerfScore 124.00
G_M13147_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20]
+ ldp x23, x24, [sp, #0x80]
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M13147_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -341,7 +349,7 @@ G_M13147_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=104 bbWeight=0 PerfScore 0.00
-Total bytes of code 812, prolog size 36, PerfScore 234.00, instruction count 203, allocated bytes for code 812 (MethodHash=ad97cca4) for method System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentVariablesDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
+Total bytes of code 852, prolog size 40, PerfScore 232.75, instruction count 213, allocated bytes for code 852 (MethodHash=ad97cca4) for method System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentVariablesDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
; ============================================================
Unwind Info:
@@ -352,7 +360,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
...
realworld.run.linux.arm64.checked.mch
-40 (-27.03%) : 15422.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.77%) : 21766.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)
@@ -74,7 +74,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cmp w1, #1
beq G_M39186_IG23
mov w19, wzr
- b G_M39186_IG35
+ b G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
@@ -290,7 +290,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
mov w21, wzr
ldr w11, [x0, #0x30]
cmp w11, #0
- ble G_M39186_IG29
+ ble G_M39186_IG37
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -300,11 +300,11 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x11]
ldr w1, [x11, #0x10]
cmp w21, w1
- bhs G_M39186_IG30
+ bhs G_M39186_IG27
ldr x11, [x11, #0x08]
ldr w1, [x11, #0x08]
cmp w21, w1
- bhs G_M39186_IG31
+ bhs G_M39186_IG26
add x11, x11, #16
; gcrRegs -[x11]
; byrRegs +[x11]
@@ -320,10 +320,40 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M39186_IG34
- cbnz x20, G_M39186_IG27
- ;; size=80 bbWeight=4 PerfScore 116.00
-G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M39186_IG28
+ ;; size=76 bbWeight=4 PerfScore 112.00
+G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20 x22]
+ mov w19, wzr
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ movz x1, #0xD1FFAB1E // code for <unknown method>
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ b G_M39186_IG38
+ ;; size=32 bbWeight=0.50 PerfScore 4.50
+G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M39186_IG28: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20 x22]
+ cbnz x20, G_M39186_IG33
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M39186_IG29: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
@@ -331,10 +361,22 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
ldr x2, [x1, #0x38]
ldr x2, [x2]
ldr x2, [x2, #0x38]
- cbz x2, G_M39186_IG32
+ cbz x2, G_M39186_IG31
;; size=24 bbWeight=2 PerfScore 30.00
-G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ b G_M39186_IG32
+ ;; size=4 bbWeight=1.60 PerfScore 1.60
+G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov x2, x0
+ ;; size=24 bbWeight=0.40 PerfScore 1.40
+G_M39186_IG32: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x2
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -345,7 +387,7 @@ G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
mov x20, x0
; gcrRegs +[x20]
;; size=20 bbWeight=2 PerfScore 14.00
-G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -353,9 +395,20 @@ G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x11, [x1, #0x30]
- cbz x11, G_M39186_IG33
+ cbz x11, G_M39186_IG35
;; size=24 bbWeight=4 PerfScore 60.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ b G_M39186_IG36
+ ;; size=4 bbWeight=3.20 PerfScore 3.20
+G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov x11, x0
+ ;; size=20 bbWeight=0.80 PerfScore 2.40
+G_M39186_IG36: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
ldr x1, [x11]
@@ -374,7 +427,7 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00
cmp w21, w14
blt G_M39186_IG24
;; size=44 bbWeight=4 PerfScore 48.00
-G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -390,68 +443,17 @@ G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
sxtw w20, w0
mov w19, w20
; gcrRegs -[x19]
- b G_M39186_IG35
- ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M39186_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- brk_unix #0
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M39186_IG32: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x22]
- mov x0, x1
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov x2, x0
- b G_M39186_IG26
- ;; size=28 bbWeight=0.40 PerfScore 1.80
-G_M39186_IG33: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov x11, x0
- b G_M39186_IG28
- ;; size=24 bbWeight=0.80 PerfScore 3.20
-G_M39186_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20 x22]
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- mov w20, wzr
- mov x0, x19
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0 x19]
- ; gcr arg pop 0
- mov w19, w20
- ;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M39186_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.25
+G_M39186_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w19
;; size=4 bbWeight=1 PerfScore 0.50
-G_M39186_IG36: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x50
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V03 V24}
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
@@ -459,10 +461,10 @@ G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs
add x3, fp, #80
str x3, [sp, #0x18]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V03 loc2]
; gcrRegs +[x0]
- cbz x0, G_M39186_IG39
+ cbz x0, G_M39186_IG42
movz x19, #0xD1FFAB1E
movk x19, #0xD1FFAB1E LSL #16
movk x19, #0xD1FFAB1E LSL #32
@@ -473,20 +475,20 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
add x3, fp, #80
str x3, [sp, #0x18]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG44: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
-4 (-0.15%) : 2729.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -23,24 +23,24 @@
; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1
;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt"
;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg"
;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -67,13 +67,13 @@
;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
-; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg"
-; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
+; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]>
; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg"
; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]>
@@ -90,14 +90,14 @@
;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
-; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
+; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP
;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
@@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x40] // [V100 tmp78]
cmp w1, w2
bhi G_M4730_IG74
- cmp w1, #0
- cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w3, [x1, #0x08]
cmp w3, w0
bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x27]
add x1, x1, #16
@@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {},
beq G_M4730_IG67
b G_M4730_IG27
;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89}
str w1, [fp, #0x60] // [V10 loc6]
mov w28, w2
@@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; GC ptr vars +{V89}
ldr w28, [fp, #0x68] // [V07 loc3]
;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3]
; GC ptr vars -{V57}
cmp w25, w26
@@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}
; GC ptr vars +{V13}
cbz x24, G_M4730_IG39
;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26]
ldr w26, [fp, #0x44] // [V90 tmp68]
cbz w26, G_M4730_IG32
@@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
str w0, [x19, #0x18]
b G_M4730_IG41
;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27]
; GC ptr vars +{V13 V16 V89}
b G_M4730_IG42
@@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; gcrRegs -[x26]
b G_M4730_IG47
;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26]
; GC ptr vars +{V13 V16 V89}
ldr x2, [fp, #0x30] // [V13 loc9]
@@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcr arg pop 0
b G_M4730_IG06
;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27]
; GC ptr vars +{V13 V16 V89}
ldr x1, [fp, #0x30] // [V13 loc9]
@@ -1216,7 +1215,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2704, prolog size 48, PerfScore 6977.50, instruction count 676, allocated bytes for code 2704 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2700, prolog size 48, PerfScore 6975.50, instruction count 675, allocated bytes for code 2700 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1227,7 +1226,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 676 (0x002a4) Actual length = 2704 (0x000a90)
+ Function Length : 675 (0x002a3) Actual length = 2700 (0x000a8c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+1.56%) : 23911.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
@@ -38,7 +38,7 @@ G_M17353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M17353_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x20, x19
; gcrRegs +[x20]
- cbz x19, G_M17353_IG09
+ cbz x19, G_M17353_IG08
;; size=8 bbWeight=1 PerfScore 1.50
G_M17353_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
@@ -69,7 +69,7 @@ G_M17353_IG04: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x8, x0
- bne G_M17353_IG11
+ bne G_M17353_IG12
mov x21, x20
; gcrRegs +[x21]
add x8, fp, #16 // [V03 loc2]
@@ -103,27 +103,31 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=12 bbWeight=2 PerfScore 9.00
G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
+ b G_M17353_IG10
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M17353_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x21]
mov x0, x21
; gcrRegs +[x0]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x21]
- mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x20]
+G_M17353_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x21] +[x20]
mov x1, x20
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -131,7 +135,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
brk_unix #0
;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 256, prolog size 24, PerfScore 152.00, instruction count 64, allocated bytes for code 256 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 260, prolog size 24, PerfScore 152.50, instruction count 65, allocated bytes for code 260 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+1.96%) : 24934.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int
@@ -10,15 +10,15 @@
;
;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T03] ( 6, 10 ) ref -> x20 class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]>
-; V04 loc0 [V04 ] ( 8, 13.50) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
+; V04 loc0 [V04 ] ( 9, 14 ) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
; V05 loc1 [V05,T06] ( 5, 8.50) ref -> x23 ld-addr-op class-hnd <System.__Canon>
;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
; V07 loc3 [V07,T00] ( 6, 18.50) int -> x24
; V08 loc4 [V08,T04] ( 4, 12 ) ref -> x26 class-hnd <System.__Canon>
; V09 loc5 [V09,T09] ( 4, 8 ) int -> x0
-; V10 loc6 [V10,T02] ( 6, 12.50) int -> x24
+; V10 loc6 [V10,T01] ( 7, 17 ) int -> x24
; V11 loc7 [V11,T12] ( 3, 6 ) ref -> x25 class-hnd <System.__Canon>
; V12 loc8 [V12,T13] ( 3, 6 ) int -> x0
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -28,7 +28,7 @@
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp5 [V18,T11] ( 4, 4.50) ref -> x21 single-def "field V01.array (fldOffset=0x0)" P-INDEP
; V19 tmp6 [V19,T10] ( 6, 7.50) ubyte -> [fp+0x18] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp7 [V20,T05] ( 5, 9 ) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
+; V20 tmp7 [V20,T05] ( 6, 9.50) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP
; V23 cse0 [V23,T14] ( 2, 1 ) int -> x0 "CSE - moderate"
@@ -143,13 +143,15 @@ G_M52223_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
mov w24, wzr
- b G_M52223_IG16
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ldr w1, [fp, #0x1C] // [V20 tmp7]
+ cmp w24, w1
+ bge G_M52223_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w22
- bhs G_M52223_IG21
+ bhs G_M52223_IG20
add x25, x21, #16
; byrRegs +[x25]
ldr x25, [x25, w24, UXTW #3]
@@ -174,21 +176,19 @@ G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
; gcrRegs -[x0-x2 x25]
cbz w0, G_M52223_IG15
cmp w0, #3
- bne G_M52223_IG19
+ bne G_M52223_IG18
;; size=68 bbWeight=2 PerfScore 48.00
-G_M52223_IG15: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M52223_IG15: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M52223_IG16: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- ldr w1, [fp, #0x1C] // [V20 tmp7]
- cmp w24, w1
+ ldr w0, [fp, #0x1C] // [V20 tmp7]
+ cmp w24, w0
blt G_M52223_IG14
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M52223_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 16.00
+G_M52223_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21 x23]
ldr x0, [fp, #0x18] // [V04 loc0]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -196,10 +196,10 @@ G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG19: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -207,12 +207,12 @@ G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 408, prolog size 28, PerfScore 189.00, instruction count 102, allocated bytes for code 408 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 416, prolog size 28, PerfScore 191.25, instruction count 104, allocated bytes for code 416 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================
Unwind Info:
@@ -223,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 102 (0x00066) Actual length = 408 (0x000198)
+ Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+3.91%) : 14486.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -33,10 +33,10 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value"
; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG23
- cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25
+ cbz w21, G_M46295_IG19
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG17
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG14
- cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16
+ cbnz x23, G_M46295_IG12
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08]
sub w0, w0, w24
cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12
; byrRegs +[x2]
sbfiz x0, x24, #1, #32
@@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -266,7 +277,7 @@ Unwind Info:
E bit : 0
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm64.checked.mch |
21 |
6 |
7 |
8 |
-228 |
+376 |
benchmarks.run_pgo.linux.arm64.checked.mch |
508 |
388 |
87 |
33 |
-7,432 |
+3,144 |
benchmarks.run_tiered.linux.arm64.checked.mch |
8 |
0 |
4 |
4 |
-0 |
+184 |
coreclr_tests.run.linux.arm64.checked.mch |
334 |
69 |
120 |
145 |
-536 |
+1,240 |
libraries.crossgen2.linux.arm64.checked.mch |
1 |
0 |
0 |
1 |
-0 |
+0 |
libraries.pmi.linux.arm64.checked.mch |
171 |
45 |
51 |
75 |
-416 |
+1,188 |
libraries_tests.run.linux.arm64.Release.mch |
1,346 |
642 |
365 |
339 |
-8,460 |
+3,496 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
225 |
62 |
59 |
104 |
-928 |
+1,236 |
realworld.run.linux.arm64.checked.mch |
26 |
7 |
12 |
7 |
-68 |
+180 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2,640 |
1,219 |
705 |
716 |
-18,068 |
+11,044 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm64.checked.mch |
32,435 |
2,362 |
30,073 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.linux.arm64.checked.mch |
152,737 |
60,751 |
91,986 |
14 (0.01%) |
14 (0.01%) |
benchmarks.run_tiered.linux.arm64.checked.mch |
60,787 |
45,077 |
15,710 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.linux.arm64.checked.mch |
626,684 |
383,548 |
243,136 |
12 (0.00%) |
12 (0.00%) |
libraries.crossgen2.linux.arm64.checked.mch |
1,936 |
0 |
1,936 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.arm64.checked.mch |
295,687 |
6 |
295,681 |
3 (0.00%) |
3 (0.00%) |
libraries_tests.run.linux.arm64.Release.mch |
750,983 |
494,543 |
256,440 |
128 (0.02%) |
128 (0.02%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
304,826 |
21,600 |
283,226 |
2 (0.00%) |
2 (0.00%) |
realworld.run.linux.arm64.checked.mch |
33,343 |
157 |
33,186 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.linux.arm64.checked.mch |
52 |
0 |
52 |
0 (0.00%) |
0 (0.00%) |
|
2,259,470 |
1,008,044 |
1,251,426 |
159 (0.01%) |
159 (0.01%) |
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14972964 (overridden on cmd)
Total bytes of diff: 14973112 (overridden on cmd)
Total bytes of delta: 148 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 21 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79903244 (overridden on cmd)
Total bytes of diff: 79898956 (overridden on cmd)
Total bytes of delta: -4288 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 97 unchanged.
benchmarks.run_tiered.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 22276872 (overridden on cmd)
Total bytes of diff: 22277056 (overridden on cmd)
Total bytes of delta: 184 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 8 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509740232 (overridden on cmd)
Total bytes of diff: 509740936 (overridden on cmd)
Total bytes of delta: 704 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 80 unchanged.
libraries.crossgen2.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 315768 (overridden on cmd)
Total bytes of diff: 315768 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 76281012 (overridden on cmd)
Total bytes of diff: 76281784 (overridden on cmd)
Total bytes of delta: 772 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 74 unchanged.
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 400018960 (overridden on cmd)
Total bytes of diff: 400013996 (overridden on cmd)
Total bytes of delta: -4964 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 87 unchanged.
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 165110104 (overridden on cmd)
Total bytes of diff: 165110412 (overridden on cmd)
Total bytes of delta: 308 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 72 unchanged.
realworld.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15918288 (overridden on cmd)
Total bytes of diff: 15918400 (overridden on cmd)
Total bytes of delta: 112 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 26 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
linux x64
Diffs are based on 2,249,703 contexts (981,298 MinOpts, 1,268,405 FullOpts).
MISSED contexts: 134 (0.01%)
Overall (-15,799 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
13,723,744 |
+124 |
benchmarks.run_pgo.linux.x64.checked.mch |
69,144,788 |
-14,029 |
benchmarks.run_tiered.linux.x64.checked.mch |
15,897,809 |
+62 |
coreclr_tests.run.linux.x64.checked.mch |
403,316,719 |
+982 |
libraries.crossgen2.linux.x64.checked.mch |
203,687 |
-1 |
libraries.pmi.linux.x64.checked.mch |
60,405,907 |
+582 |
libraries_tests.run.linux.x64.Release.mch |
348,249,945 |
-4,058 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
132,684,063 |
+428 |
realworld.run.linux.x64.checked.mch |
13,212,110 |
+111 |
FullOpts (-15,799 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
13,459,811 |
+124 |
benchmarks.run_pgo.linux.x64.checked.mch |
47,802,743 |
-14,029 |
benchmarks.run_tiered.linux.x64.checked.mch |
3,639,425 |
+62 |
coreclr_tests.run.linux.x64.checked.mch |
123,825,558 |
+982 |
libraries.crossgen2.linux.x64.checked.mch |
203,687 |
-1 |
libraries.pmi.linux.x64.checked.mch |
60,293,050 |
+582 |
libraries_tests.run.linux.x64.Release.mch |
164,494,781 |
-4,058 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
122,066,277 |
+428 |
realworld.run.linux.x64.checked.mch |
12,823,228 |
+111 |
Example diffs
benchmarks.run.linux.x64.checked.mch
-29 (-32.58%) : 4938.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
mov ecx, esi
- test esi, esi
- jl SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, eax
+ jae SHORT G_M3357_IG13
mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x0C]
cmp edx, 32
je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx
cmp eax, ecx
jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- cmp ecx, eax
- jae SHORT G_M3357_IG17
- mov edx, ecx
- movzx rdx, word ptr [rdi+2*rdx+0x0C]
- cmp edx, 32
- je SHORT G_M3357_IG12
- ;; size=16 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc ecx
- cmp eax, ecx
- jg SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
sub eax, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx
sub eax, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-35 (-2.63%) : 28663.dasm - BenchmarksGame.RegexRedux_1:RunBench():int:this (FullOpts)
@@ -54,21 +54,21 @@
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref
;* V44 tmp31 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp32 [V45 ] ( 0, 0 ) int -> zero-ref
-; V46 tmp33 [V46,T32] ( 3, 8 ) int -> rdi
+; V46 tmp33 [V46,T33] ( 3, 8 ) int -> rdi
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V48 tmp35 [V48 ] ( 0, 0 ) ref -> zero-ref
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref
;* V50 tmp37 [V50 ] ( 0, 0 ) ref -> zero-ref
;* V51 tmp38 [V51 ] ( 0, 0 ) int -> zero-ref
; V52 tmp39 [V52,T02] ( 10, 36 ) ref -> r12
-; V53 tmp40 [V53,T28] ( 3, 10 ) ref -> rbx
+; V53 tmp40 [V53,T20] ( 3, 12 ) ref -> rbx
; V54 tmp41 [V54,T06] ( 6, 30 ) ref -> [rbp-0x60] spill-single-def
;* V55 tmp42 [V55,T51] ( 0, 0 ) int -> zero-ref
-; V56 tmp43 [V56,T33] ( 3, 8 ) int -> [rbp-0x34]
+; V56 tmp43 [V56,T29] ( 3, 10 ) int -> [rbp-0x34]
; V57 tmp44 [V57,T15] ( 2, 16 ) ref -> rdx class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
; V58 tmp45 [V58,T10] ( 8, 22 ) ref -> [rbp-0x68]
-; V59 tmp46 [V59,T20] ( 3, 12 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
-; V60 tmp47 [V60,T21] ( 3, 12 ) byref -> [rbp-0x78] spill-single-def "finalizable newobj spill"
+; V59 tmp46 [V59,T21] ( 3, 12 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
+; V60 tmp47 [V60,T22] ( 3, 12 ) byref -> [rbp-0x78] spill-single-def "finalizable newobj spill"
; V61 tmp48 [V61,T35] ( 2, 8 ) ref -> rdx class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
;* V62 tmp49 [V62 ] ( 0, 0 ) ref -> zero-ref
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref
@@ -78,27 +78,27 @@
;* V67 tmp54 [V67 ] ( 0, 0 ) ref -> zero-ref
;* V68 tmp55 [V68 ] ( 0, 0 ) long -> zero-ref
;* V69 tmp56 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
-; V70 tmp57 [V70,T30] ( 4, 8 ) long -> rax "Inline stloc first use temp"
+; V70 tmp57 [V70,T31] ( 4, 8 ) long -> rax "Inline stloc first use temp"
;* V71 tmp58 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
; V73 tmp60 [V73,T12] ( 6, 18 ) ref -> [rbp-0x80] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V74 tmp61 [V74,T25] ( 2, 12 ) int -> [rbp-0x38] spill-single-def "Inlining Arg"
-; V75 tmp62 [V75,T23] ( 2, 12 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
-; V76 tmp63 [V76,T26] ( 2, 12 ) int -> [rbp-0x3C] spill-single-def "Inlining Arg"
-; V77 tmp64 [V77,T24] ( 2, 12 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V74 tmp61 [V74,T26] ( 2, 12 ) int -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V75 tmp62 [V75,T24] ( 2, 12 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V76 tmp63 [V76,T27] ( 2, 12 ) int -> [rbp-0x3C] spill-single-def "Inlining Arg"
+; V77 tmp64 [V77,T25] ( 2, 12 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
;* V78 tmp65 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V79 tmp66 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V80 tmp67 [V80,T31] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
+; V80 tmp67 [V80,T32] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
; V81 tmp68 [V81,T18] ( 5, 14 ) long -> rdi "Inline stloc first use temp"
;* V82 tmp69 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement>
; V83 tmp70 [V83,T40] ( 3, 6 ) ref -> r11 class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
;* V84 tmp71 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement>
;* V85 tmp72 [V85 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V86 tmp73 [V86,T22] ( 3, 12 ) ref -> [rbp-0x98] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
+; V86 tmp73 [V86,T23] ( 3, 12 ) ref -> [rbp-0x98] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
;* V87 tmp74 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V88 tmp75 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V89 tmp76 [V89,T36] ( 2, 8 ) ref -> rax class-hnd "dup spill" <System.Object>
-; V90 tmp77 [V90,T29] ( 4, 8 ) ref -> rax
+; V90 tmp77 [V90,T30] ( 4, 8 ) ref -> rax
;* V91 tmp78 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexReplacement>
; V92 tmp79 [V92,T19] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
; V93 tmp80 [V93,T01] ( 6, 52 ) ref -> rdi class-hnd exact "Inlining Arg" <System.String>
@@ -129,7 +129,7 @@
; V118 tmp105 [V118,T45] ( 3, 6 ) byref -> rdi single-def "BlockOp address local"
; V119 tmp106 [V119,T08] ( 3, 24 ) byref -> rdi "BlockOp address local"
; V120 cse0 [V120,T53] ( 2, 2 ) ref -> rsi "CSE - moderate"
-; V121 cse1 [V121,T27] ( 4, 10 ) long -> r15 "CSE - moderate"
+; V121 cse1 [V121,T28] ( 4, 10 ) long -> r15 "CSE - moderate"
;
; Lcl frame size = 136
@@ -162,7 +162,7 @@ G_M53318_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this]
; gcrRegs -[rax rsi rdi]
test rbx, rbx
- je G_M53318_IG36
+ je G_M53318_IG34
test byte ptr [r14+0x40], 64
jne SHORT G_M53318_IG04
;; size=65 bbWeight=1 PerfScore 12.75
@@ -249,7 +249,7 @@ G_M53318_IG06: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this]
; gcrRegs -[rax rsi rdi r12]
test rbx, rbx
- je G_M53318_IG36
+ je G_M53318_IG34
mov r9d, dword ptr [rbx+0x08]
mov r12, gword ptr [rbp-0x50]
; gcrRegs +[r12]
@@ -360,7 +360,7 @@ G_M53318_IG13: ; bbWeight=4, gcVars=0001000000000000 {V10}, gcrefRegs=400
call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this]
; gcrRegs -[rax rsi rdi r12]
test rbx, rbx
- je G_M53318_IG36
+ je G_M53318_IG34
mov r12, gword ptr [rbp-0x58]
; gcrRegs +[r12]
mov rax, gword ptr [rbp-0xA0]
@@ -373,16 +373,16 @@ G_M53318_IG13: ; bbWeight=4, gcVars=0001000000000000 {V10}, gcrefRegs=400
G_M53318_IG14: ; bbWeight=2, gcVars=0001000000000040 {V10 V54}, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V23 V101}
xor ecx, ecx
+ mov dword ptr [rbp-0x34], ecx
jmp SHORT G_M53318_IG16
- ;; size=4 bbWeight=2 PerfScore 4.50
-G_M53318_IG15: ; bbWeight=2, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
+ ;; size=7 bbWeight=2 PerfScore 6.50
+G_M53318_IG15: ; bbWeight=4, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x34], ecx
- mov ecx, dword ptr [rbp-0x34]
- ;; size=9 bbWeight=2 PerfScore 8.00
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M53318_IG16: ; bbWeight=4, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je G_M53318_IG37
+ je G_M53318_IG35
mov rdx, gword ptr [r12+0x30]
; gcrRegs +[rdx]
test rdx, rdx
@@ -390,7 +390,6 @@ G_M53318_IG16: ; bbWeight=4, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000
;; size=19 bbWeight=4 PerfScore 18.00
G_M53318_IG17: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rdx]
- mov dword ptr [rbp-0x34], ecx
lea rdx, bword ptr [r12+0x30]
; byrRegs +[rdx]
mov bword ptr [rbp-0x78], rdx
@@ -413,7 +412,7 @@ G_M53318_IG17: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {},
xor esi, esi
call [<unknown method>]
; gcrRegs -[rdi]
- ;; size=55 bbWeight=2 PerfScore 22.00
+ ;; size=52 bbWeight=2 PerfScore 20.00
G_M53318_IG18: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbp-0x70]
; gcrRegs +[rsi]
@@ -421,7 +420,7 @@ G_M53318_IG18: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {},
mov rdi, bword ptr [rbp-0x78]
; byrRegs +[rdi]
test rdi, rdi
- je G_M53318_IG38
+ je G_M53318_IG36
xor rdx, rdx
; gcrRegs +[rdx]
; GC ptr vars -{V59 V60}
@@ -433,11 +432,10 @@ G_M53318_IG18: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {},
mov rax, rdx
test rax, rax
mov rdx, rax
- jne SHORT G_M53318_IG21
+ jne SHORT G_M53318_IG19
mov rax, gword ptr [r12+0x30]
mov rdx, rax
- mov ecx, dword ptr [rbp-0x34]
- ;; size=53 bbWeight=2 PerfScore 21.50
+ ;; size=50 bbWeight=2 PerfScore 19.50
G_M53318_IG19: ; bbWeight=4, gcrefRegs=100C {rdx rbx r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, gword ptr [r12+0x18]
@@ -456,9 +454,9 @@ G_M53318_IG19: ; bbWeight=4, gcrefRegs=100C {rdx rbx r12}, byrefRegs=0000
; GC ptr vars +{V58}
mov rdi, qword ptr [rdx+0x08]
and rdi, -2
- jne SHORT G_M53318_IG22
+ jne SHORT G_M53318_IG21
;; size=56 bbWeight=4 PerfScore 65.00
-G_M53318_IG20: ; bbWeight=2, gcVars=0001000001800440 {V10 V54 V58 V75 V77}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M53318_IG20: ; bbWeight=2, gcVars=0001000003000440 {V10 V54 V58 V75 V77}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdx rsi r9]
mov r8d, dword ptr [rbp-0x3C]
mov r9, gword ptr [rbp-0x90]
@@ -466,85 +464,73 @@ G_M53318_IG20: ; bbWeight=2, gcVars=0001000001800440 {V10 V54 V58 V75 V77
mov r10d, dword ptr [rbp-0x38]
xor r11, r11
; gcrRegs +[r11]
- jmp SHORT G_M53318_IG26
+ jmp SHORT G_M53318_IG25
;; size=20 bbWeight=2 PerfScore 10.50
-G_M53318_IG21: ; bbWeight=1, gcVars=0001000000000040 {V10 V54}, gcrefRegs=100C {rdx rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r9 r11] +[rdx]
- ; GC ptr vars -{V10 V58 V75 V77}
- mov ecx, dword ptr [rbp-0x34]
- jmp SHORT G_M53318_IG19
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M53318_IG22: ; bbWeight=2, gcVars=0001000001800440 {V10 V54 V58 V75 V77}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rdx]
- ; GC ptr vars +{V10 V23 V58 V75 V77}
+G_M53318_IG21: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r9 r11]
mov r8d, dword ptr [rbp-0x3C]
mov r9, gword ptr [rbp-0x90]
; gcrRegs +[r9]
mov r10d, dword ptr [rbp-0x38]
test dil, 2
- jne SHORT G_M53318_IG23
- mov dword ptr [rbp-0x34], ecx
+ jne SHORT G_M53318_IG22
call <unknown method>
; gcrRegs -[r9] +[rax]
mov r11, rax
; gcrRegs +[r11]
- jmp SHORT G_M53318_IG25
- ;; size=34 bbWeight=2 PerfScore 17.00
-G_M53318_IG23: ; bbWeight=2, gcrefRegs=1208 {rbx r9 r12}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M53318_IG24
+ ;; size=31 bbWeight=2 PerfScore 15.00
+G_M53318_IG22: ; bbWeight=2, gcrefRegs=1208 {rbx r9 r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r11] +[r9]
- mov dword ptr [rbp-0x34], ecx
and rdi, -4
call <unknown method>
; gcrRegs -[r9] +[rax]
mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V86}
mov rdi, qword ptr [rax+0x10]
- ; GC ptr vars -{V23}
call <unknown method>
test rax, rax
- jne SHORT G_M53318_IG24
+ jne SHORT G_M53318_IG23
mov rdi, gword ptr [rbp-0x98]
; gcrRegs +[rdi]
; GC ptr vars -{V86}
call [<unknown method>]
; gcrRegs -[rdi]
- ;; size=46 bbWeight=2 PerfScore 23.00
-G_M53318_IG24: ; bbWeight=2, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
+ ;; size=43 bbWeight=2 PerfScore 21.00
+G_M53318_IG23: ; bbWeight=2, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
mov r11, rax
; gcrRegs +[r11]
;; size=3 bbWeight=2 PerfScore 0.50
-G_M53318_IG25: ; bbWeight=2, gcrefRegs=1808 {rbx r11 r12}, byrefRegs=0000 {}, byref
+G_M53318_IG24: ; bbWeight=2, gcrefRegs=1808 {rbx r11 r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov r9, r11
; gcrRegs +[r9]
mov r11, r9
- mov ecx, dword ptr [rbp-0x34]
mov r8d, dword ptr [rbp-0x3C]
mov r9, gword ptr [rbp-0x90]
mov r10d, dword ptr [rbp-0x38]
- ;; size=24 bbWeight=2 PerfScore 9.00
-G_M53318_IG26: ; bbWeight=4, gcrefRegs=1A08 {rbx r9 r11 r12}, byrefRegs=0000 {}, byref
+ ;; size=21 bbWeight=2 PerfScore 7.00
+G_M53318_IG25: ; bbWeight=4, gcrefRegs=1A08 {rbx r9 r11 r12}, byrefRegs=0000 {}, byref
test r11, r11
- je G_M53318_IG35
...
-13 (-2.02%) : 3203.dasm - System.Linq.Enumerable:g_EnumerableToArray|2960ushort:ushort
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 26 single block inlinees; 22 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
+; V00 arg0 [V00,T12] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[ushort]>
; V02 loc1 [V02 ] ( 16, 12 ) struct (264) [rbp-0x140] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[ushort]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <ushort[]>
@@ -17,37 +17,37 @@
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[ushort]>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <ushort[]>
-; V09 tmp5 [V09,T22] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
-; V10 tmp6 [V10,T19] ( 6, 3.50) ref -> rbx class-hnd "Inline stloc first use temp" <ushort[]>
+; V09 tmp5 [V09,T21] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V10 tmp6 [V10,T18] ( 6, 3.50) ref -> rbx class-hnd "Inline stloc first use temp" <ushort[]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <ushort[]>
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ushort[]>
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V16 tmp12 [V16,T16] ( 8, 4 ) int -> r13 "Inline stloc first use temp"
+; V16 tmp12 [V16,T15] ( 8, 4 ) int -> r13 "Inline stloc first use temp"
; V17 tmp13 [V17 ] ( 3, 1.50) struct (16) [rbp-0x150] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort[]]>
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort[]]>
-; V22 tmp18 [V22,T01] ( 5, 16.50) int -> [rbp-0x154] "Inline stloc first use temp"
+; V22 tmp18 [V22,T02] ( 5, 16.50) int -> [rbp-0x154] "Inline stloc first use temp"
; V23 tmp19 [V23,T07] ( 4, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <ushort[]>
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V27 tmp23 [V27,T17] ( 4, 4 ) int -> r12 "Inlining Arg"
-; V28 tmp24 [V28,T24] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V27 tmp23 [V27,T16] ( 4, 4 ) int -> r12 "Inlining Arg"
+; V28 tmp24 [V28,T23] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V34 tmp30 [V34,T27] ( 2, 2 ) long -> rax "Inlining Arg"
+; V34 tmp30 [V34,T26] ( 2, 2 ) long -> rax "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V38 tmp34 [V38,T21] ( 3, 3 ) int -> r14 "Inlining Arg"
-; V39 tmp35 [V39,T25] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V38 tmp34 [V38,T20] ( 3, 3 ) int -> r14 "Inlining Arg"
+; V39 tmp35 [V39,T24] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp37 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp38 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort[]]>
@@ -59,7 +59,7 @@
;* V48 tmp44 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V50 tmp46 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V51 tmp47 [V51,T04] ( 2, 16 ) long -> r8 "Inlining Arg"
+; V51 tmp47 [V51,T04] ( 2, 16 ) long -> rdx "Inlining Arg"
;* V52 tmp48 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V54 tmp50 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -67,20 +67,20 @@
; V56 tmp52 [V56,T03] ( 2, 16 ) byref -> r15 "Inlining Arg"
;* V57 tmp53 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V58 tmp54 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V59 tmp55 [V59,T18] ( 4, 4 ) int -> r13 "Inlining Arg"
+; V59 tmp55 [V59,T17] ( 4, 4 ) int -> r13 "Inlining Arg"
;* V60 tmp56 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V61 tmp57 [V61,T26] ( 2, 2 ) byref -> r12 single-def "Inlining Arg"
-; V62 tmp58 [V62,T23] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V61 tmp57 [V61,T25] ( 2, 2 ) byref -> r12 single-def "Inlining Arg"
+; V62 tmp58 [V62,T22] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
;* V63 tmp59 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T20] ( 3, 3 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V66 tmp62 [V66,T40] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T19] ( 3, 3 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V66 tmp62 [V66,T39] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V69 tmp65 [V69 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp66 [V70 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V71 tmp67 [V71,T28] ( 3, 1.50) byref -> r15 "field V15._reference (fldOffset=0x0)" P-INDEP
-; V72 tmp68 [V72,T29] ( 3, 1.50) int -> r14 "field V15._length (fldOffset=0x8)" P-INDEP
+; V71 tmp67 [V71,T27] ( 3, 1.50) byref -> r15 "field V15._reference (fldOffset=0x0)" P-INDEP
+; V72 tmp68 [V72,T28] ( 3, 1.50) int -> r14 "field V15._length (fldOffset=0x8)" P-INDEP
; V73 tmp69 [V73 ] ( 2, 1 ) byref -> [rbp-0x150] do-not-enreg[X] addr-exposed "field V17._reference (fldOffset=0x0)" P-DEP
; V74 tmp70 [V74 ] ( 2, 1 ) int -> [rbp-0x148] do-not-enreg[X] addr-exposed "field V17._length (fldOffset=0x8)" P-DEP
; V75 tmp71 [V75,T05] ( 8, 14.50) byref -> r15 "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -89,35 +89,34 @@
;* V78 tmp74 [V78 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V79 tmp75 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V81 tmp77 [V81,T15] ( 2, 4.50) byref -> r12 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V82 tmp78 [V82,T14] ( 3, 5 ) int -> r13 "field V21._length (fldOffset=0x8)" P-INDEP
+; V81 tmp77 [V81,T14] ( 2, 4.50) byref -> r12 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V82 tmp78 [V82,T13] ( 3, 5 ) int -> r13 "field V21._length (fldOffset=0x8)" P-INDEP
;* V83 tmp79 [V83 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp80 [V84 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V85 tmp81 [V85,T31] ( 2, 1 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp82 [V86,T36] ( 2, 1 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
+; V85 tmp81 [V85,T30] ( 2, 1 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+; V86 tmp82 [V86,T35] ( 2, 1 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
;* V87 tmp83 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V89 tmp85 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp86 [V90 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-; V91 tmp87 [V91,T32] ( 2, 1 ) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-; V92 tmp88 [V92,T37] ( 2, 1 ) int -> r14 "field V37._length (fldOffset=0x8)" P-INDEP
-; V93 tmp89 [V93,T33] ( 2, 1 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp87 [V91,T31] ( 2, 1 ) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+; V92 tmp88 [V92,T36] ( 2, 1 ) int -> r14 "field V37._length (fldOffset=0x8)" P-INDEP
+; V93 tmp89 [V93,T32] ( 2, 1 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp90 [V94 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V95 tmp91 [V95,T34] ( 2, 1 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-; V96 tmp92 [V96,T38] ( 2, 1 ) int -> r13 "field V43._length (fldOffset=0x8)" P-INDEP
-; V97 tmp93 [V97,T10] ( 3, 8 ) byref -> rsi "field V47._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp94 [V98,T02] ( 5, 16 ) int -> [rbp-0x158] "field V47._length (fldOffset=0x8)" P-INDEP
+; V95 tmp91 [V95,T33] ( 2, 1 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp92 [V96,T37] ( 2, 1 ) int -> r13 "field V43._length (fldOffset=0x8)" P-INDEP
+; V97 tmp93 [V97,T09] ( 3, 8 ) byref -> rsi "field V47._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp94 [V98,T01] ( 6, 20 ) int -> [rbp-0x158] "field V47._length (fldOffset=0x8)" P-INDEP
;* V99 tmp95 [V99 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp96 [V100 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
-; V101 tmp97 [V101,T11] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP
-; V102 tmp98 [V102,T12] ( 2, 8 ) int -> r14 "field V54._length (fldOffset=0x8)" P-INDEP
-; V103 tmp99 [V103,T35] ( 2, 1 ) byref -> r12 single-def "field V60._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp100 [V104,T39] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0x8)" P-INDEP
-; V105 cse0 [V105,T30] ( 3, 1.50) long -> [rbp-0x160] spill-single-def "CSE - conservative"
-; V106 cse1 [V106,T08] ( 3, 12 ) long -> [rbp-0x168] spill-single-def "CSE - moderate"
-; V107 cse2 [V107,T09] ( 9, 9 ) ref -> rsi multi-def "CSE - moderate"
+; V101 tmp97 [V101,T10] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP
+; V102 tmp98 [V102,T11] ( 2, 8 ) int -> r14 "field V54._length (fldOffset=0x8)" P-INDEP
+; V103 tmp99 [V103,T34] ( 2, 1 ) byref -> r12 single-def "field V60._reference (fldOffset=0x0)" P-INDEP
+; V104 tmp100 [V104,T38] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0x8)" P-INDEP
+; V105 cse0 [V105,T29] ( 3, 1.50) long -> [rbp-0x160] spill-single-def "CSE - conservative"
+; V106 cse1 [V106,T08] ( 9, 9 ) ref -> rsi multi-def "CSE - moderate"
;
-; Lcl frame size = 328
+; Lcl frame size = 312
G_M32039_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -126,9 +125,9 @@ G_M32039_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 328
+ sub rsp, 312
vzeroupper
- lea rbp, [rsp+0x170]
+ lea rbp, [rsp+0x160]
vxorps xmm8, xmm8, xmm8
vmovdqa xmmword ptr [rbp-0x150], xmm8
vmovdqa xmmword ptr [rbp-0x140], xmm8
@@ -258,19 +257,18 @@ G_M32039_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=9040 {rsi r1
cmp ecx, r14d
ja G_M32039_IG22
mov dword ptr [rbp-0x158], ecx
- mov r8d, ecx
- add r8, r8
- mov qword ptr [rbp-0x168], r8
- mov rdx, r8
+ mov edx, ecx
+ add rdx, rdx
mov rdi, r15
; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rsi rdi]
- mov rdi, qword ptr [rbp-0x168]
- add r15, rdi
- sub r14d, dword ptr [rbp-0x158]
+ mov edi, dword ptr [rbp-0x158]
+ mov esi, edi
+ lea r15, bword ptr [r15+2*rsi]
+ sub r14d, edi
jns SHORT G_M32039_IG13
- ;; size=59 bbWeight=4 PerfScore 46.00
+ ;; size=46 bbWeight=4 PerfScore 36.00
G_M32039_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -329,7 +327,7 @@ G_M32039_IG18: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M32039_IG19: ; bbWeight=1, epilog, nogc, extend
- add rsp, 328
+ add rsp, 312
pop rbx
pop r12
pop r13
@@ -351,7 +349,7 @@ G_M32039_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 644, prolog size 87, PerfScore 162.17, instruction count 147, allocated bytes for code 644 (MethodHash=6f8582d8) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[ushort](System.Collections.Generic.IEnumerable`1[ushort]):ushort[] (FullOpts)
+Total bytes of code 631, prolog size 87, PerfScore 152.17, instruction count 146, allocated bytes for code 631 (MethodHash=6f8582d8) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[ushort](System.Collections.Generic.IEnumerable`1[ushort]):ushort[] (FullOpts)
; ============================================================
Unwind Info:
@@ -365,7 +363,7 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x11 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 41 * 8 = 328 = 0x00148
+ Size: 39 * 8 = 312 = 0x00138
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+18 (+0.64%) : 20723.dasm - Microsoft.CodeAnalysis.CommonReferenceManager2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager
2+BoundInputAssembly[System.Canon,System.Canon][],System.Canon[],System.Collections.Immutable.ImmutableArray`1[System.Canon],int):this (FullOpts)
@@ -17,7 +17,7 @@
; V06 loc1 [V06,T14] ( 16, 610 ) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc2 [V07,T62] ( 8, 28 ) int -> [rbp-0x34] spill-single-def
; V08 loc3 [V08,T58] ( 9, 33 ) int -> [rbp-0x38]
-; V09 loc4 [V09,T63] ( 6, 28 ) ref -> [rbp-0xA0] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V09 loc4 [V09,T63] ( 6, 44 ) ref -> [rbp-0xA0] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V10 loc5 [V10,T68] ( 2, 16 ) ref -> [rbp-0xA8] class-hnd spill-single-def <System.__Canon>
; V11 loc6 [V11,T35] ( 4, 112 ) ubyte -> [rbp-0x3C]
;* V12 loc7 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
@@ -67,7 +67,7 @@
; V56 tmp34 [V56,T15] ( 8, 512 ) int -> r9 "Inline stloc first use temp"
;* V57 tmp35 [V57 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
; V58 tmp36 [V58,T45] ( 3, 48 ) byref -> rdi "Inlining Arg"
-; V59 tmp37 [V59,T60] ( 4, 32 ) int -> rsi "Inline stloc first use temp"
+; V59 tmp37 [V59,T60] ( 4, 32 ) int -> rcx "Inline stloc first use temp"
; V60 tmp38 [V60,T16] ( 12, 430 ) ref -> rbx single-def "field V03.array (fldOffset=0x0)" P-INDEP
; V61 tmp39 [V61,T27] ( 6, 192 ) ref -> [rbp-0xC8] "field V12.AssemblySymbol (fldOffset=0x0)" P-INDEP
; V62 tmp40 [V62,T21] ( 8, 256 ) int -> [rbp-0x5C] "field V12.DefinitionIndex (fldOffset=0x8)" P-INDEP
@@ -112,10 +112,10 @@
;* V101 cse2 [V101,T56] ( 0, 0 ) long -> zero-ref hoist multi-def "CSE - moderate"
;* V102 cse3 [V102,T79] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V103 cse4 [V103,T80] ( 3, 6.40) int -> r8 "CSE - conservative"
-; V104 cse5 [V104,T96] ( 3, 0.40) ref -> rsi "CSE - conservative"
+; V104 cse5 [V104,T96] ( 3, 0.40) ref -> rdx "CSE - conservative"
; V105 cse6 [V105,T13] ( 3, 633.60) int -> r8 "CSE - moderate"
; V106 cse7 [V106,T22] ( 6, 256 ) long -> [rbp-0x70] "CSE - moderate"
-; V107 cse8 [V107,T57] ( 3, 39.60) ref -> rsi "CSE - conservative"
+; V107 cse8 [V107,T57] ( 3, 39.60) ref -> rdx "CSE - conservative"
; V108 cse9 [V108,T18] ( 3, 380.16) int -> rsi "CSE - moderate"
; V109 cse10 [V109,T17] ( 3, 380.16) ref -> [rbp-0x108] spill-single-def "CSE - moderate"
; V110 cse11 [V110,T37] ( 3, 96 ) long -> [rbp-0x78] "CSE - moderate"
@@ -307,7 +307,7 @@ G_M32652_IG13: ; bbWeight=0.40, gcVars=00000000000800000000000004004002 {
;; size=24 bbWeight=0.40 PerfScore 1.80
G_M32652_IG14: ; bbWeight=2, gcVars=00000000000800008000000004004002 {V00 V05 V06 V09 V99}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V83} +{V09 V63}
- jmp G_M32652_IG24
+ jmp G_M32652_IG64
;; size=5 bbWeight=2 PerfScore 4.00
G_M32652_IG15: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [r12+0x38]
@@ -361,7 +361,7 @@ G_M32652_IG18: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov r8, gword ptr [rdi+0x08]
; gcrRegs +[r8]
cmp esi, dword ptr [r8+0x08]
- jne G_M32652_IG26
+ jne G_M32652_IG31
inc esi
; GC ptr vars -{V10}
call [System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]:Grow(int):this]
@@ -381,7 +381,7 @@ G_M32652_IG19: ; bbWeight=8, gcrefRegs=C08C {rdx rbx rdi r14 r15}, byrefR
; gcrRegs +[rsi]
mov r9d, dword ptr [rdi+0x14]
cmp r9d, dword ptr [rsi+0x08]
- jae G_M32652_IG28
+ jae G_M32652_IG32
shl r9, 4
lea r9, bword ptr [rsi+r9+0x10]
; byrRegs +[r9]
@@ -431,46 +431,79 @@ G_M32652_IG22: ; bbWeight=64, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs
cmp dword ptr [rbp-0x3C], 0
je SHORT G_M32652_IG23
cmp dword ptr [rdi+0x18], 0
- jg SHORT G_M32652_IG29
+ jg SHORT G_M32652_IG34
;; size=12 bbWeight=64 PerfScore 448.00
G_M32652_IG23: ; bbWeight=8, gcVars=00000000000800008000000004004002 {V00 V05 V06 V09 V99}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V119}
cmp dword ptr [rbp-0x3C], 0
- jne G_M32652_IG59
+ je G_M32652_IG64
;; size=10 bbWeight=8 PerfScore 24.00
-G_M32652_IG24: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M32652_IG24: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0xA0]
- ; gcrRegs +[rdi]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- test eax, eax
- jne G_M32652_IG15
- ;; size=28 bbWeight=16 PerfScore 88.00
-G_M32652_IG25: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ mov ecx, dword ptr [rbp-0x34]
+ test ecx, ecx
+ jle SHORT G_M32652_IG30
+ cmp dword ptr [r15+0x08], ecx
+ jl G_M32652_IG67
+ mov edx, dword ptr [rbp-0x80]
+ cmp edx, ecx
+ jl SHORT G_M32652_IG29
+ ;; size=26 bbWeight=2 PerfScore 17.50
+G_M32652_IG25: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov edx, eax
+ mov rdx, gword ptr [r15+8*rdx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M32652_IG27
+ ;; size=12 bbWeight=15.84 PerfScore 55.44
+G_M32652_IG26: ; bbWeight=7.92, gcrefRegs=C00C {rdx rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp-0x4C], eax
+ mov r8d, eax
+ shl r8, 4
+ lea rdi, bword ptr [r14+r8+0x10]
+ ; byrRegs +[rdi]
+ mov rsi, rdx
+ ; gcrRegs +[rsi]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx rsi]
+ ; byrRegs -[rdi]
+ mov eax, dword ptr [rbp-0x4C]
+ ;; size=26 bbWeight=7.92 PerfScore 39.60
+G_M32652_IG27: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ inc eax
+ cmp eax, dword ptr [rbp-0x34]
+ jl SHORT G_M32652_IG25
+ ;; size=7 bbWeight=15.84 PerfScore 51.48
+G_M32652_IG28: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
jmp G_M32652_IG71
;; size=5 bbWeight=2 PerfScore 4.00
-G_M32652_IG26: ; bbWeight=4, gcVars=00000000000800208000000004004002 {V00 V05 V06 V09 V63 V99}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M32652_IG29: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov ecx, dword ptr [rbp-0x34]
+ jmp G_M32652_IG67
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M32652_IG30: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M32652_IG71
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M32652_IG31: ; bbWeight=4, gcVars=00000000000800208000000004004002 {V00 V05 V06 V09 V63 V99}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
; GC ptr vars +{V63}
mov rdx, gword ptr [rbp-0xD0]
; gcrRegs +[rdx]
jmp G_M32652_IG19
;; size=12 bbWeight=4 PerfScore 12.00
-G_M32652_IG27: ; bbWeight=0, gcVars=00000000000000008000000004004002 {V00 V05 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32652_IG32: ; bbWeight=0, gcVars=00000000000000008000000004004002 {V00 V05 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdx rbx rdi r14-r15]
; GC ptr vars -{V63 V99}
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M32652_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M32652_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M32652_IG29: ; bbWeight=32, gcVars=00000000000800008000000204004002 {V00 V05 V06 V09 V99 V119}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32652_IG34: ; bbWeight=32, gcVars=00000000000800008000000204004002 {V00 V05 V06 V09 V99 V119}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rdi r14-r15]
; GC ptr vars +{V83 V99 V119}
call [System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]:Dequeue():Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]:this]
@@ -478,16 +511,16 @@ G_M32652_IG29: ; bbWeight=32, gcVars=00000000000800008000000204004002 {V0
; gcr arg pop 0
mov ecx, edx
cmp ecx, dword ptr [rbp-0x80]
- jae SHORT G_M32652_IG28
+ jae SHORT G_M32652_IG32
mov r8d, ecx
shl r8, 4
mov qword ptr [rbp-0x78], r8
mov rdi, gword ptr [r14+r8+0x10]
; gcrRegs +[rdi]
test rdi, rdi
- jne SHORT G_M32652_IG30
+ jne SHORT G_M32652_IG35
cmp ecx, dword ptr [r15+0x08]
- jae SHORT G_M32652_IG28
+ jae SHORT G_M32652_IG32
mov dword ptr [rbp-0x5C], ecx
mov edi, ecx
; gcrRegs -[rdi]
@@ -495,15 +528,15 @@ G_M32652_IG29: ; bbWeight=32, gcVars=00000000000800008000000204004002 {V0
; gcrRegs +[rdi]
mov ecx, dword ptr [rbp-0x5C]
;; size=53 bbWeight=32 PerfScore 624.00
-G_M32652_IG30: ; bbWeight=32, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG35: ; bbWeight=32, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je SHORT G_M32652_IG31
+ je SHORT G_M32652_IG36
cmp rdi, rax
mov rdi, gword ptr [rbp-0x90]
je G_M32652_IG22
- jmp G_M32652_IG24
+ jmp G_M32652_IG64
;; size=26 bbWeight=32 PerfScore 176.00
-G_M32652_IG31: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M32652_IG36: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov dword ptr [rbp-0x5C], ecx
mov rdi, gword ptr [rbp-0x88]
@@ -521,7 +554,7 @@ G_M32652_IG31: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs
mov dword ptr [rbp-0x12C], eax
mov ecx, dword ptr [rbp-0x5C]
cmp ecx, dword ptr [rbp-0x7C]
- jae G_M32652_IG28
+ jae G_M32652_IG32
mov dword ptr [rbp-0x5C], ecx
mov edi, ecx
mov rdi, gword ptr [rbx+8*rdi+0x10]
@@ -532,7 +565,7 @@ G_M32652_IG31: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs
; gcrRegs -[rdi]
; gcr arg pop 0
cmp dword ptr [rbp-0x12C], eax
- jne G_M32652_IG24
+ jne G_M32652_IG64
mov rcx, gword ptr [rbp-0xC8]
; gcrRegs +[rcx]
mov esi, dword ptr [rbp-0x5C]
@@ -572,64 +605,64 @@ G_M32652_IG31: ; bbWeight=32, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs
mov dword ptr [rbp-0x40], eax
xor ecx, ecx
test eax, eax
- jle G_M32652_IG54
+ jle G_M32652_IG59
mov rdx, gword ptr [rbp-0xB0]
; gcrRegs +[rdx]
test rdx, rdx
- je G_M32652_IG44
+ je G_M32652_IG49
cmp dword ptr [rdx+0x08], eax
;; size=215 bbWeight=32 PerfScore 1952.00
-G_M32652_IG32: ; bbWeight=32, isz, extend
- jl SHORT G_M32652_IG36
+G_M32652_IG37: ; bbWeight=32, isz, extend
+ jl SHORT G_M32652_IG41
;; size=2 bbWeight=32 PerfScore 32.00
-G_M32652_IG33: ; bbWeight=253.44, gcrefRegs=C04C {rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32652_IG38: ; bbWeight=253.44, gcrefRegs=C04C {rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, ecx
shl rdi, 4
mov r8d, dword ptr [rdx+rdi+0x18]
test r8d, r8d
- jge SHORT G_M32652_IG37
+ jge SHORT G_M32652_IG42
;; size=16 bbWeight=253.44 PerfScore 1013.76
-G_M32652_IG34: ; bbWeight=126.72, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
+G_M32652_IG39: ; bbWeight=126.72, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
cmp ecx, dword ptr [rsi+0x10]
- jae G_M32652_IG27
+ jae G_M32652_IG33
mov r9, gword ptr [rsi+0x08]
...
+14 (+3.47%) : 25517.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -12,7 +12,7 @@
; V01 loc0 [V01,T13] ( 5, 28 ) long -> rdi
; V02 loc1 [V02,T14] ( 5, 24 ) int -> r14
; V03 loc2 [V03,T12] ( 5, 28.50) ref -> r13 class-hnd exact <System.String>
-; V04 loc3 [V04,T04] ( 8, 50 ) int -> r12
+; V04 loc3 [V04,T05] ( 8, 50 ) int -> r12
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax
; V06 loc5 [V06,T08] ( 3, 40 ) ref -> rcx class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> [rbp-0x2C]
@@ -33,9 +33,9 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T18] ( 4, 5 ) ref -> rax "Single return block return value"
; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V25 cse0 [V25,T05] ( 6, 49 ) int -> r15 "CSE - aggressive"
+; V25 cse0 [V25,T03] ( 8, 57 ) int -> r15 "CSE - aggressive"
; V26 cse1 [V26,T07] ( 5, 40 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V27 cse2 [V27,T03] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
+; V27 cse2 [V27,T04] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -58,10 +58,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp r15d, 1
jle G_M46295_IG16
;; size=23 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor edi, edi
xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test r15d, r15d
+ jle SHORT G_M46295_IG07
+ ;; size=9 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ecx, eax
mov rcx, gword ptr [rbx+8*rcx+0x10]
@@ -94,7 +96,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r12d, r12d
xor eax, eax
; gcrRegs -[rax]
- ;; size=41 bbWeight=4 PerfScore 19.00
+ test r15d, r15d
+ jle G_M46295_IG15
+ ;; size=50 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x2C], eax
mov edi, eax
@@ -249,7 +253,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 403, prolog size 22, PerfScore 585.25, instruction count 115, allocated bytes for code 403 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 417, prolog size 22, PerfScore 595.25, instruction count 119, allocated bytes for code 417 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
+48 (+9.62%) : 774.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span
1[int],int,System.Comparison`1[int]) (FullOpts)
@@ -10,10 +10,10 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
; V01 arg1 [V01,T03] ( 7, 19 ) int -> r15
-; V02 arg2 [V02,T04] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> r12
+; V02 arg2 [V02,T05] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]>
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> r12
; V04 loc1 [V04,T09] ( 3, 12 ) int -> [rbp-0x2C] spill-single-def
-; V05 loc2 [V05,T05] ( 4, 16 ) int -> rdi
+; V05 loc2 [V05,T06] ( 4, 16 ) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -44,13 +44,13 @@
;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T00] ( 4, 32 ) int -> r12 "Inlining Arg"
+; V36 tmp30 [V36,T01] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V38 tmp32 [V38,T06] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V38 tmp32 [V38,T07] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V41 tmp35 [V41,T02] ( 29, 22 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp36 [V42,T07] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T08] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
@@ -79,7 +79,7 @@
; V68 tmp62 [V68,T15] ( 2, 2 ) int -> rsi "argument with side effect"
; V69 tmp63 [V69,T16] ( 2, 2 ) int -> rsi "argument with side effect"
; V70 tmp64 [V70,T17] ( 2, 2 ) int -> rsi "argument with side effect"
-; V71 cse0 [V71,T08] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -138,16 +138,28 @@ G_M15629_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
G_M15629_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov r12d, r13d
cmp r13d, 1
- jle G_M15629_IG20
+ jle G_M15629_IG23
;; size=13 bbWeight=1 PerfScore 1.50
G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
cmp r12d, 16
- jle G_M15629_IG13
+ jle G_M15629_IG15
test r15d, r15d
- je G_M15629_IG19
+ je G_M15629_IG21
dec r15d
cmp r12d, r13d
- ja G_M15629_IG23
+ ja G_M15629_IG26
+ test r12d, r12d
+ jge SHORT G_M15629_IG11
+ ;; size=36 bbWeight=4 PerfScore 21.00
+G_M15629_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d
mov rdi, rbx
; byrRegs +[rdi]
@@ -164,15 +176,15 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx},
add rsi, rcx
mov ecx, r13d
cmp rsi, rcx
- ja G_M15629_IG23
+ ja G_M15629_IG26
lea rcx, bword ptr [rbx+4*rdi]
; byrRegs +[rcx]
mov bword ptr [rbp-0x38], rcx
; GC ptr vars +{V38}
test r12d, r12d
- jge SHORT G_M15629_IG11
- ;; size=88 bbWeight=4 PerfScore 58.00
-G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M15629_IG13
+ ;; size=57 bbWeight=4 PerfScore 42.00
+G_M15629_IG12: ; bbWeight=2, gcVars=0000000000000080 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -181,7 +193,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=400
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r12d
@@ -196,16 +208,16 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx},
cmp r12d, 1
jg G_M15629_IG09
;; size=33 bbWeight=4 PerfScore 28.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
; byrRegs -[rbx]
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
; byrRegs +[rbx]
cmp r12d, 2
- jne SHORT G_M15629_IG14
+ jne SHORT G_M15629_IG16
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov rdi, gword ptr [r14+0x08]
@@ -213,17 +225,17 @@ G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi r14]
test eax, eax
- jle G_M15629_IG20
+ jle G_M15629_IG23
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x04], esi
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=42 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
cmp r12d, 3
- jne SHORT G_M15629_IG17
+ jne SHORT G_M15629_IG19
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov rdi, gword ptr [r14+0x08]
@@ -231,29 +243,29 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M15629_IG15
+ jle SHORT G_M15629_IG17
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x04], esi
;; size=33 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx]
cmp r13d, 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
mov edx, dword ptr [rbx+0x08]
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
call [r14+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x08]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x08], esi
;; size=37 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx+0x04]
mov edx, dword ptr [rbx+0x08]
mov rdi, gword ptr [r14+0x08]
@@ -261,19 +273,19 @@ G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi r14]
test eax, eax
- jle SHORT G_M15629_IG20
+ jle SHORT G_M15629_IG23
mov edi, dword ptr [rbx+0x04]
mov esi, dword ptr [rbx+0x08]
mov dword ptr [rbx+0x04], esi
mov dword ptr [rbx+0x08], edi
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=32 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
test r12d, r12d
- jge SHORT G_M15629_IG18
+ jge SHORT G_M15629_IG20
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -281,7 +293,7 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d
mov rdi, rbx
; byrRegs +[rdi]
@@ -290,13 +302,23 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])]
; gcrRegs -[rdx r14]
; byrRegs -[rbx rdi]
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
; byrRegs +[rbx]
cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
+ test r12d, r12d
+ jge SHORT G_M15629_IG22
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=29 bbWeight=0.50 PerfScore 3.00
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, rbx
; byrRegs +[rdi]
mov esi, r12d
@@ -305,11 +327,11 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])]
; gcrRegs -[rdx r14]
; byrRegs -[rbx rdi]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M15629_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 1.88
+G_M15629_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
...
benchmarks.run_pgo.linux.x64.checked.mch
-22 (-4.63%) : 25268.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary
2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
@@ -23,7 +23,7 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
; V12 tmp6 [V12,T05] ( 2,399.96) long -> rsi "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> r12 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> r12 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> rax class-hnd "Inlining Arg" <System.__Canon>
@@ -39,9 +39,9 @@
; V26 tmp20 [V26,T03] ( 2,400 ) ref -> rsi class-hnd "Inlining Arg" <System.__Canon>
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> [rbp-0x38] "V04.[000..008)"
-; V30 tmp24 [V30,T14] ( 4,101.01) int -> [rbp-0x2C] "V04.[008..012)"
-; V31 tmp25 [V31,T07] ( 6,301.01) int -> [rbp-0x30] "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> [rbp-0x38] "V04.[000..008)"
+; V30 tmp24 [V30,T14] ( 3,101.01) int -> [rbp-0x2C] "V04.[008..012)"
+; V31 tmp25 [V31,T06] ( 6,301.01) int -> [rbp-0x30] "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> r10 "V04.[024..032)"
; V33 tmp27 [V33,T11] ( 3,199.99) long -> rdx "V04.[032..040)"
;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)"
@@ -86,15 +86,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
;; size=23 bbWeight=1 PerfScore 3.25
G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test r12d, r12d
- je SHORT G_M19783_IG09
+ je SHORT G_M19783_IG06
;; size=5 bbWeight=0.01 PerfScore 0.01
G_M19783_IG04: ; bbWeight=7.99, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19783_IG09
+ jmp SHORT G_M19783_IG06
;; size=2 bbWeight=7.99 PerfScore 15.99
G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
cmp r13d, edi
- jae G_M19783_IG16
+ jae G_M19783_IG14
mov edi, r13d
mov rdi, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -115,14 +115,18 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
;; size=55 bbWeight=0.01 PerfScore 0.20
G_M19783_IG06: ; bbWeight=100, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; GC ptr vars -{V29}
+ mov r12d, 1
+ mov dword ptr [rbp-0x2C], r8d
+ cmp r8d, dword ptr [rax+0x44]
+ jne G_M19783_IG19
mov r9d, dword ptr [rax+0x38]
- jmp SHORT G_M19783_IG12
- ;; size=6 bbWeight=100 PerfScore 400.00
-G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=C409 {rax rbx r10 r14 r15}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M19783_IG10
+ ;; size=26 bbWeight=100 PerfScore 925.00
+G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=C409 {rax rbx r10 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r10]
+ mov dword ptr [rbp-0x30], edi
mov gword ptr [rbp-0x38], rax
; GC ptr vars +{V29}
- mov dword ptr [rbp-0x30], edi
shl rdx, 2
movsxd rsi, r13d
or rsi, rdx
@@ -136,23 +140,15 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=C409 {rax rbx r10 r14 r15}, by
; gcrRegs -[rax rdx rdi r10]
; gcr arg pop 0
test eax, eax
- je G_M19783_IG17
- ;; size=45 bbWeight=99.99 PerfScore 1099.89
-G_M19783_IG08: ; bbWeight=50.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ je SHORT G_M19783_IG15
mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
mov edi, dword ptr [rbp-0x30]
mov r8d, dword ptr [rbp-0x2C]
- ;; size=11 bbWeight=50.00 PerfScore 149.99
-G_M19783_IG09: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V29}
- mov r12d, 1
- mov dword ptr [rbp-0x2C], r8d
- cmp r8d, dword ptr [rax+0x44]
- jne G_M19783_IG22
jmp SHORT G_M19783_IG06
- ;; size=22 bbWeight=100 PerfScore 725.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=54 bbWeight=99.99 PerfScore 1599.84
+G_M19783_IG08: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V29}
mov gword ptr [rbp-0x38], rax
; GC ptr vars +{V29}
mov rsi, gword ptr [rax+0x10]
@@ -160,28 +156,28 @@ G_M19783_IG10: ; bbWeight=100, gcrefRegs=C009 {rax rbx r14 r15}, byrefReg
lea edx, [rdi+0x01]
mov dword ptr [rbp-0x30], edx
cmp edi, dword ptr [rsi+0x08]
- jae SHORT G_M19783_IG16
+ jae SHORT G_M19783_IG14
mov edi, edi
lea rdi, [rdi+2*rdi]
lea rdi, bword ptr [rsi+8*rdi+0x10]
; byrRegs +[rdi]
cmp dword ptr [rdi+0x14], -1
- jge SHORT G_M19783_IG13
+ jge SHORT G_M19783_IG11
;; size=36 bbWeight=100 PerfScore 1425.00
-G_M19783_IG11: ; bbWeight=50, gcVars=0000000000000040 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG09: ; bbWeight=50, gcVars=0000000000000080 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
mov edi, dword ptr [rbp-0x30]
;; size=7 bbWeight=50 PerfScore 100.00
-G_M19783_IG12: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19783_IG10: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V29}
cmp edi, r9d
- jae SHORT G_M19783_IG19
- jmp SHORT G_M19783_IG10
+ jae SHORT G_M19783_IG16
+ jmp SHORT G_M19783_IG08
;; size=7 bbWeight=100 PerfScore 325.00
-G_M19783_IG13: ; bbWeight=100, gcVars=0000000000000040 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080 {rdi}, gcvars, byref
+G_M19783_IG11: ; bbWeight=100, gcVars=0000000000000080 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs -[rax]
; byrRegs +[rdi]
; GC ptr vars +{V29}
@@ -199,26 +195,26 @@ G_M19783_IG13: ; bbWeight=100, gcVars=0000000000000040 {V29}, gcrefRegs=C
; gcrRegs +[r10]
mov r11d, 1
;; size=26 bbWeight=100 PerfScore 675.00
-G_M19783_IG14: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C409 {rax rbx r10 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG12: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=C409 {rax rbx r10 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi]
; GC ptr vars -{V29}
test r11d, r11d
jne G_M19783_IG07
;; size=9 bbWeight=100 PerfScore 125.00
-G_M19783_IG15: ; bbWeight=0.01, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r10]
inc r13d
mov edi, dword ptr [rbx+0x08]
cmp edi, r13d
- jle SHORT G_M19783_IG20
+ jle SHORT G_M19783_IG17
jmp G_M19783_IG05
;; size=16 bbWeight=0.01 PerfScore 0.05
-G_M19783_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r14-r15]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcVars=0000000000000040 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19783_IG15: ; bbWeight=0, gcVars=0000000000000080 {V29}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx r14-r15]
; GC ptr vars +{V29}
mov rdi, 0xD1FFAB1E
@@ -228,34 +224,24 @@ G_M19783_IG17: ; bbWeight=0, gcVars=0000000000000040 {V29}, gcrefRegs=C00
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- mov r12d, 1
- mov esi, dword ptr [rbp-0x2C]
- mov rdi, gword ptr [rbp-0x38]
- ; gcrRegs +[rdi]
- cmp esi, dword ptr [rdi+0x44]
- mov dword ptr [rbp-0x2C], esi
- mov rax, rdi
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- je SHORT G_M19783_IG18
- jmp SHORT G_M19783_IG22
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdi]
- ; GC ptr vars -{V29}
mov edi, dword ptr [rbp-0x30]
+ mov r8d, dword ptr [rbp-0x2C]
jmp G_M19783_IG06
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- lea edi, [r9+0x01]
- mov esi, edi
+ ;; size=42 bbWeight=0 PerfScore 0.00
+G_M19783_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V29}
+ lea edx, [r9+0x01]
+ mov esi, edx
xor r10, r10
; gcrRegs +[r10]
xor edx, edx
xor r11d, r11d
mov edi, esi
- jmp SHORT G_M19783_IG14
+ jmp SHORT G_M19783_IG12
;; size=18 bbWeight=0 PerfScore 0.00
-G_M19783_IG20: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+G_M19783_IG17: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r10]
mov rax, gword ptr [r15+0x08]
; gcrRegs +[rax]
@@ -268,7 +254,7 @@ G_M19783_IG20: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=15 bbWeight=0 PerfScore 0.00
-G_M19783_IG21: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
add rsp, 296
pop rbx
pop r12
@@ -278,14 +264,14 @@ G_M19783_IG21: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=0 PerfScore 0.00
-G_M19783_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 475, prolog size 82, PerfScore 5061.13, instruction count 123, allocated bytes for code 475 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 453, prolog size 82, PerfScore 5211.09, instruction count 117, allocated bytes for code 453 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================
Unwind Info:
-48 (-2.94%) : 19373.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)
@@ -23,8 +23,8 @@
;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]>
;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ptr
; V14 loc12 [V14,T04] ( 15, 43 ) int -> [rbp-0x94] ptr
-; V15 loc13 [V15,T11] ( 8, 18 ) int -> [rbp-0x98] spill-single-def ptr
-; V16 loc14 [V16,T18] ( 4, 12 ) int -> [rbp-0x9C] spill-single-def ptr
+; V15 loc13 [V15,T11] ( 7, 18 ) int -> [rbp-0x98] spill-single-def ptr
+; V16 loc14 [V16,T17] ( 4, 12 ) int -> [rbp-0x9C] spill-single-def ptr
; V17 loc15 [V17,T03] ( 6, 60 ) long -> [rbp-0xA8] ptr
; V18 loc16 [V18,T10] ( 3, 22 ) int -> r14
; V19 loc17 [V19,T02] ( 13,114 ) long -> [rbp-0xB0] ptr
@@ -38,7 +38,7 @@
; V27 tmp5 [V27,T31] ( 3, 6 ) int -> rax "Span.get_Item index"
; V28 tmp6 [V28,T63] ( 2, 2 ) int -> rax "Span.get_Item index"
; V29 tmp7 [V29,T57] ( 5, 3 ) int -> rax
-; V30 tmp8 [V30,T24] ( 3, 8 ) int -> rdi
+; V30 tmp8 [V30,T23] ( 3, 8 ) int -> rdi
; V31 tmp9 [V31,T16] ( 5, 12 ) int -> rdx
;* V32 tmp10 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[uint]>
;* V33 tmp11 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
@@ -64,8 +64,8 @@
;* V53 tmp31 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp33 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V56 tmp34 [V56,T19] ( 3, 12 ) int -> [rbp-0xBC] spill-single-def ptr "Inlining Arg"
-; V57 tmp35 [V57,T25] ( 2, 8 ) byref -> r14 "Inlining Arg"
+; V56 tmp34 [V56,T18] ( 3, 12 ) int -> [rbp-0xBC] spill-single-def ptr "Inlining Arg"
+; V57 tmp35 [V57,T24] ( 2, 8 ) byref -> r14 "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V59 tmp37 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V60 tmp38 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -77,8 +77,8 @@
;* V66 tmp44 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V67 tmp45 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V69 tmp47 [V69,T17] ( 5, 12 ) int -> [rbp-0xC0] ptr "Inlining Arg"
-; V70 tmp48 [V70,T23] ( 3, 8 ) byref -> r12 "Inlining Arg"
+; V69 tmp47 [V69,T19] ( 3, 12 ) int -> [rbp-0xC0] spill-single-def ptr "Inlining Arg"
+; V70 tmp48 [V70,T25] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V71 tmp49 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V72 tmp50 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -92,7 +92,7 @@
; V81 tmp59 [V81,T46] ( 2, 4 ) long -> rax "Inlining Arg"
; V82 tmp60 [V82,T47] ( 2, 4 ) long -> rdx "Inlining Arg"
; V83 tmp61 [V83,T14] ( 7, 15 ) byref -> rbx single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp62 [V84,T09] ( 15, 28 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
+; V84 tmp62 [V84,T09] ( 14, 28 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
; V85 tmp63 [V85,T13] ( 6, 7 ) byref -> [rbp-0x100] spill-single-def ptr "field V05._reference (fldOffset=0x0)" P-INDEP
; V86 tmp64 [V86,T08] ( 15, 21.50) int -> r13 "field V05._length (fldOffset=0x8)" P-INDEP
; V87 tmp65 [V87,T20] ( 7, 8 ) byref -> [rbp-0x108] spill-single-def ptr "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -134,7 +134,7 @@
; V123 GsCookie [V123 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V124 tmp102 [V124,T60] ( 3, 3 ) struct (16) [rbp-0xD8] do-not-enreg[SFA] multireg-arg ptr "shadowVar" <System.UInt128>
; V125 tmp103 [V125,T61] ( 3, 3 ) struct (16) [rbp-0xE8] do-not-enreg[SFA] multireg-arg ptr "shadowVar" <System.UInt128>
-; V126 cse0 [V126,T30] ( 4, 6 ) byref -> r12 "CSE - conservative"
+; V126 cse0 [V126,T30] ( 3, 6 ) byref -> r12 "CSE - conservative"
; V127 cse1 [V127,T12] ( 4, 16 ) int -> [rbp-0xEC] spill-single-def "CSE - moderate"
; V128 cse2 [V128,T26] ( 6, 7.50) int -> registers multi-def "CSE - moderate"
; V129 cse3 [V129,T05] ( 3, 40 ) long -> [rbp-0xF8] spill-single-def "CSE - aggressive"
@@ -190,7 +190,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r15d, edi
neg r15d
add r15d, 4
- js G_M55503_IG50
+ js G_M55503_IG48
lea r14, [rbp-0x50]
mov dword ptr [r14], ecx
mov rdi, rcx
@@ -215,7 +215,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r13d, edi
neg r13d
add r13d, 4
- js G_M55503_IG50
+ js G_M55503_IG48
mov bword ptr [rbp-0x100], r14
; GC ptr vars +{V85}
lea r12, [rbp-0x60]
@@ -228,7 +228,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
inc eax
mov dword ptr [rbp-0xB8], eax
cmp eax, 4
- ja G_M55503_IG50
+ ja G_M55503_IG48
mov edi, eax
;; size=271 bbWeight=1 PerfScore 49.33
G_M55503_IG03: ; bbWeight=1, isz, extend
@@ -309,7 +309,7 @@ G_M55503_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4008 {rbx r1
G_M55503_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4008 {rbx r14}, byref
mov ecx, r15d
cmp r15d, r13d
- jl G_M55503_IG37
+ jl G_M55503_IG38
;; size=12 bbWeight=1 PerfScore 1.50
G_M55503_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4008 {rbx r14}, byref, isz
mov esi, ecx
@@ -441,11 +441,11 @@ G_M55503_IG26: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by
G_M55503_IG27: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov qword ptr [rbp-0xB0], rdx
test rdx, rdx
- je G_M55503_IG32
+ je G_M55503_IG33
;; size=16 bbWeight=8 PerfScore 18.00
G_M55503_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
cmp esi, r15d
- ja G_M55503_IG50
+ ja G_M55503_IG48
mov r8d, esi
lea r12, bword ptr [rbx+4*r8]
; byrRegs +[r12]
@@ -458,7 +458,7 @@ G_M55503_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov dword ptr [rbp-0x94], ecx
jl G_M55503_IG45
;; size=47 bbWeight=2 PerfScore 12.00
-G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=5008 {rbx r12 r14}, byref
+G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=5008 {rbx r12 r14}, byref, isz
mov rdi, r14
; byrRegs +[rdi]
mov esi, r8d
@@ -474,15 +474,25 @@ G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=5008 {rbx r12 r
je G_M55503_IG42
inc r14d
cmp eax, r14d
- jne G_M55503_IG46
+ je SHORT G_M55503_IG30
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ ;; size=79 bbWeight=2 PerfScore 26.00
+G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, byref
mov r14d, dword ptr [rbp-0x98]
mov edi, r15d
sub edi, r14d
mov esi, edi
+ mov dword ptr [rbp-0xC0], esi
test esi, esi
- jl G_M55503_IG41
- ;; size=80 bbWeight=2 PerfScore 25.00
-G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, byref
+ jl G_M55503_IG46
+ ;; size=29 bbWeight=2 PerfScore 8.00
+G_M55503_IG31: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, byref
mov rdi, r12
; byrRegs +[rdi]
mov rdx, bword ptr [rbp-0x100]
@@ -495,35 +505,35 @@ G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12},
dec r12
cmp eax, 1
mov qword ptr [rbp-0xB0], r12
- jne G_M55503_IG49
+ jne G_M55503_IG47
;; size=45 bbWeight=2 PerfScore 16.00
-G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55503_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov esi, r14d
mov ecx, dword ptr [rbp-0x94]
;; size=9 bbWeight=1 PerfScore 1.25
-G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbp-0xC4]
cmp esi, r14d
- jae SHORT G_M55503_IG34
+ jae SHORT G_M55503_IG35
;; size=12 bbWeight=4 PerfScore 9.00
-G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov eax, esi
mov r12, bword ptr [rbp-0x108]
; byrRegs +[r12]
mov rdx, qword ptr [rbp-0xB0]
mov dword ptr [r12+4*rax], edx
;; size=20 bbWeight=2 PerfScore 6.50
-G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[r12]
cmp ecx, r15d
- jae SHORT G_M55503_IG36
+ jae SHORT G_M55503_IG37
;; size=5 bbWeight=4 PerfScore 5.00
-G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55503_IG36: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov ecx, ecx
xor eax, eax
mov dword ptr [rbx+4*rcx], eax
;; size=7 bbWeight=2 PerfScore 3.00
-G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M55503_IG37: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [rbp-0xEC]
mov r8d, ecx
cmp r8d, r13d
@@ -531,9 +541,9 @@ G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov r9d, dword ptr [rbp-0x84]
mov r10d, dword ptr [rbp-0x88]
mov r11d, dword ptr [rbp-0x8C]
- jge SHORT G_M55503_IG40
+ jge SHORT G_M55503_IG41
;; size=38 bbWeight=4 PerfScore 23.00
-G_M55503_IG37: ; bbWeight=1, gcVars=00000000000000000000000000100000 {V87}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55503_IG38: ; bbWeight=1, gcVars=00000000000000000000000000100000 {V87}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rbx]
; GC ptr vars -{V85}
mov r12, bword ptr [rbp-0x108]
@@ -548,16 +558,16 @@ G_M55503_IG37: ; bbWeight=1, gcVars=00000000000000000000000000100000 {V87
or rax, rdi
mov rdi, 0xD1FFAB1E
cmp qword ptr [rbp-0x30], rdi
- je SHORT G_M55503_IG38
+ je SHORT G_M55503_IG39
; GC ptr vars -{V87}
call CORINFO_HELP_FAIL_FAST
; byrRegs -[r12]
; gcr arg pop 0
;; size=61 bbWeight=1 PerfScore 14.75
-G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55503_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M55503_IG39: ; bbWeight=1, epilog, nogc, extend
+G_M55503_IG40: ; bbWeight=1, epilog, nogc, extend
add rsp, 232
pop rbx
pop r12
@@ -567,7 +577,7 @@ G_M55503_IG39: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
-G_M55503_IG40: ; bbWeight=2, gcVars=00000000000000000000000000102000 {V85 V87}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M55503_IG41: ; bbWeight=2, gcVars=00000000000000000000000000102000 {V85 V87}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs +[rbx]
; GC ptr vars +{V85 V87}
mov r8d, dword ptr [rbp-0x90]
@@ -575,16 +585,11 @@ G_M55503_IG40: ; bbWeight=2, gcVars=00000000000000000000000000102000 {V85
; byrRegs +[r14]
jmp G_M55503_IG11
;; size=19 bbWeight=2 PerfScore 8.00
-G_M55503_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1008 {rbx r12}, byref
- ; byrRegs -[r14] +[r12]
- mov dword ptr [rbp-0xC0], esi
- jmp G_M55503_IG47
- ;; size=11 bbWeight=1 PerfScore 3.00
G_M55503_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[r12]
+ ; byrRegs -[r14]
mov ecx, dword ptr [rbp-0x94]
mov esi, dword ptr [rbp-0x98]
- jmp G_M55503_IG32
...
-37 (-1.83%) : 153415.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d24[System.Canon]:MoveNext():this (Tier1-OSR)
@@ -17,7 +17,7 @@
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon[]>
; V05 loc3 [V05 ] ( 5, 600.55) struct (16) [rbp+0x108] do-not-enreg[XSFR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Threading.Tasks.ValueTask>
; V06 loc4 [V06,T32] ( 1, 1 ) struct ( 8) [rbp+0x100] do-not-enreg[S] ld-addr-op tier0-frame <System.Threading.CancellationToken>
-; V07 loc5 [V07 ] ( 8, 1.79) struct (16) [rbp+0xF0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter>
+; V07 loc5 [V07 ] ( 8, 1.49) struct (16) [rbp+0xF0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter>
;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc7 [V09 ] ( 6, 1 ) struct ( 8) [rbp+0xE0] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.TaskAwaiter>
; V10 loc8 [V10,T110] ( 2, 0 ) ref -> rsi class-hnd <System.Exception>
@@ -44,12 +44,12 @@
;* V31 tmp20 [V31,T98] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
;* V32 tmp21 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[System.__Canon]>
;* V33 tmp22 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V34 tmp23 [V34,T79] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+;* V34 tmp23 [V34,T78] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V35 tmp24 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <<unknown class>>
;* V37 tmp26 [V37 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-;* V38 tmp27 [V38,T68] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-;* V39 tmp28 [V39,T37] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]>
+;* V38 tmp27 [V38,T67] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V39 tmp28 [V39,T43] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]>
;* V40 tmp29 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]>
;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V42 tmp31 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
@@ -105,7 +105,7 @@
;* V92 tmp81 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V93 tmp82 [V93 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V94 tmp83 [V94 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V95 tmp84 [V95,T80] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
+;* V95 tmp84 [V95,T79] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V96 tmp85 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V97 tmp86 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V98 tmp87 [V98 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
@@ -115,7 +115,7 @@
;* V102 tmp91 [V102 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V103 tmp92 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V104 tmp93 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V105 tmp94 [V105,T81] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V105 tmp94 [V105,T80] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V106 tmp95 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception>
;* V107 tmp96 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]>
;* V108 tmp97 [V108,T44] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
@@ -137,13 +137,13 @@
;* V124 tmp113 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder>
;* V125 tmp114 [V125 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V126 tmp115 [V126 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V127 tmp116 [V127,T74] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V127 tmp116 [V127,T73] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V128 tmp117 [V128 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder>
;* V129 tmp118 [V129 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]>
;* V130 tmp119 [V130,T57] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Exception[]>
-;* V131 tmp120 [V131,T38] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V131 tmp120 [V131,T37] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V132 tmp121 [V132,T47] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <System.Exception>
-;* V133 tmp122 [V133,T41] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
+;* V133 tmp122 [V133,T40] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
;* V134 tmp123 [V134,T55] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
;* V135 tmp124 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V136 tmp125 [V136 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -154,30 +154,30 @@
;* V141 tmp130 [V141 ] ( 0, 0 ) ref -> zero-ref
;* V142 tmp131 [V142 ] ( 0, 0 ) ref -> zero-ref
;* V143 tmp132 [V143 ] ( 0, 0 ) ref -> zero-ref
-;* V144 tmp133 [V144,T62] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V144 tmp133 [V144,T63] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V145 tmp134 [V145,T59] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Exception[]>
;* V146 tmp135 [V146 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V147 tmp136 [V147 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V148 tmp137 [V148 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V149 tmp138 [V149 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V150 tmp139 [V150 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V151 tmp140 [V151,T82] ( 0, 0 ) ref -> zero-ref single-def
+;* V151 tmp140 [V151,T81] ( 0, 0 ) ref -> zero-ref single-def
;* V152 tmp141 [V152 ] ( 0, 0 ) ref -> zero-ref single-def
;* V153 tmp142 [V153 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
-;* V154 tmp143 [V154,T65] ( 0, 0 ) ref -> zero-ref single-def
+;* V154 tmp143 [V154,T64] ( 0, 0 ) ref -> zero-ref single-def
;* V155 tmp144 [V155 ] ( 0, 0 ) ref -> zero-ref single-def
;* V156 tmp145 [V156,T58] ( 0, 0 ) ref -> zero-ref single-def
;* V157 tmp146 [V157 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V158 tmp147 [V158 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V159 tmp148 [V159,T75] ( 0, 0 ) ref -> zero-ref
+;* V159 tmp148 [V159,T74] ( 0, 0 ) ref -> zero-ref
;* V160 tmp149 [V160 ] ( 0, 0 ) ref -> zero-ref single-def
;* V161 tmp150 [V161 ] ( 0, 0 ) ref -> zero-ref single-def
;* V162 tmp151 [V162 ] ( 0, 0 ) ref -> zero-ref
;* V163 tmp152 [V163 ] ( 0, 0 ) ref -> zero-ref
-;* V164 tmp153 [V164,T76] ( 0, 0 ) ref -> zero-ref
+;* V164 tmp153 [V164,T75] ( 0, 0 ) ref -> zero-ref
;* V165 tmp154 [V165 ] ( 0, 0 ) ref -> zero-ref
;* V166 tmp155 [V166 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V167 tmp156 [V167,T83] ( 0, 0 ) ref -> zero-ref single-def
+;* V167 tmp156 [V167,T82] ( 0, 0 ) ref -> zero-ref single-def
;* V168 tmp157 [V168,T36] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V169 tmp158 [V169,T101] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V170 tmp159 [V170 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -198,7 +198,7 @@
;* V185 tmp174 [V185 ] ( 0, 0 ) ref -> zero-ref
;* V186 tmp175 [V186 ] ( 0, 0 ) ref -> zero-ref single-def
;* V187 tmp176 [V187 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V188 tmp177 [V188,T39] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V188 tmp177 [V188,T38] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V189 tmp178 [V189,T102] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V190 tmp179 [V190 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V191 tmp180 [V191 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
@@ -302,11 +302,11 @@
;* V289 tmp278 [V289 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V290 tmp279 [V290 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V291 tmp280 [V291 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V292 tmp281 [V292,T78] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V293 tmp282 [V293,T67] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V294 tmp283 [V294,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V292 tmp281 [V292,T77] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V293 tmp282 [V293,T66] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V294 tmp283 [V294,T88] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V295 tmp284 [V295,T46] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V296 tmp285 [V296,T64] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V296 tmp285 [V296,T62] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V297 tmp286 [V297 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V298 tmp287 [V298 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V299 tmp288 [V299 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -325,13 +325,13 @@
;* V312 tmp301 [V312 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V313 tmp302 [V313 ] ( 0, 0 ) ref -> zero-ref single-def
;* V314 tmp303 [V314 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V315 tmp304 [V315,T84] ( 0, 0 ) ref -> zero-ref single-def
+;* V315 tmp304 [V315,T83] ( 0, 0 ) ref -> zero-ref single-def
;* V316 tmp305 [V316 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V317 tmp306 [V317 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V318 tmp307 [V318 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V319 tmp308 [V319 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V320 tmp309 [V320 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V321 tmp310 [V321,T85] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
+;* V321 tmp310 [V321,T84] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V322 tmp311 [V322 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V323 tmp312 [V323 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V324 tmp313 [V324 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
@@ -341,7 +341,7 @@
;* V328 tmp317 [V328 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V329 tmp318 [V329 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V330 tmp319 [V330 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V331 tmp320 [V331,T73] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V331 tmp320 [V331,T72] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V332 tmp321 [V332 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception>
;* V333 tmp322 [V333 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]>
;* V334 tmp323 [V334,T45] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
@@ -363,36 +363,36 @@
;* V350 tmp339 [V350 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder>
;* V351 tmp340 [V351 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V352 tmp341 [V352 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V353 tmp342 [V353,T86] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V353 tmp342 [V353,T85] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V354 tmp343 [V354 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder>
;* V355 tmp344 [V355 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]>
;* V356 tmp345 [V356,T56] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Exception[]>
-;* V357 tmp346 [V357,T40] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V357 tmp346 [V357,T39] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V358 tmp347 [V358,T48] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <System.Exception>
-;* V359 tmp348 [V359,T42] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
+;* V359 tmp348 [V359,T41] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
;* V360 tmp349 [V360 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException>
;* V361 tmp350 [V361 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V362 tmp351 [V362 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V363 tmp352 [V363 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V364 tmp353 [V364 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V365 tmp354 [V365 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V366 tmp355 [V366,T87] ( 0, 0 ) ref -> zero-ref single-def
+;* V366 tmp355 [V366,T86] ( 0, 0 ) ref -> zero-ref single-def
;* V367 tmp356 [V367 ] ( 0, 0 ) ref -> zero-ref single-def
;* V368 tmp357 [V368 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
-;* V369 tmp358 [V369,T66] ( 0, 0 ) ref -> zero-ref single-def
+;* V369 tmp358 [V369,T65] ( 0, 0 ) ref -> zero-ref single-def
;* V370 tmp359 [V370 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V371 tmp360 [V371,T43] ( 0, 0 ) ref -> zero-ref single-def
+;* V371 tmp360 [V371,T42] ( 0, 0 ) ref -> zero-ref single-def
;* V372 tmp361 [V372 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V373 tmp362 [V373 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V374 tmp363 [V374,T69] ( 0, 0 ) ref -> zero-ref
+;* V374 tmp363 [V374,T68] ( 0, 0 ) ref -> zero-ref
;* V375 tmp364 [V375 ] ( 0, 0 ) ref -> zero-ref single-def
;* V376 tmp365 [V376 ] ( 0, 0 ) ref -> zero-ref single-def
;* V377 tmp366 [V377 ] ( 0, 0 ) ref -> zero-ref
;* V378 tmp367 [V378 ] ( 0, 0 ) ref -> zero-ref
-;* V379 tmp368 [V379,T77] ( 0, 0 ) ref -> zero-ref
+;* V379 tmp368 [V379,T76] ( 0, 0 ) ref -> zero-ref
;* V380 tmp369 [V380 ] ( 0, 0 ) ref -> zero-ref
;* V381 tmp370 [V381 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V382 tmp371 [V382,T88] ( 0, 0 ) ref -> zero-ref single-def
+;* V382 tmp371 [V382,T87] ( 0, 0 ) ref -> zero-ref single-def
;* V383 tmp372 [V383,T34] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V384 tmp373 [V384,T103] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V385 tmp374 [V385 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -475,7 +475,7 @@
; V462 tmp451 [V462,T95] ( 3, 1.18) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V463 tmp452 [V463 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V464 tmp453 [V464 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V465 tmp454 [V465,T90] ( 7, 2.46) ref -> r13 class-hnd "Inline stloc first use temp" <System.Object>
+; V465 tmp454 [V465,T90] ( 7, 1.87) ref -> r14 class-hnd "Inline stloc first use temp" <System.Object>
; V466 tmp455 [V466,T97] ( 3, 1.18) int -> rdi
; V467 tmp456 [V467,T91] ( 4, 1.58) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V468 tmp457 [V468 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
@@ -587,9 +587,9 @@
;* V574 tmp563 [V574 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;* V575 tmp564 [V575 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V576 tmp565 [V576 ] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V577 tmp566 [V577,T70] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V578 tmp567 [V578,T71] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V579 tmp568 [V579,T72] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V577 tmp566 [V577,T69] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V578 tmp567 [V578,T70] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V579 tmp568 [V579,T71] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V580 tmp569 [V580 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V581 tmp570 [V581 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V582 tmp571 [V582 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
@@ -639,7 +639,7 @@ G_M48189_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M48189_IG02: ; bbWeight=0.01, gcVars=00000000000000000000000002000000 {V00}, gcrefRegs=8000 {r15}, byrefRegs=0002 {rcx}, gcvars, byref
; GC ptr vars +{V00}
cmp dword ptr [rcx+0x24], 0x186A0
- jge G_M48189_IG58
+ jge G_M48189_IG57
;; size=13 bbWeight=0.01 PerfScore 0.04
G_M48189_IG03: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0002 {rcx}, byref
mov rdi, gword ptr [rcx+0x08]
@@ -648,7 +648,7 @@ G_M48189_IG03: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0002 {rc
mov esi, dword ptr [r15+0x18]
mov rax, 0xD1FFAB1E ; System.Buffers.SharedArrayPool`1[System.Object]
cmp qword ptr [rdi], rax
- jne G_M48189_IG60
+ jne G_M48189_IG59
call [System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this]
; gcrRegs -[rdi] +[rax]
; byrRegs -[rcx]
@@ -666,7 +666,7 @@ G_M48189_IG05: ; bbWeight=98.94, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x18]
test rdi, rdi
- je G_M48189_IG47
+ je G_M48189_IG40
;; size=20 bbWeight=98.94 PerfScore 717.33
G_M48189_IG06: ; bbWeight=98.94, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov rsi, r14
@@ -694,14 +694,14 @@ G_M48189_IG07: ; bbWeight=99.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
mov gword ptr [rbp+0x108], rax
mov qword ptr [rbp+0x110], rdx
cmp byte ptr [r15+0x1D], 0
- jne G_M48189_IG41
+ jne G_M48189_IG37
;; size=51 bbWeight=99.99 PerfScore 1649.84
G_M48189_IG08: ; bbWeight=99.89, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
...
+44 (+6.92%) : 11245.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span
1[uint],int) (Tier1)
@@ -11,7 +11,7 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
; V01 arg1 [V01,T08] ( 8, 7.69) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.23) int -> r13
+; V02 loc0 [V02,T07] ( 16, 15.15) int -> r13
; V03 loc1 [V03,T16] ( 3, 3.77) int -> r12
; V04 loc2 [V04,T25] ( 9, 0 ) byref -> r15 single-def
; V05 loc3 [V05,T26] ( 9, 0 ) byref -> rbx single-def
@@ -118,25 +118,29 @@ G_M26918_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=24 bbWeight=1 PerfScore 8.25
G_M26918_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
test r15d, r15d
- je G_M26918_IG20
+ je G_M26918_IG21
test ebx, ebx
- jl G_M26918_IG21
+ jl G_M26918_IG22
;; size=17 bbWeight=1 PerfScore 2.50
G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov r13d, r15d
cmp r15d, 1
- jle G_M26918_IG18
+ jle G_M26918_IG19
;; size=13 bbWeight=1 PerfScore 1.50
G_M26918_IG04: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
cmp r13d, 16
- jle SHORT G_M26918_IG08
+ jle SHORT G_M26918_IG09
;; size=6 bbWeight=1.92 PerfScore 2.40
G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
test ebx, ebx
- je G_M26918_IG27
+ je G_M26918_IG29
dec ebx
cmp r13d, r15d
- ja G_M26918_IG28
+ ja G_M26918_IG30
+ test r13d, r13d
+ jl G_M26918_IG23
+ ;; size=28 bbWeight=0.92 PerfScore 3.69
+G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov esi, r13d
mov rdi, r14
; byrRegs +[rdi]
@@ -151,7 +155,7 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
add rsi, rdx
mov edx, r15d
cmp rsi, rdx
- ja G_M26918_IG28
+ ja G_M26918_IG30
lea rax, bword ptr [r14+4*rdi]
; byrRegs +[rax]
mov rdi, rax
@@ -159,9 +163,9 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
mov bword ptr [rbp-0x30], rdi
; GC ptr vars +{V54}
test r13d, r13d
- jl G_M26918_IG22
- ;; size=82 bbWeight=0.92 PerfScore 11.54
-G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
+ jl G_M26918_IG24
+ ;; size=63 bbWeight=0.92 PerfScore 9.00
+G_M26918_IG07: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
; byrRegs -[rax]
mov esi, r13d
mov edx, ebx
@@ -173,37 +177,37 @@ G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=
cmp r13d, 1
jg SHORT G_M26918_IG04
;; size=20 bbWeight=1.92 PerfScore 9.62
-G_M26918_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r14]
- jmp G_M26918_IG18
+ jmp G_M26918_IG19
;; size=5 bbWeight=0.08 PerfScore 0.15
-G_M26918_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14]
cmp r13d, 2
- je SHORT G_M26918_IG17
+ je SHORT G_M26918_IG18
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
cmp r13d, 3
- je G_M26918_IG23
+ je G_M26918_IG25
cmp r13d, r15d
- ja G_M26918_IG28
+ ja G_M26918_IG30
test r13d, r13d
- jl G_M26918_IG26
+ jl G_M26918_IG28
;; size=28 bbWeight=0.92 PerfScore 3.46
-G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
mov edi, r13d
xor esi, esi
dec edi
test edi, edi
- jle SHORT G_M26918_IG18
+ jle SHORT G_M26918_IG19
;; size=11 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG11: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG12: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
lea eax, [rsi+0x01]
movsxd rcx, eax
mov ecx, dword ptr [r14+4*rcx]
- jmp SHORT G_M26918_IG13
+ jmp SHORT G_M26918_IG14
;; size=12 bbWeight=7.62 PerfScore 36.17
-G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG13: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
lea r8d, [rsi+0x01]
movsxd r8, r8d
lea r8, bword ptr [r14+4*r8]
@@ -211,37 +215,37 @@ G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
mov dword ptr [r8], edx
dec esi
;; size=16 bbWeight=21.38 PerfScore 53.46
-G_M26918_IG13: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG14: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[r8]
test esi, esi
- jl SHORT G_M26918_IG15
+ jl SHORT G_M26918_IG16
;; size=4 bbWeight=29 PerfScore 36.25
-G_M26918_IG14: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG15: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
movsxd rdx, esi
mov edx, dword ptr [r14+4*rdx]
cmp edx, ecx
- ja SHORT G_M26918_IG12
+ ja SHORT G_M26918_IG13
;; size=11 bbWeight=27.31 PerfScore 95.58
-G_M26918_IG15: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG16: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
inc esi
movsxd rsi, esi
mov dword ptr [r14+4*rsi], ecx
mov esi, eax
cmp esi, edi
- jl SHORT G_M26918_IG11
+ jl SHORT G_M26918_IG12
;; size=15 bbWeight=7.62 PerfScore 22.85
-G_M26918_IG16: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG17: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14]
lea r13, bword ptr [r14+0x04]
; byrRegs +[r13]
cmp dword ptr [r14], r14d
mov edi, dword ptr [r14]
cmp edi, dword ptr [r13]
- jbe SHORT G_M26918_IG18
+ jbe SHORT G_M26918_IG19
xor edi, edi
cmp r14, r13
setne dil
@@ -252,7 +256,7 @@ G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
mov dword ptr [r14], esi
mov dword ptr [r13], edi
;; size=45 bbWeight=0.08 PerfScore 1.54
-G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M26918_IG19: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13-r14]
add rsp, 8
pop rbx
@@ -263,11 +267,11 @@ G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=15 bbWeight=0.08 PerfScore 0.33
-G_M26918_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M26918_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs +[r14]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
@@ -279,7 +283,7 @@ G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr
test ebx, ebx
jge G_M26918_IG03
;; size=34 bbWeight=0 PerfScore 0.00
-G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -289,7 +293,17 @@ G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr
; gcr arg pop 0
jmp G_M26918_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M26918_IG22: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
+G_M26918_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ jmp G_M26918_IG06
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26918_IG24: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
; byrRegs +[rdi]
; GC ptr vars +{V54}
mov rdi, 0xD1FFAB1E
@@ -302,13 +316,13 @@ G_M26918_IG22: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=000
; gcr arg pop 0
mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
- jmp G_M26918_IG06
+ jmp G_M26918_IG07
;; size=35 bbWeight=0 PerfScore 0.00
-G_M26918_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M26918_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
; byrRegs -[rdi]
; GC ptr vars -{V54}
cmp r15d, 2
- jbe SHORT G_M26918_IG19
+ jbe G_M26918_IG20
lea r15, bword ptr [r14+0x08]
; byrRegs +[r15]
lea rbx, bword ptr [r14+0x04]
@@ -316,7 +330,7 @@ G_M26918_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
cmp dword ptr [r14], r14d
mov edi, dword ptr [r14]
cmp edi, dword ptr [rbx]
- jbe SHORT G_M26918_IG24
+ jbe SHORT G_M26918_IG26
xor edi, edi
cmp r14, rbx
setne dil
@@ -326,11 +340,11 @@ G_M26918_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov eax, dword ptr [rbx]
mov dword ptr [r14], eax
mov dword ptr [rbx], edi
- ;; size=49 bbWeight=0 PerfScore 0.00
-G_M26918_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=C008 {rbx r14 r15}, byref, isz
+ ;; size=53 bbWeight=0 PerfScore 0.00
...
+44 (+6.93%) : 33840.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span
1[uint],int) (Tier1)
@@ -11,7 +11,7 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
; V01 arg1 [V01,T08] ( 8, 7.69) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.23) int -> r13
+; V02 loc0 [V02,T07] ( 16, 15.15) int -> r13
; V03 loc1 [V03,T16] ( 3, 3.77) int -> r12
; V04 loc2 [V04,T25] ( 9, 0 ) byref -> r15 single-def
; V05 loc3 [V05,T26] ( 9, 0 ) byref -> rbx single-def
@@ -118,25 +118,29 @@ G_M26918_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=24 bbWeight=1 PerfScore 8.25
G_M26918_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
test r15d, r15d
- je G_M26918_IG21
+ je G_M26918_IG22
test ebx, ebx
- jl G_M26918_IG22
+ jl G_M26918_IG23
;; size=17 bbWeight=1 PerfScore 2.50
G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov r13d, r15d
cmp r15d, 1
- jle G_M26918_IG18
+ jle G_M26918_IG19
;; size=13 bbWeight=1 PerfScore 1.50
G_M26918_IG04: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
cmp r13d, 16
- jle SHORT G_M26918_IG08
+ jle SHORT G_M26918_IG09
;; size=6 bbWeight=1.92 PerfScore 2.40
G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
test ebx, ebx
- je G_M26918_IG28
+ je G_M26918_IG30
dec ebx
cmp r13d, r15d
- ja G_M26918_IG29
+ ja G_M26918_IG31
+ test r13d, r13d
+ jl G_M26918_IG24
+ ;; size=28 bbWeight=0.92 PerfScore 3.69
+G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov esi, r13d
mov rdi, r14
; byrRegs +[rdi]
@@ -151,7 +155,7 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
add rsi, rdx
mov edx, r15d
cmp rsi, rdx
- ja G_M26918_IG29
+ ja G_M26918_IG31
lea rax, bword ptr [r14+4*rdi]
; byrRegs +[rax]
mov rdi, rax
@@ -159,9 +163,9 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
mov bword ptr [rbp-0x30], rdi
; GC ptr vars +{V54}
test r13d, r13d
- jl G_M26918_IG23
- ;; size=82 bbWeight=0.92 PerfScore 11.54
-G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
+ jl G_M26918_IG25
+ ;; size=63 bbWeight=0.92 PerfScore 9.00
+G_M26918_IG07: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
; byrRegs -[rax]
mov esi, r13d
mov edx, ebx
@@ -173,37 +177,37 @@ G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=
cmp r13d, 1
jg SHORT G_M26918_IG04
;; size=20 bbWeight=1.92 PerfScore 9.62
-G_M26918_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.08 PerfScore 0.15
-G_M26918_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14]
cmp r13d, 2
- je SHORT G_M26918_IG17
+ je SHORT G_M26918_IG18
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
cmp r13d, 3
- je G_M26918_IG24
+ je G_M26918_IG26
cmp r13d, r15d
- ja G_M26918_IG29
+ ja G_M26918_IG31
test r13d, r13d
- jl G_M26918_IG27
+ jl G_M26918_IG29
;; size=28 bbWeight=0.92 PerfScore 3.46
-G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
mov edi, r13d
xor esi, esi
dec edi
test edi, edi
- jle SHORT G_M26918_IG18
+ jle SHORT G_M26918_IG19
;; size=11 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG11: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG12: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
lea eax, [rsi+0x01]
movsxd rcx, eax
mov ecx, dword ptr [r14+4*rcx]
- jmp SHORT G_M26918_IG13
+ jmp SHORT G_M26918_IG14
;; size=12 bbWeight=7.62 PerfScore 36.17
-G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG13: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
lea r8d, [rsi+0x01]
movsxd r8, r8d
lea r8, bword ptr [r14+4*r8]
@@ -211,39 +215,39 @@ G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
mov dword ptr [r8], edx
dec esi
;; size=16 bbWeight=21.38 PerfScore 53.46
-G_M26918_IG13: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG14: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[r8]
test esi, esi
- jl SHORT G_M26918_IG15
+ jl SHORT G_M26918_IG16
;; size=4 bbWeight=29 PerfScore 36.25
-G_M26918_IG14: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG15: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
movsxd rdx, esi
mov edx, dword ptr [r14+4*rdx]
cmp edx, ecx
- ja SHORT G_M26918_IG12
+ ja SHORT G_M26918_IG13
;; size=11 bbWeight=27.31 PerfScore 95.58
-G_M26918_IG15: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG16: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
inc esi
movsxd rsi, esi
mov dword ptr [r14+4*rsi], ecx
mov esi, eax
cmp esi, edi
- jl SHORT G_M26918_IG11
+ jl SHORT G_M26918_IG12
;; size=15 bbWeight=7.62 PerfScore 22.85
-G_M26918_IG16: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG17: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14]
lea r13, bword ptr [r14+0x04]
; byrRegs +[r13]
cmp dword ptr [r14], r14d
mov edi, dword ptr [r14]
cmp edi, dword ptr [r13]
- ja SHORT G_M26918_IG19
+ ja SHORT G_M26918_IG20
;; size=16 bbWeight=0.08 PerfScore 0.73
-G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M26918_IG19: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13-r14]
add rsp, 8
pop rbx
@@ -254,7 +258,7 @@ G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=15 bbWeight=0.08 PerfScore 0.33
-G_M26918_IG19: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M26918_IG20: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
; byrRegs +[r13-r14]
xor edi, edi
cmp r14, r13
@@ -265,14 +269,14 @@ G_M26918_IG19: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=000
mov esi, dword ptr [r13]
mov dword ptr [r14], esi
mov dword ptr [r13], edi
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=31 bbWeight=0.03 PerfScore 0.42
-G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13-r14]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs +[r14]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
@@ -284,7 +288,7 @@ G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr
test ebx, ebx
jge G_M26918_IG03
;; size=34 bbWeight=0 PerfScore 0.00
-G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -294,7 +298,17 @@ G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr
; gcr arg pop 0
jmp G_M26918_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M26918_IG23: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
+G_M26918_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ jmp G_M26918_IG06
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26918_IG25: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
; byrRegs +[rdi]
; GC ptr vars +{V54}
mov rdi, 0xD1FFAB1E
@@ -307,13 +321,13 @@ G_M26918_IG23: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=000
; gcr arg pop 0
mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
- jmp G_M26918_IG06
+ jmp G_M26918_IG07
;; size=35 bbWeight=0 PerfScore 0.00
-G_M26918_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M26918_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
; byrRegs -[rdi]
; GC ptr vars -{V54}
cmp r15d, 2
- jbe SHORT G_M26918_IG20
+ jbe G_M26918_IG21
lea r15, bword ptr [r14+0x08]
; byrRegs +[r15]
lea rbx, bword ptr [r14+0x04]
@@ -321,7 +335,7 @@ G_M26918_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
cmp dword ptr [r14], r14d
mov edi, dword ptr [r14]
cmp edi, dword ptr [rbx]
- jbe SHORT G_M26918_IG25
+ jbe SHORT G_M26918_IG27
xor edi, edi
cmp r14, rbx
setne dil
...
+44 (+6.93%) : 41972.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span
1[uint],int) (Tier1)
@@ -11,7 +11,7 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
; V01 arg1 [V01,T08] ( 8, 7.69) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.23) int -> r13
+; V02 loc0 [V02,T07] ( 16, 15.15) int -> r13
; V03 loc1 [V03,T16] ( 3, 3.77) int -> r12
; V04 loc2 [V04,T25] ( 9, 0 ) byref -> r15 single-def
; V05 loc3 [V05,T26] ( 9, 0 ) byref -> rbx single-def
@@ -118,25 +118,29 @@ G_M26918_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=24 bbWeight=1 PerfScore 8.25
G_M26918_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
test r15d, r15d
- je G_M26918_IG21
+ je G_M26918_IG22
test ebx, ebx
- jl G_M26918_IG22
+ jl G_M26918_IG23
;; size=17 bbWeight=1 PerfScore 2.50
G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov r13d, r15d
cmp r15d, 1
- jle G_M26918_IG18
+ jle G_M26918_IG19
;; size=13 bbWeight=1 PerfScore 1.50
G_M26918_IG04: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
cmp r13d, 16
- jle SHORT G_M26918_IG08
+ jle SHORT G_M26918_IG09
;; size=6 bbWeight=1.92 PerfScore 2.40
G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
test ebx, ebx
- je G_M26918_IG28
+ je G_M26918_IG30
dec ebx
cmp r13d, r15d
- ja G_M26918_IG29
+ ja G_M26918_IG31
+ test r13d, r13d
+ jl G_M26918_IG24
+ ;; size=28 bbWeight=0.92 PerfScore 3.69
+G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov esi, r13d
mov rdi, r14
; byrRegs +[rdi]
@@ -151,7 +155,7 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
add rsi, rdx
mov edx, r15d
cmp rsi, rdx
- ja G_M26918_IG29
+ ja G_M26918_IG31
lea rax, bword ptr [r14+4*rdi]
; byrRegs +[rax]
mov rdi, rax
@@ -159,9 +163,9 @@ G_M26918_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
mov bword ptr [rbp-0x30], rdi
; GC ptr vars +{V54}
test r13d, r13d
- jl G_M26918_IG23
- ;; size=82 bbWeight=0.92 PerfScore 11.54
-G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
+ jl G_M26918_IG25
+ ;; size=63 bbWeight=0.92 PerfScore 9.00
+G_M26918_IG07: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref, isz
; byrRegs -[rax]
mov esi, r13d
mov edx, ebx
@@ -173,37 +177,37 @@ G_M26918_IG06: ; bbWeight=1.92, gcVars=0000000000002000 {V54}, gcrefRegs=
cmp r13d, 1
jg SHORT G_M26918_IG04
;; size=20 bbWeight=1.92 PerfScore 9.62
-G_M26918_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.08 PerfScore 0.15
-G_M26918_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14]
cmp r13d, 2
- je SHORT G_M26918_IG17
+ je SHORT G_M26918_IG18
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
cmp r13d, 3
- je G_M26918_IG24
+ je G_M26918_IG26
cmp r13d, r15d
- ja G_M26918_IG29
+ ja G_M26918_IG31
test r13d, r13d
- jl G_M26918_IG27
+ jl G_M26918_IG29
;; size=28 bbWeight=0.92 PerfScore 3.46
-G_M26918_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
mov edi, r13d
xor esi, esi
dec edi
test edi, edi
- jle SHORT G_M26918_IG18
+ jle SHORT G_M26918_IG19
;; size=11 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG11: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG12: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
lea eax, [rsi+0x01]
movsxd rcx, eax
mov ecx, dword ptr [r14+4*rcx]
- jmp SHORT G_M26918_IG13
+ jmp SHORT G_M26918_IG14
;; size=12 bbWeight=7.62 PerfScore 36.17
-G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG13: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
lea r8d, [rsi+0x01]
movsxd r8, r8d
lea r8, bword ptr [r14+4*r8]
@@ -211,39 +215,39 @@ G_M26918_IG12: ; bbWeight=21.38, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
mov dword ptr [r8], edx
dec esi
;; size=16 bbWeight=21.38 PerfScore 53.46
-G_M26918_IG13: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG14: ; bbWeight=29, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[r8]
test esi, esi
- jl SHORT G_M26918_IG15
+ jl SHORT G_M26918_IG16
;; size=4 bbWeight=29 PerfScore 36.25
-G_M26918_IG14: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG15: ; bbWeight=27.31, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
movsxd rdx, esi
mov edx, dword ptr [r14+4*rdx]
cmp edx, ecx
- ja SHORT G_M26918_IG12
+ ja SHORT G_M26918_IG13
;; size=11 bbWeight=27.31 PerfScore 95.58
-G_M26918_IG15: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG16: ; bbWeight=7.62, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
inc esi
movsxd rsi, esi
mov dword ptr [r14+4*rsi], ecx
mov esi, eax
cmp esi, edi
- jl SHORT G_M26918_IG11
+ jl SHORT G_M26918_IG12
;; size=15 bbWeight=7.62 PerfScore 22.85
-G_M26918_IG16: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26918_IG17: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=2 bbWeight=0.92 PerfScore 1.85
-G_M26918_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14]
lea r13, bword ptr [r14+0x04]
; byrRegs +[r13]
cmp dword ptr [r14], r14d
mov edi, dword ptr [r14]
cmp edi, dword ptr [r13]
- ja SHORT G_M26918_IG19
+ ja SHORT G_M26918_IG20
;; size=16 bbWeight=0.08 PerfScore 0.73
-G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M26918_IG19: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13-r14]
add rsp, 8
pop rbx
@@ -254,7 +258,7 @@ G_M26918_IG18: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=15 bbWeight=0.08 PerfScore 0.33
-G_M26918_IG19: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M26918_IG20: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
; byrRegs +[r13-r14]
xor edi, edi
cmp r14, r13
@@ -265,14 +269,14 @@ G_M26918_IG19: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=000
mov esi, dword ptr [r13]
mov dword ptr [r14], esi
mov dword ptr [r13], edi
- jmp SHORT G_M26918_IG18
+ jmp SHORT G_M26918_IG19
;; size=31 bbWeight=0.03 PerfScore 0.42
-G_M26918_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13-r14]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs +[r14]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
@@ -284,7 +288,7 @@ G_M26918_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr
test ebx, ebx
jge G_M26918_IG03
;; size=34 bbWeight=0 PerfScore 0.00
-G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+G_M26918_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -294,7 +298,17 @@ G_M26918_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr
; gcr arg pop 0
jmp G_M26918_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M26918_IG23: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
+G_M26918_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ jmp G_M26918_IG06
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26918_IG25: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, gcvars, byref
; byrRegs +[rdi]
; GC ptr vars +{V54}
mov rdi, 0xD1FFAB1E
@@ -307,13 +321,13 @@ G_M26918_IG23: ; bbWeight=0, gcVars=0000000000002000 {V54}, gcrefRegs=000
; gcr arg pop 0
mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
- jmp G_M26918_IG06
+ jmp G_M26918_IG07
;; size=35 bbWeight=0 PerfScore 0.00
-G_M26918_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M26918_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
; byrRegs -[rdi]
; GC ptr vars -{V54}
cmp r15d, 2
- jbe SHORT G_M26918_IG20
+ jbe G_M26918_IG21
lea r15, bword ptr [r14+0x08]
; byrRegs +[r15]
lea rbx, bword ptr [r14+0x04]
@@ -321,7 +335,7 @@ G_M26918_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
cmp dword ptr [r14], r14d
mov edi, dword ptr [r14]
cmp edi, dword ptr [rbx]
- jbe SHORT G_M26918_IG25
+ jbe SHORT G_M26918_IG27
xor edi, edi
cmp r14, rbx
setne dil
...
benchmarks.run_tiered.linux.x64.checked.mch
-2 (-0.15%) : 6844.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan1[ushort],System.ReadOnlyMemory
1[ubyte]):this (Tier0-FullOpts)
@@ -531,16 +531,16 @@ G_M6729_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=47 bbWeight=1 PerfScore 11.00
G_M6729_IG33: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbp-0x70], 0
- je G_M6729_IG41
+ je G_M6729_IG43
xor ebx, ebx
cmp dword ptr [rbp-0x58], 0
- jle SHORT G_M6729_IG38
+ jle SHORT G_M6729_IG41
;; size=19 bbWeight=1 PerfScore 6.25
G_M6729_IG34: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x70]
; gcrRegs +[rdi]
cmp ebx, dword ptr [rdi+0x08]
- jae G_M6729_IG39
+ jae SHORT G_M6729_IG37
mov rdi, gword ptr [rbp-0x70]
mov esi, ebx
shl rsi, 6
@@ -554,24 +554,39 @@ G_M6729_IG34: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r15]
xchg gword ptr [rdi], r15
test r15, r15
- je SHORT G_M6729_IG37
- ;; size=44 bbWeight=8 PerfScore 260.00
+ je SHORT G_M6729_IG40
+ ;; size=40 bbWeight=8 PerfScore 260.00
G_M6729_IG35: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rsi]
mov esi, dword ptr [rdi+0x08]
mov r14d, esi
shr r14d, 31
- jne SHORT G_M6729_IG36
+ jne SHORT G_M6729_IG39
test esi, esi
- je SHORT G_M6729_IG36
+ je SHORT G_M6729_IG39
cmp dword ptr [r15+0x08], esi
- jb SHORT G_M6729_IG40
+ jae SHORT G_M6729_IG38
+ ;; size=22 bbWeight=4 PerfScore 36.00
+G_M6729_IG36: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r15]
+ ; byrRegs -[rdi]
+ ; GC ptr vars -{V06}
+ jmp SHORT G_M6729_IG42
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M6729_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M6729_IG38: ; bbWeight=4, gcVars=0000000000000040 {V06}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r15]
+ ; GC ptr vars +{V06}
lea rdi, bword ptr [r15+0x10]
+ ; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rdi]
; gcr arg pop 0
- ;; size=32 bbWeight=4 PerfScore 50.00
-G_M6729_IG36: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 14.00
+G_M6729_IG39: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
@@ -582,12 +597,12 @@ G_M6729_IG36: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byre
; gcrRegs -[rsi rdi r15]
; gcr arg pop 0
;; size=25 bbWeight=4 PerfScore 23.00
-G_M6729_IG37: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6729_IG40: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc ebx
cmp ebx, dword ptr [rbp-0x58]
jl SHORT G_M6729_IG34
;; size=7 bbWeight=8 PerfScore 26.00
-G_M6729_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6729_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E
mov esi, 76
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
@@ -603,18 +618,14 @@ G_M6729_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- jmp SHORT G_M6729_IG41
+ jmp SHORT G_M6729_IG43
;; size=52 bbWeight=1 PerfScore 13.00
-G_M6729_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M6729_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M6729_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
mov esi, 71
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
@@ -659,7 +670,7 @@ G_M6729_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
nop
;; size=151 bbWeight=1 PerfScore 33.25
-G_M6729_IG42: ; bbWeight=1, funclet epilog, nogc, extend
+G_M6729_IG44: ; bbWeight=1, funclet epilog, nogc, extend
add rsp, 48
pop rbx
pop r13
@@ -669,7 +680,7 @@ G_M6729_IG42: ; bbWeight=1, funclet epilog, nogc, extend
ret
;; size=13 bbWeight=1 PerfScore 3.75
-Total bytes of code 1366, prolog size 71, PerfScore 709.33, instruction count 335, allocated bytes for code 1366 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
+Total bytes of code 1364, prolog size 71, PerfScore 709.33, instruction count 336, allocated bytes for code 1364 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 32693.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)
@@ -199,7 +199,7 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov gword ptr [rbp-0x80], rax
; GC ptr vars +{V16}
test r14, r14
- je G_M41722_IG45
+ je G_M41722_IG46
lea rdi, bword ptr [rax+0x08]
; byrRegs +[rdi]
mov rsi, r14
@@ -210,13 +210,13 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov r14, gword ptr [rbp-0x80]
; gcrRegs +[r14]
cmp dword ptr [r15+0x08], 0
- jle G_M41722_IG40
+ jle G_M41722_IG41
;; size=71 bbWeight=1 PerfScore 13.25
G_M41722_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V16}
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [r15+0x08]
- jae G_M41722_IG42
+ jae G_M41722_IG43
mov eax, edi
movzx rax, word ptr [r15+2*rax+0x0C]
cmp eax, 256
@@ -229,27 +229,27 @@ G_M41722_IG04: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcr arg pop 0
test eax, eax
mov edi, dword ptr [rbp-0x30]
- je G_M41722_IG12
+ je G_M41722_IG13
jmp SHORT G_M41722_IG06
;; size=24 bbWeight=2 PerfScore 17.00
G_M41722_IG05: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov eax, eax
mov rcx, 0xD1FFAB1E ; static handle
test byte ptr [rax+rcx], 128
- je G_M41722_IG12
+ je G_M41722_IG13
;; size=22 bbWeight=2 PerfScore 9.00
G_M41722_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov eax, 1
inc edi
mov dword ptr [rbp-0x30], edi
mov dword ptr [rbp-0x40], eax
- jmp G_M41722_IG39
+ jmp G_M41722_IG40
;; size=18 bbWeight=2 PerfScore 9.00
G_M41722_IG07: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov edx, dword ptr [r14+0x10]
cmp dword ptr [rcx+0x08], edx
jbe SHORT G_M41722_IG08
@@ -263,51 +263,53 @@ G_M41722_IG08: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
G_M41722_IG09: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
movzx rcx, cx
cmp ecx, 256
- jb SHORT G_M41722_IG10
+ jb SHORT G_M41722_IG11
mov dword ptr [rbp-0x30], edi
mov edi, ecx
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
test eax, eax
mov edi, dword ptr [rbp-0x30]
- je SHORT G_M41722_IG14
- jmp SHORT G_M41722_IG11
- ;; size=31 bbWeight=8 PerfScore 80.00
-G_M41722_IG10: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M41722_IG12
+ ;; size=29 bbWeight=8 PerfScore 64.00
+G_M41722_IG10: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M41722_IG15
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M41722_IG11: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov ecx, ecx
mov rdx, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rdx], 128
- je SHORT G_M41722_IG14
+ je SHORT G_M41722_IG15
;; size=18 bbWeight=8 PerfScore 36.00
-G_M41722_IG11: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG12: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov edx, dword ptr [r14+0x10]
mov esi, edx
cmp dword ptr [rcx+0x08], esi
- jbe SHORT G_M41722_IG12
+ jbe SHORT G_M41722_IG13
inc edx
mov dword ptr [r14+0x10], edx
;; size=30 bbWeight=8 PerfScore 86.00
-G_M41722_IG12: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG13: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
cmp dword ptr [rbp-0x40], 0
jne SHORT G_M41722_IG07
;; size=6 bbWeight=16 PerfScore 48.00
-G_M41722_IG13: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M41722_IG15
+G_M41722_IG14: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M41722_IG16
;; size=2 bbWeight=2 PerfScore 4.00
-G_M41722_IG14: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
xor eax, eax
mov dword ptr [rbp-0x40], eax
;; size=5 bbWeight=2 PerfScore 2.50
-G_M41722_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG16: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x30], edi
mov ecx, edi
cmp word ptr [r15+2*rcx+0x0C], 37
- jne G_M41722_IG39
+ jne G_M41722_IG40
mov rdi, 0xD1FFAB1E ; System.Text.StringBuilder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -338,56 +340,56 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
lea ecx, [rdi+0x01]
mov dword ptr [rbp-0x30], ecx
cmp edi, dword ptr [r15+0x08]
- jae G_M41722_IG42
+ jae G_M41722_IG43
movzx rdx, word ptr [r15+2*rdi+0x0C]
mov dword ptr [rbp-0x34], edx
mov r8d, 1
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M41722_IG47
+ je G_M41722_IG48
mov esi, dword ptr [r14+0x10]
mov r9d, esi
cmp dword ptr [rdi+0x08], r9d
- jbe SHORT G_M41722_IG16
+ jbe SHORT G_M41722_IG17
inc esi
mov dword ptr [r14+0x10], esi
mov esi, r9d
movzx rdi, word ptr [rdi+2*rsi+0x0C]
; gcrRegs -[rdi]
- jmp SHORT G_M41722_IG17
+ jmp SHORT G_M41722_IG18
;; size=177 bbWeight=2 PerfScore 80.00
-G_M41722_IG16: ; bbWeight=2, gcVars=00000000000000000000000000000002 {V11}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M41722_IG17: ; bbWeight=2, gcVars=00000000000000000000000000000002 {V11}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
mov edi, -1
;; size=5 bbWeight=2 PerfScore 0.50
-G_M41722_IG17: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG18: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
movzx r9, di
;; size=4 bbWeight=2 PerfScore 0.50
-G_M41722_IG18: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG19: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
movsx rdi, r9w
cmp edi, -1
- jne SHORT G_M41722_IG20
+ jne SHORT G_M41722_IG21
;; size=9 bbWeight=16 PerfScore 24.00
-G_M41722_IG19: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG20: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
xor r8d, r8d
mov dword ptr [rbp-0x3C], r8d
mov r8d, dword ptr [rbp-0x3C]
;; size=11 bbWeight=8 PerfScore 18.00
-G_M41722_IG20: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG21: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rax+0x18]
mov rsi, gword ptr [rax+0x08]
; gcrRegs +[rsi]
cmp dword ptr [rsi+0x08], edi
- jbe SHORT G_M41722_IG22
+ jbe SHORT G_M41722_IG23
;; size=12 bbWeight=16 PerfScore 128.00
-G_M41722_IG21: ; bbWeight=8, gcrefRegs=C049 {rax rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG22: ; bbWeight=8, gcrefRegs=C049 {rax rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, edi
mov word ptr [rsi+2*rdi+0x10], r9w
inc dword ptr [rax+0x18]
- jmp SHORT G_M41722_IG23
+ jmp SHORT G_M41722_IG24
;; size=13 bbWeight=8 PerfScore 50.00
-G_M41722_IG22: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG23: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov dword ptr [rbp-0x3C], r8d
mov rdi, rax
@@ -400,31 +402,31 @@ G_M41722_IG22: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=
; gcrRegs +[rax]
mov r8d, dword ptr [rbp-0x3C]
;; size=24 bbWeight=8 PerfScore 52.00
-G_M41722_IG23: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG24: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M41722_IG47
+ je G_M41722_IG48
mov esi, dword ptr [r14+0x10]
cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M41722_IG25
+ jbe SHORT G_M41722_IG26
;; size=22 bbWeight=16 PerfScore 148.00
-G_M41722_IG24: ; bbWeight=8, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG25: ; bbWeight=8, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, esi
movzx rsi, word ptr [rdi+2*rsi+0x0C]
- jmp SHORT G_M41722_IG26
+ jmp SHORT G_M41722_IG27
;; size=9 bbWeight=8 PerfScore 34.00
-G_M41722_IG25: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M41722_IG26: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov esi, -1
;; size=5 bbWeight=8 PerfScore 2.00
-G_M41722_IG26: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG27: ; bbWeight=16, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x54], esi
movzx r9, si
cmp r9d, 256
- jb SHORT G_M41722_IG28
+ jb SHORT G_M41722_IG29
;; size=16 bbWeight=16 PerfScore 40.00
-G_M41722_IG27: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG28: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x3C], r8d
mov dword ptr [rbp-0x38], r9d
mov edi, r9d
@@ -435,30 +437,30 @@ G_M41722_IG27: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=
mov rax, gword ptr [rbp-0x78]
; gcrRegs +[rax]
mov r9d, dword ptr [rbp-0x38]
- jne SHORT G_M41722_IG30
+ jne SHORT G_M41722_IG31
mov r8d, dword ptr [rbp-0x3C]
- jmp SHORT G_M41722_IG29
+ jmp SHORT G_M41722_IG30
;; size=35 bbWeight=8 PerfScore 92.00
-G_M41722_IG28: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG29: ; bbWeight=8, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
...
+0 (0.00%) : 9879.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -79,12 +79,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M44603_IG12
+ jne SHORT G_M44603_IG10
;; size=10 bbWeight=2 PerfScore 8.50
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M44603_IG10
- ;; size=2 bbWeight=4 PerfScore 8.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
+ jmp SHORT G_M44603_IG12
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx]
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
@@ -111,7 +113,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-Total bytes of code 117, prolog size 15, PerfScore 58.75, instruction count 43, allocated bytes for code 117 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 117, prolog size 15, PerfScore 51.75, instruction count 43, allocated bytes for code 117 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
+9 (+0.41%) : 44401.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
@@ -42,7 +42,7 @@
;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V32 tmp26 [V32,T33] ( 3, 6 ) int -> rdx "Inline return value spill temp"
; V33 tmp27 [V33,T34] ( 4, 8 ) int -> rax "Inline stloc first use temp"
-; V34 tmp28 [V34,T47] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
+; V34 tmp28 [V34,T47] ( 3, 3 ) byref -> r13 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp30 [V36,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -66,7 +66,7 @@
; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> [rbp-0x90] class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount>
;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount>
;* V57 tmp51 [V57,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T48] ( 3, 3 ) byref -> rbx "Inlining Arg"
+; V58 tmp52 [V58,T48] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V60 tmp54 [V60,T57] ( 2, 2 ) int -> r14 "Single return block return value"
; V61 tmp55 [V61,T22] ( 6, 13 ) int -> r15 "V01.[000..004)"
@@ -108,7 +108,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M55237_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r15d, dword ptr [rbp-0x30]
cmp byte ptr [rbx+0x4F], 0
- jne G_M55237_IG97
+ jne G_M55237_IG98
call <unknown method>
; gcr arg pop 0
mov r14d, eax
@@ -117,7 +117,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=32 bbWeight=1 PerfScore 10.25
G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, dword ptr [rbx+0x44]
- je G_M55237_IG98
+ je G_M55237_IG99
lea r13, bword ptr [rbx+0x50]
; byrRegs +[r13]
mov rdi, r13
@@ -139,11 +139,11 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
call rax
; gcr arg pop 0
cmp dword ptr [rax+0x10], 4
- jl G_M55237_IG99
+ jl G_M55237_IG100
mov rdi, qword ptr [rax+0x18]
mov rdi, qword ptr [rdi+0x20]
test rdi, rdi
- je G_M55237_IG99
+ je G_M55237_IG100
mov r12, bword ptr [rdi]
; byrRegs +[r12]
add r12, 16
@@ -239,7 +239,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=3000
; gcrRegs +[rax]
mov edi, dword ptr [rax+0x18]
test edi, edi
- jg G_M55237_IG100
+ jg G_M55237_IG101
cmp r14d, dword ptr [rbx+0x40]
jne G_M55237_IG35
inc edi
@@ -285,11 +285,11 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
call rax
; gcr arg pop 0
cmp dword ptr [rax+0x10], 4
- jl G_M55237_IG101
+ jl G_M55237_IG102
mov rdi, qword ptr [rax+0x18]
mov rdi, qword ptr [rdi+0x20]
test rdi, rdi
- je G_M55237_IG101
+ je G_M55237_IG102
mov r12, bword ptr [rdi]
; byrRegs +[r12]
add r12, 16
@@ -496,7 +496,7 @@ G_M55237_IG35: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
;; size=11 bbWeight=0.50 PerfScore 0.75
G_M55237_IG36: ; bbWeight=4, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r12 r13}, byref, isz
cmp dword ptr [rbx+0x48], 0xD1FFAB1E
- jb G_M55237_IG94
+ jb G_M55237_IG90
cmp r15d, -1
je SHORT G_M55237_IG38
;; size=19 bbWeight=4 PerfScore 21.00
@@ -515,9 +515,9 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r1
; gcrRegs -[rax]
; gcr arg pop 0
sub eax, dword ptr [rbp-0x2C]
- js G_M55237_IG90
+ js G_M55237_IG91
cmp eax, r15d
- jge G_M55237_IG90
+ jge G_M55237_IG91
mov edx, r15d
sub edx, eax
mov rax, gword ptr [rbp-0x60]
@@ -526,7 +526,7 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r1
G_M55237_IG40: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r12 r13}, gcvars, byref
; GC ptr vars -{V02}
test edx, edx
- je G_M55237_IG90
+ je G_M55237_IG91
;; size=8 bbWeight=2 PerfScore 2.50
G_M55237_IG41: ; bbWeight=4, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r12 r13}, byref, isz
cmp dword ptr [rbp-0x34], 20
@@ -937,7 +937,7 @@ G_M55237_IG78: ; bbWeight=4, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=3000
; gcr arg pop 0
mov r14d, eax
test r14d, r14d
- je G_M55237_IG92
+ je G_M55237_IG93
mov rax, gword ptr [rbp-0x60]
; gcrRegs +[rax]
mov rdi, qword ptr [rax+0x10]
@@ -1044,15 +1044,54 @@ G_M55237_IG88: ; bbWeight=2, gcrefRegs=0108 {rbx r8}, byrefRegs=3000 {r12
;; size=11 bbWeight=2 PerfScore 4.50
G_M55237_IG89: ; bbWeight=4, gcrefRegs=0009 {rax rbx}, byrefRegs=3000 {r12 r13}, byref
; gcrRegs -[r8]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov rax, rdi
jmp G_M55237_IG36
- ;; size=5 bbWeight=4 PerfScore 8.00
-G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
- ; gcrRegs -[rax rbx]
+ ;; size=11 bbWeight=4 PerfScore 10.00
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=2000 {r13}, byref, isz
+ ; gcrRegs -[rdi]
; byrRegs -[r12]
+ inc dword ptr [rbx+0x48]
+ inc dword ptr [rax+0x18]
+ jmp SHORT G_M55237_IG95
+ ;; size=8 bbWeight=0.50 PerfScore 4.00
+G_M55237_IG91: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+ ; gcrRegs -[rax rbx]
+ cmp dword ptr [r13], 0
+ jne SHORT G_M55237_IG92
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ ;; size=33 bbWeight=0.50 PerfScore 3.75
+G_M55237_IG92: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+ xor eax, eax
+ mov dword ptr [r13], eax
+ ;; size=6 bbWeight=0.50 PerfScore 0.62
+G_M55237_IG93: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r13]
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M55237_IG94: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 168
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=18 bbWeight=0.50 PerfScore 2.12
+G_M55237_IG95: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref, isz
+ ; byrRegs +[r13]
mov rbx, r13
; byrRegs +[rbx]
cmp dword ptr [rbx], 0
- jne SHORT G_M55237_IG91
+ jne SHORT G_M55237_IG96
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -1062,49 +1101,12 @@ G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13},
; byrRegs -[r13]
; gcr arg pop 0
;; size=34 bbWeight=0.50 PerfScore 3.88
-G_M55237_IG91: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- xor eax, eax
- mov dword ptr [rbx], eax
- ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M55237_IG92: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M55237_IG93: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 168
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M55237_IG94: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=2000 {r13}, gcvars, byref, isz
- ; gcrRegs +[rax rbx]
- ; byrRegs +[r13]
- inc dword ptr [rbx+0x48]
- inc dword ptr [rax+0x18]
- mov rbx, r13
- ; gcrRegs -[rbx]
- ; byrRegs +[rbx]
- cmp dword ptr [rbx], 0
- jne SHORT G_M55237_IG95
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rax rsi rdi]
- ; byrRegs -[r13]
- ; gcr arg pop 0
- ;; size=40 bbWeight=0.50 PerfScore 6.88
-G_M55237_IG95: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55237_IG96: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax
mov dword ptr [rbx], eax
movzx rax, r14b
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG96: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG97: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 168
pop rbx
pop r12
@@ -1114,7 +1116,7 @@ G_M55237_IG96: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M55237_IG97: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG98: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
; byrRegs -[rbx]
mov rdi, rbx
@@ -1124,7 +1126,7 @@ G_M55237_IG97: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M55237_IG98: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG99: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Threading.LockRecursionException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -1153,7 +1155,7 @@ G_M55237_IG98: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=56 bbWeight=0 PerfScore 0.00
-G_M55237_IG99: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
+G_M55237_IG100: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
; gcrRegs +[rbx]
; byrRegs +[r13]
mov edi, 4
...
+14 (+3.47%) : 45842.dasm - System.String:Concat(System.String[]):System.String (Tier1)
@@ -12,7 +12,7 @@
; V01 loc0 [V01,T13] ( 5, 28 ) long -> rdi
; V02 loc1 [V02,T14] ( 5, 24 ) int -> r14
; V03 loc2 [V03,T12] ( 5, 28.50) ref -> r13 class-hnd exact <System.String>
-; V04 loc3 [V04,T04] ( 8, 50 ) int -> r12
+; V04 loc3 [V04,T05] ( 8, 50 ) int -> r12
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax
; V06 loc5 [V06,T08] ( 3, 40 ) ref -> rcx class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> [rbp-0x2C]
@@ -33,9 +33,9 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T18] ( 4, 5 ) ref -> rax "Single return block return value"
; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V25 cse0 [V25,T05] ( 6, 49 ) int -> r15 "CSE - aggressive"
+; V25 cse0 [V25,T03] ( 8, 57 ) int -> r15 "CSE - aggressive"
; V26 cse1 [V26,T07] ( 5, 40 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V27 cse2 [V27,T03] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
+; V27 cse2 [V27,T04] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -58,10 +58,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp r15d, 1
jle G_M46295_IG16
;; size=23 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor edi, edi
xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test r15d, r15d
+ jle SHORT G_M46295_IG07
+ ;; size=9 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ecx, eax
mov rcx, gword ptr [rbx+8*rcx+0x10]
@@ -94,7 +96,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r12d, r12d
xor eax, eax
; gcrRegs -[rax]
- ;; size=41 bbWeight=4 PerfScore 19.00
+ test r15d, r15d
+ jle G_M46295_IG15
+ ;; size=50 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x2C], eax
mov edi, eax
@@ -249,7 +253,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 403, prolog size 22, PerfScore 585.25, instruction count 115, allocated bytes for code 403 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 417, prolog size 22, PerfScore 595.25, instruction count 119, allocated bytes for code 417 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================
Unwind Info:
+48 (+9.62%) : 4262.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span
1[int],int,System.Comparison`1[int]) (Tier1)
@@ -10,10 +10,10 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
; V01 arg1 [V01,T03] ( 7, 19 ) int -> r15
-; V02 arg2 [V02,T04] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> r12
+; V02 arg2 [V02,T05] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]>
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> r12
; V04 loc1 [V04,T09] ( 3, 12 ) int -> [rbp-0x2C] spill-single-def
-; V05 loc2 [V05,T05] ( 4, 16 ) int -> rdi
+; V05 loc2 [V05,T06] ( 4, 16 ) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -44,13 +44,13 @@
;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T00] ( 4, 32 ) int -> r12 "Inlining Arg"
+; V36 tmp30 [V36,T01] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V38 tmp32 [V38,T06] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V38 tmp32 [V38,T07] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V41 tmp35 [V41,T02] ( 29, 22 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp36 [V42,T07] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T08] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
@@ -79,7 +79,7 @@
; V68 tmp62 [V68,T15] ( 2, 2 ) int -> rsi "argument with side effect"
; V69 tmp63 [V69,T16] ( 2, 2 ) int -> rsi "argument with side effect"
; V70 tmp64 [V70,T17] ( 2, 2 ) int -> rsi "argument with side effect"
-; V71 cse0 [V71,T08] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -138,16 +138,28 @@ G_M15629_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
G_M15629_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov r12d, r13d
cmp r13d, 1
- jle G_M15629_IG20
+ jle G_M15629_IG23
;; size=13 bbWeight=1 PerfScore 1.50
G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
cmp r12d, 16
- jle G_M15629_IG13
+ jle G_M15629_IG15
test r15d, r15d
- je G_M15629_IG19
+ je G_M15629_IG21
dec r15d
cmp r12d, r13d
- ja G_M15629_IG23
+ ja G_M15629_IG26
+ test r12d, r12d
+ jge SHORT G_M15629_IG11
+ ;; size=36 bbWeight=4 PerfScore 21.00
+G_M15629_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d
mov rdi, rbx
; byrRegs +[rdi]
@@ -164,15 +176,15 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx},
add rsi, rcx
mov ecx, r13d
cmp rsi, rcx
- ja G_M15629_IG23
+ ja G_M15629_IG26
lea rcx, bword ptr [rbx+4*rdi]
; byrRegs +[rcx]
mov bword ptr [rbp-0x38], rcx
; GC ptr vars +{V38}
test r12d, r12d
- jge SHORT G_M15629_IG11
- ;; size=88 bbWeight=4 PerfScore 58.00
-G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M15629_IG13
+ ;; size=57 bbWeight=4 PerfScore 42.00
+G_M15629_IG12: ; bbWeight=2, gcVars=0000000000000080 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -181,7 +193,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=400
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r12d
@@ -196,16 +208,16 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx},
cmp r12d, 1
jg G_M15629_IG09
;; size=33 bbWeight=4 PerfScore 28.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
; byrRegs -[rbx]
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
; byrRegs +[rbx]
cmp r12d, 2
- jne SHORT G_M15629_IG14
+ jne SHORT G_M15629_IG16
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov rdi, gword ptr [r14+0x08]
@@ -213,17 +225,17 @@ G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi r14]
test eax, eax
- jle G_M15629_IG20
+ jle G_M15629_IG23
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x04], esi
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=42 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
cmp r12d, 3
- jne SHORT G_M15629_IG17
+ jne SHORT G_M15629_IG19
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov rdi, gword ptr [r14+0x08]
@@ -231,29 +243,29 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M15629_IG15
+ jle SHORT G_M15629_IG17
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x04], esi
;; size=33 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx]
cmp r13d, 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
mov edx, dword ptr [rbx+0x08]
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
call [r14+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x08]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x08], esi
;; size=37 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx+0x04]
mov edx, dword ptr [rbx+0x08]
mov rdi, gword ptr [r14+0x08]
@@ -261,19 +273,19 @@ G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi r14]
test eax, eax
- jle SHORT G_M15629_IG20
+ jle SHORT G_M15629_IG23
mov edi, dword ptr [rbx+0x04]
mov esi, dword ptr [rbx+0x08]
mov dword ptr [rbx+0x04], esi
mov dword ptr [rbx+0x08], edi
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=32 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
test r12d, r12d
- jge SHORT G_M15629_IG18
+ jge SHORT G_M15629_IG20
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -281,7 +293,7 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d
mov rdi, rbx
; byrRegs +[rdi]
@@ -290,13 +302,23 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])]
; gcrRegs -[rdx r14]
; byrRegs -[rbx rdi]
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
; byrRegs +[rbx]
cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
+ test r12d, r12d
+ jge SHORT G_M15629_IG22
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=29 bbWeight=0.50 PerfScore 3.00
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, rbx
; byrRegs +[rdi]
mov esi, r12d
@@ -305,11 +327,11 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])]
; gcrRegs -[rdx r14]
; byrRegs -[rbx rdi]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M15629_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 1.88
+G_M15629_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
...
coreclr_tests.run.linux.x64.checked.mch
-10 (-3.85%) : 454066.dasm - System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
@@ -35,8 +35,8 @@
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x8)" P-INDEP
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref "field V19.key (fldOffset=0x0)" P-INDEP
;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V19.value (fldOffset=0x8)" P-INDEP
-; V26 tmp22 [V26,T02] ( 5, 7.03) ref -> r15 single-def "V01.[000..008)"
-; V27 tmp23 [V27,T13] ( 3, 3.44) int -> r14 "V01.[008..012)"
+; V26 tmp22 [V26,T02] ( 4, 7.03) ref -> r15 single-def "V01.[000..008)"
+; V27 tmp23 [V27,T13] ( 2, 3.44) int -> r14 "V01.[008..012)"
; V28 tmp24 [V28,T00] ( 4, 5.73) int -> registers "V01.[012..016)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "V01.[016..020)"
; V30 tmp26 [V30,T11] ( 4, 1.14) ref -> r12 "V01.[024..032)"
@@ -69,7 +69,7 @@ G_M2401_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
mov r15, gword ptr [rbx+0x20]
; gcrRegs +[r15]
test r15, r15
- je SHORT G_M2401_IG10
+ je SHORT G_M2401_IG09
mov r14d, dword ptr [r15+0x44]
xor r13d, r13d
jmp SHORT G_M2401_IG04
@@ -77,27 +77,25 @@ G_M2401_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
G_M2401_IG03: ; bbWeight=1.44, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r12]
cmp edi, 2
- jg SHORT G_M2401_IG12
+ jg SHORT G_M2401_IG11
;; size=5 bbWeight=1.44 PerfScore 1.81
G_M2401_IG04: ; bbWeight=2.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r12]
cmp r14d, dword ptr [r15+0x44]
- jne SHORT G_M2401_IG08
- ;; size=6 bbWeight=2.44 PerfScore 9.78
-G_M2401_IG05: ; bbWeight=2.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jne SHORT G_M2401_IG07
mov edi, dword ptr [r15+0x38]
- ;; size=4 bbWeight=2.44 PerfScore 4.89
-G_M2401_IG06: ; bbWeight=2.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=2.44 PerfScore 14.67
+G_M2401_IG05: ; bbWeight=2.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, edi
- jae SHORT G_M2401_IG10
+ jae SHORT G_M2401_IG09
;; size=5 bbWeight=2.44 PerfScore 3.06
-G_M2401_IG07: ; bbWeight=1.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M2401_IG06: ; bbWeight=1.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [r15+0x10]
; gcrRegs +[rsi]
lea eax, [r13+0x01]
mov r12d, eax
cmp r13d, dword ptr [rsi+0x08]
- jae SHORT G_M2401_IG09
+ jae SHORT G_M2401_IG08
mov eax, r13d
lea rax, [rax+2*rax]
lea rsi, bword ptr [rsi+8*rax+0x10]
@@ -105,27 +103,27 @@ G_M2401_IG07: ; bbWeight=1.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {
; byrRegs +[rsi]
cmp dword ptr [rsi+0x0C], -1
mov r13d, r12d
- jl SHORT G_M2401_IG06
+ jl SHORT G_M2401_IG05
mov r12, gword ptr [rsi]
; gcrRegs +[r12]
mov edi, dword ptr [rsi+0x10]
jmp SHORT G_M2401_IG03
;; size=46 bbWeight=1.14 PerfScore 21.39
-G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r12 r15]
; byrRegs -[rsi]
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M2401_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M2401_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2401_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M2401_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M2401_IG10: ; bbWeight=0, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -135,7 +133,7 @@ G_M2401_IG11: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-G_M2401_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M2401_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r12 r15]
mov rdi, gword ptr [rbx+0x40]
; gcrRegs +[rdi]
@@ -154,10 +152,10 @@ G_M2401_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=9008 {r
mov rdx, gword ptr [rbx+0x30]
; gcrRegs +[rdx]
test rdx, rdx
- jne SHORT G_M2401_IG13
+ jne SHORT G_M2401_IG12
mov rdx, gword ptr [rbx+0x38]
;; size=42 bbWeight=0 PerfScore 0.00
-G_M2401_IG13: ; bbWeight=0, gcrefRegs=900C {rdx rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M2401_IG12: ; bbWeight=0, gcrefRegs=900C {rdx rbx r12 r15}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -192,12 +190,10 @@ G_M2401_IG13: ; bbWeight=0, gcrefRegs=900C {rdx rbx r12 r15}, byrefRegs=0
call [System.Linq.Expressions.Compiler.CompilerScope:CacheBoxToLocal(System.Linq.Expressions.Compiler.LambdaCompiler,System.Linq.Expressions.ParameterExpression):this]
; gcrRegs -[rdx rsi rdi r12]
; gcr arg pop 0
- cmp r14d, dword ptr [r15+0x44]
- je G_M2401_IG05
- jmp G_M2401_IG08
- ;; size=87 bbWeight=0 PerfScore 0.00
+ jmp G_M2401_IG04
+ ;; size=77 bbWeight=0 PerfScore 0.00
-Total bytes of code 260, prolog size 19, PerfScore 56.17, instruction count 80, allocated bytes for code 260 (MethodHash=9d11f69e) for method System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
+Total bytes of code 250, prolog size 19, PerfScore 56.17, instruction count 78, allocated bytes for code 250 (MethodHash=9d11f69e) for method System.Linq.Expressions.Compiler.CompilerScope:EmitCachedVariables():this (Tier1)
; ============================================================
Unwind Info:
-11 (-3.35%) : 288020.dasm - CGRecurse.RecursiveAAA:A() (FullOpts)
@@ -30,12 +30,12 @@
;* V19 tmp19 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp20 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp21 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp22 [V22,T13] ( 2, 7.59) byref -> rax "Inlining Arg"
-; V23 tmp23 [V23,T14] ( 2, 7.59) byref -> rcx "Inlining Arg"
+; V22 tmp22 [V22,T13] ( 2, 7.59) byref -> rdi "Inlining Arg"
+; V23 tmp23 [V23,T14] ( 2, 7.59) byref -> rsi "Inlining Arg"
;* V24 tmp24 [V24 ] ( 0, 0 ) long -> zero-ref "spilling arg"
-; V25 cse0 [V25,T06] ( 3, 12 ) int -> rdi "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 3, 12 ) int -> rax "CSE - aggressive"
; V26 cse1 [V26,T03] ( 3, 20 ) int -> rax "CSE - aggressive"
-; V27 cse2 [V27,T01] ( 7, 29 ) long -> r14 "CSE - aggressive"
+; V27 cse2 [V27,T01] ( 7, 29 ) long -> rbx "CSE - aggressive"
; V28 cse3 [V28,T02] ( 3, 24 ) long -> rbx "CSE - aggressive"
; V29 cse4 [V29,T11] ( 5, 9.45) int -> r14 "CSE - moderate"
; V30 cse5 [V30,T04] ( 9, 17.07) ref -> rsi multi-def "CSE - aggressive"
@@ -57,44 +57,34 @@ G_M53652_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r15, gword ptr [rbx]
; gcrRegs +[r15]
test r15, r15
- je SHORT G_M53652_IG05
+ je SHORT G_M53652_IG08
;; size=18 bbWeight=8 PerfScore 28.00
G_M53652_IG03: ; bbWeight=1.88, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
- je SHORT G_M53652_IG05
+ je SHORT G_M53652_IG08
;; size=9 bbWeight=1.88 PerfScore 6.10
G_M53652_IG04: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov r13d, r14d
lea edi, [r13+0x01]
test edi, edi
- jl G_M53652_IG19
- jmp SHORT G_M53652_IG06
- ;; size=17 bbWeight=1.90 PerfScore 7.59
-G_M53652_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- jmp G_M53652_IG13
- ;; size=15 bbWeight=2 PerfScore 4.50
-G_M53652_IG06: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi] +[r15]
+ jl G_M53652_IG18
call <unknown method>
; gcrRegs +[rax]
mov r12, rax
; gcrRegs +[r12]
test r12, r12
- jne SHORT G_M53652_IG07
+ jne SHORT G_M53652_IG05
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
- ;; size=32 bbWeight=1.90 PerfScore 11.38
-G_M53652_IG07: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=47 bbWeight=1.90 PerfScore 15.17
+G_M53652_IG05: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r12+0x08], r14d
- jge SHORT G_M53652_IG08
+ jge SHORT G_M53652_IG06
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -102,7 +92,7 @@ G_M53652_IG07: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=26 bbWeight=1.90 PerfScore 14.22
-G_M53652_IG08: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
+G_M53652_IG06: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, bword ptr [r12+0x0C]
; byrRegs +[rdi]
lea rsi, bword ptr [r15+0x0C]
@@ -110,23 +100,32 @@ G_M53652_IG08: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0000
mov edx, r14d
add rdx, rdx
cmp rdx, 2
- jne SHORT G_M53652_IG10
+ jne SHORT G_M53652_IG09
;; size=21 bbWeight=1.90 PerfScore 5.22
-G_M53652_IG09: ; bbWeight=0.95, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M53652_IG07: ; bbWeight=0.95, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[r15]
movzx rdx, word ptr [rsi]
mov word ptr [rdi], dx
- jmp SHORT G_M53652_IG11
+ jmp SHORT G_M53652_IG10
;; size=8 bbWeight=0.95 PerfScore 4.74
-G_M53652_IG10: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, byref
+G_M53652_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r12]
+ ; byrRegs -[rsi rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ jmp SHORT G_M53652_IG12
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M53652_IG09: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs -[rsi] +[r12]
+ ; byrRegs +[rsi rdi]
call [<unknown method>]
; byrRegs -[rsi rdi]
;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M53652_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
+G_M53652_IG10: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [r12+0x08]
sub edi, r13d
test edi, edi
- jg SHORT G_M53652_IG12
+ jg SHORT G_M53652_IG11
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -134,44 +133,45 @@ G_M53652_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=31 bbWeight=1.90 PerfScore 13.28
-G_M53652_IG12: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
- movsxd rax, r13d
- lea rax, bword ptr [r12+2*rax+0x0C]
- ; byrRegs +[rax]
- mov rcx, 0xD1FFAB1E
- ; byrRegs +[rcx]
- movzx rdx, word ptr [rcx]
- mov word ptr [rax], dx
+G_M53652_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+ movsxd rdi, r13d
+ lea rdi, bword ptr [r12+2*rdi+0x0C]
+ ; byrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; byrRegs +[rsi]
+ movzx rax, word ptr [rsi]
+ mov word ptr [rdi], ax
mov rsi, r12
; gcrRegs +[rsi]
+ ; byrRegs -[rsi]
;; size=27 bbWeight=1.90 PerfScore 9.01
-G_M53652_IG13: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M53652_IG12: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r12]
- ; byrRegs -[rax rcx]
+ ; byrRegs -[rdi]
mov rdi, rbx
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
- mov r14, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov eax, dword ptr [r14]
+ mov rbx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov eax, dword ptr [rbx]
cmp eax, 1
- je SHORT G_M53652_IG15
- ;; size=26 bbWeight=8 PerfScore 38.00
-G_M53652_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M53652_IG14
+ ;; size=25 bbWeight=8 PerfScore 38.00
+G_M53652_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc eax
- mov dword ptr [r14], eax
+ mov dword ptr [rbx], eax
call [CGRecurse.RecursiveAAA:A()]
- mov edi, dword ptr [r14]
- cmp edi, 1
- je SHORT G_M53652_IG17
- inc edi
- mov dword ptr [r14], edi
+ mov eax, dword ptr [rbx]
+ cmp eax, 1
+ je SHORT G_M53652_IG16
+ inc eax
+ mov dword ptr [rbx], eax
jmp G_M53652_IG02
- ;; size=29 bbWeight=4 PerfScore 43.00
-G_M53652_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor edi, edi
- mov dword ptr [r14], edi
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M53652_IG16: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=26 bbWeight=4 PerfScore 43.00
+G_M53652_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ mov dword ptr [rbx], eax
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M53652_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -181,11 +181,11 @@ G_M53652_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M53652_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor edi, edi
- mov dword ptr [r14], edi
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M53652_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M53652_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ mov dword ptr [rbx], eax
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M53652_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -195,12 +195,12 @@ G_M53652_IG18: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M53652_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53652_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 328, prolog size 16, PerfScore 203.72, instruction count 94, allocated bytes for code 328 (MethodHash=292d2e6b) for method CGRecurse.RecursiveAAA:A() (FullOpts)
+Total bytes of code 317, prolog size 16, PerfScore 199.93, instruction count 93, allocated bytes for code 317 (MethodHash=292d2e6b) for method CGRecurse.RecursiveAAA:A() (FullOpts)
; ============================================================
Unwind Info:
-10 (-2.68%) : 224167.dasm - MSjumpscs.VT:ToStringHelper():System.String:this (FullOpts)
@@ -33,12 +33,12 @@
;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp22 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp23 [V25,T11] ( 2, 7.59) byref -> rax "Inlining Arg"
-; V26 tmp24 [V26,T12] ( 2, 7.59) byref -> rdi "Inlining Arg"
+; V25 tmp23 [V25,T11] ( 2, 7.59) byref -> rdi "Inlining Arg"
+; V26 tmp24 [V26,T12] ( 2, 7.59) byref -> rsi "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) long -> zero-ref "spilling arg"
; V28 cse0 [V28,T09] ( 5, 9.45) int -> r14 "CSE - aggressive"
; V29 cse1 [V29,T03] ( 9, 17.07) ref -> rsi multi-def "CSE - aggressive"
-; V30 rat0 [V30,T00] ( 3, 48 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; V30 rat0 [V30,T00] ( 3, 48 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
@@ -59,35 +59,25 @@ G_M38274_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov r15, gword ptr [rbx]
; gcrRegs +[r15]
test r15, r15
- je SHORT G_M38274_IG05
+ je SHORT G_M38274_IG08
;; size=8 bbWeight=8 PerfScore 26.00
G_M38274_IG03: ; bbWeight=1.88, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
- je SHORT G_M38274_IG05
+ je SHORT G_M38274_IG08
;; size=9 bbWeight=1.88 PerfScore 6.10
G_M38274_IG04: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
mov r13d, r14d
lea edi, [r13+0x10]
test edi, edi
- jl G_M38274_IG20
- jmp SHORT G_M38274_IG06
- ;; size=17 bbWeight=1.90 PerfScore 7.59
-G_M38274_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[r15]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- jmp G_M38274_IG13
- ;; size=15 bbWeight=2 PerfScore 4.50
-G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rsi] +[r15]
+ jl G_M38274_IG19
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
mov r12, rax
; gcrRegs +[r12]
test r12, r12
- jne SHORT G_M38274_IG07
+ jne SHORT G_M38274_IG05
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -95,10 +85,10 @@ G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
- ;; size=32 bbWeight=1.90 PerfScore 11.38
-G_M38274_IG07: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=47 bbWeight=1.90 PerfScore 15.17
+G_M38274_IG05: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [r12+0x08], r14d
- jge SHORT G_M38274_IG08
+ jge SHORT G_M38274_IG06
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -107,7 +97,7 @@ G_M38274_IG07: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=26 bbWeight=1.90 PerfScore 14.22
-G_M38274_IG08: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008 {rbx}, byref, isz
lea rdi, bword ptr [r12+0x0C]
; byrRegs +[rdi]
lea rsi, bword ptr [r15+0x0C]
@@ -115,24 +105,33 @@ G_M38274_IG08: ; bbWeight=1.90, gcrefRegs=9000 {r12 r15}, byrefRegs=0008
mov edx, r14d
add rdx, rdx
cmp rdx, 2
- jne SHORT G_M38274_IG10
+ jne SHORT G_M38274_IG09
;; size=21 bbWeight=1.90 PerfScore 5.22
-G_M38274_IG09: ; bbWeight=0.95, gcrefRegs=1000 {r12}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M38274_IG07: ; bbWeight=0.95, gcrefRegs=1000 {r12}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[r15]
movzx rdx, word ptr [rsi]
mov word ptr [rdi], dx
- jmp SHORT G_M38274_IG11
+ jmp SHORT G_M38274_IG10
;; size=8 bbWeight=0.95 PerfScore 4.74
-G_M38274_IG10: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=00C8 {rbx rsi rdi}, byref
+G_M38274_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[r12]
+ ; byrRegs -[rsi rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ jmp SHORT G_M38274_IG12
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M38274_IG09: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=00C8 {rbx rsi rdi}, byref
+ ; gcrRegs -[rsi] +[r12]
+ ; byrRegs +[rsi rdi]
call [<unknown method>]
; byrRegs -[rsi rdi]
; gcr arg pop 0
;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG10: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx}, byref, isz
mov edi, dword ptr [r12+0x08]
sub edi, r13d
cmp edi, 16
- jge SHORT G_M38274_IG12
+ jge SHORT G_M38274_IG11
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -141,46 +140,46 @@ G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=32 bbWeight=1.90 PerfScore 13.28
-G_M38274_IG12: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx}, byref
- movsxd rax, r13d
- lea rax, bword ptr [r12+2*rax+0x0C]
- ; byrRegs +[rax]
- mov rdi, 0xD1FFAB1E
+G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=1000 {r12}, byrefRegs=0008 {rbx}, byref
+ movsxd rdi, r13d
+ lea rdi, bword ptr [r12+2*rdi+0x0C]
; byrRegs +[rdi]
- vmovdqu ymm0, ymmword ptr [rdi]
- vmovdqu ymmword ptr [rax], ymm0
+ mov rsi, 0xD1FFAB1E
+ ; byrRegs +[rsi]
+ vmovdqu ymm0, ymmword ptr [rsi]
+ vmovdqu ymmword ptr [rdi], ymm0
mov rsi, r12
; gcrRegs +[rsi]
+ ; byrRegs -[rsi]
;; size=29 bbWeight=1.90 PerfScore 16.60
-G_M38274_IG13: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG12: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r12]
- ; byrRegs -[rax rdi]
+ ; byrRegs -[rdi]
mov rdi, rbx
; byrRegs +[rdi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rsi]
; byrRegs -[rdi]
- mov r12d, dword ptr [rbx+0x08]
- cmp r12d, 2
- ja SHORT G_M38274_IG19
- mov eax, r12d
+ mov eax, dword ptr [rbx+0x08]
+ cmp eax, 2
+ ja SHORT G_M38274_IG18
lea rdi, [reloc @RWD00]
mov edi, dword ptr [rdi+4*rax]
lea rcx, G_M38274_IG02
add rdi, rcx
jmp rdi
- ;; size=43 bbWeight=8 PerfScore 84.00
-G_M38274_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=8 PerfScore 82.00
+G_M38274_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax
mov dword ptr [rbx+0x08], eax
jmp G_M38274_IG02
;; size=10 bbWeight=4 PerfScore 13.00
-G_M38274_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38274_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M38274_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M38274_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -190,7 +189,7 @@ G_M38274_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M38274_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M38274_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax]
; byrRegs +[rbx]
xor edi, edi
@@ -198,7 +197,7 @@ G_M38274_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov rdi, rbx
; byrRegs +[rdi]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M38274_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M38274_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -209,7 +208,7 @@ G_M38274_IG18: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [MS_jumps_cs.VT:ToString():System.String:this]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 2.62
-G_M38274_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38274_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rbx rdi]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -228,17 +227,17 @@ G_M38274_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=35 bbWeight=0 PerfScore 0.00
-G_M38274_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38274_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M38274_IG15 - G_M38274_IG02
- dd G_M38274_IG14 - G_M38274_IG02
- dd G_M38274_IG17 - G_M38274_IG02
+RWD00 dd G_M38274_IG14 - G_M38274_IG02
+ dd G_M38274_IG13 - G_M38274_IG02
+ dd G_M38274_IG16 - G_M38274_IG02
-Total bytes of code 373, prolog size 22, PerfScore 226.69, instruction count 101, allocated bytes for code 373 (MethodHash=79da6a7d) for method MS_jumps_cs.VT:ToStringHelper():System.String:this (FullOpts)
+Total bytes of code 363, prolog size 22, PerfScore 220.89, instruction count 99, allocated bytes for code 363 (MethodHash=79da6a7d) for method MS_jumps_cs.VT:ToStringHelper():System.String:this (FullOpts)
; ============================================================
Unwind Info:
+48 (+7.06%) : 452736.dasm - System.Collections.Generic.ArraySortHelper1[System.ValueTuple
2[ushort,ushort]]:IntroSort(System.Span1[System.ValueTuple
2[ushort,ushort]],int,System.Comparison1[System.ValueTuple
2[ushort,ushort]]) (Instrumented Tier1)
@@ -10,8 +10,8 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.ValueTuple`2[ushort,ushort]]>
; V01 arg1 [V01,T04] ( 7, 8.50) int -> r14
-; V02 arg2 [V02,T02] ( 15, 9 ) ref -> r15 class-hnd single-def <System.Comparison`1[System.ValueTuple`2[ushort,ushort]]>
-; V03 loc0 [V03,T03] ( 14, 11 ) int -> r12
+; V02 arg2 [V02,T03] ( 15, 9 ) ref -> r15 class-hnd single-def <System.Comparison`1[System.ValueTuple`2[ushort,ushort]]>
+; V03 loc0 [V03,T01] ( 16, 12 ) int -> r12
; V04 loc1 [V04,T20] ( 3, 1.50) int -> [rbp-0x2C] spill-single-def
; V05 loc2 [V05,T21] ( 3, 1.50) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -49,7 +49,7 @@
; V38 tmp32 [V38,T15] ( 2, 2 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp35 [V41,T01] ( 16, 8.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp35 [V41,T02] ( 16, 8.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V42 tmp36 [V42,T05] ( 9, 6.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
@@ -99,7 +99,7 @@
; V88 cse1 [V88,T07] ( 11, 5.50) byref -> r12 multi-def "CSE - aggressive"
; V89 cse2 [V89,T09] ( 7, 3.50) byref -> r13 "CSE - moderate"
; V90 cse3 [V90,T22] ( 3, 1.50) long -> rdi "CSE - conservative"
-; V91 cse4 [V91,T00] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V91 cse4 [V91,T00] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -158,20 +158,32 @@ G_M22846_IG07: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
G_M22846_IG08: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
mov r12d, r13d
cmp r13d, 1
- jle G_M22846_IG13
+ jle G_M22846_IG15
;; size=13 bbWeight=1 PerfScore 1.50
G_M22846_IG09: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
cmp r12d, 16
- jle G_M22846_IG14
+ jle G_M22846_IG16
test r14d, r14d
- je G_M22846_IG20
+ je G_M22846_IG22
;; size=19 bbWeight=4 PerfScore 10.00
G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
dec r14d
cmp r12d, r13d
- ja G_M22846_IG24
+ ja G_M22846_IG27
+ test r12d, r12d
+ jge SHORT G_M22846_IG12
+ ;; size=32 bbWeight=0.50 PerfScore 2.00
+G_M22846_IG11: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d
mov rdi, rbx
; byrRegs +[rdi]
@@ -187,15 +199,15 @@ G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
add rsi, rdi
mov ecx, r13d
cmp rsi, rcx
- ja G_M22846_IG24
+ ja G_M22846_IG27
lea rcx, bword ptr [rbx+4*rdi]
; byrRegs +[rcx]
mov bword ptr [rbp-0x38], rcx
; GC ptr vars +{V38}
test r12d, r12d
- jge SHORT G_M22846_IG12
- ;; size=82 bbWeight=0.50 PerfScore 6.50
-G_M22846_IG11: ; bbWeight=2, gcVars=0000000000008000 {V38}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M22846_IG14
+ ;; size=55 bbWeight=0.50 PerfScore 5.12
+G_M22846_IG13: ; bbWeight=2, gcVars=0000000000008000 {V38}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -204,7 +216,7 @@ G_M22846_IG11: ; bbWeight=2, gcVars=0000000000008000 {V38}, gcrefRegs=800
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=2 PerfScore 7.00
-G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r12d
@@ -219,18 +231,18 @@ G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
cmp r12d, 1
jg G_M22846_IG09
;; size=33 bbWeight=0.50 PerfScore 3.50
-G_M22846_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
; byrRegs -[rbx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- jmp G_M22846_IG21
+ jmp G_M22846_IG24
;; size=20 bbWeight=0.50 PerfScore 1.62
-G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r15]
; byrRegs +[rbx]
cmp r12d, 2
- jne SHORT G_M22846_IG15
+ jne SHORT G_M22846_IG17
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
mov r14, rbx
@@ -244,20 +256,20 @@ G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
call [r15+0x18]<unknown method>
; gcrRegs -[rdi r15]
test eax, eax
- jle G_M22846_IG21
+ jle G_M22846_IG24
movzx rdi, word ptr [rbx]
movzx rax, word ptr [rbx+0x02]
mov ecx, dword ptr [r12]
mov dword ptr [r14], ecx
mov word ptr [r12], di
mov word ptr [r12+0x02], ax
- jmp G_M22846_IG21
+ jmp G_M22846_IG24
;; size=81 bbWeight=0.50 PerfScore 12.25
-G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r15]
; byrRegs -[r12 r14]
cmp r12d, 3
- jne G_M22846_IG18
+ jne G_M22846_IG20
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
mov r14, rbx
@@ -271,7 +283,7 @@ G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
call [r15+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M22846_IG16
+ jle SHORT G_M22846_IG18
movzx rsi, word ptr [rbx]
movzx rdx, word ptr [rbx+0x02]
mov edi, dword ptr [r12]
@@ -281,11 +293,11 @@ G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
mov word ptr [rdi], si
mov word ptr [rdi+0x02], dx
;; size=75 bbWeight=0.50 PerfScore 11.38
-G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=5008 {rbx r12 r14}, byref, isz
+G_M22846_IG18: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=5008 {rbx r12 r14}, byref, isz
; byrRegs -[rdi]
mov esi, dword ptr [r14]
cmp r13d, 2
- jbe G_M22846_IG23
+ jbe G_M22846_IG26
lea r13, bword ptr [rbx+0x08]
; byrRegs +[r13]
mov edx, dword ptr [r13]
@@ -294,7 +306,7 @@ G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=5008 {rbx
call [r15+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M22846_IG17
+ jle SHORT G_M22846_IG19
movzx rsi, word ptr [rbx]
movzx rdx, word ptr [rbx+0x02]
mov edi, dword ptr [r13]
@@ -304,7 +316,7 @@ G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=5008 {rbx
mov word ptr [rdi], si
mov word ptr [rdi+0x02], dx
;; size=57 bbWeight=0.50 PerfScore 10.62
-G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=3000 {r12 r13}, byref, isz
+G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=3000 {r12 r13}, byref, isz
; byrRegs -[rbx rdi r14]
mov esi, dword ptr [r12]
mov edx, dword ptr [r13]
@@ -313,7 +325,7 @@ G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=3000 {r12
call [r15+0x18]<unknown method>
; gcrRegs -[rdi r15]
test eax, eax
- jle G_M22846_IG21
+ jle G_M22846_IG24
mov rdi, r12
; byrRegs +[rdi]
movzx rax, word ptr [rdi]
@@ -323,17 +335,17 @@ G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=3000 {r12
mov dword ptr [r12], ecx
mov word ptr [r13], ax
mov word ptr [r13+0x02], di
- jmp SHORT G_M22846_IG21
+ jmp SHORT G_M22846_IG24
;; size=54 bbWeight=0.50 PerfScore 10.75
-G_M22846_IG18: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG20: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r15]
; byrRegs -[r12-r13] +[rbx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
cmp r12d, r13d
- ja SHORT G_M22846_IG24
+ ja SHORT G_M22846_IG27
test r12d, r12d
- jge SHORT G_M22846_IG19
+ jge SHORT G_M22846_IG21
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -341,7 +353,7 @@ G_M22846_IG18: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=44 bbWeight=0.50 PerfScore 3.62
-G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG21: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d
mov rdi, rbx
; byrRegs +[rdi]
@@ -350,15 +362,25 @@ G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
call [System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[ushort,ushort]]:InsertionSort(System.Span`1[System.ValueTuple`2[ushort,ushort]],System.Comparison`1[System.ValueTuple`2[ushort,ushort]])]
; gcrRegs -[rdx r15]
; byrRegs -[rbx rdi]
- jmp SHORT G_M22846_IG21
+ jmp SHORT G_M22846_IG24
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M22846_IG20: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M22846_IG22: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r15]
; byrRegs +[rbx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
cmp r12d, r13d
- ja SHORT G_M22846_IG24
+ ja SHORT G_M22846_IG27
+ test r12d, r12d
+ jge SHORT G_M22846_IG23
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=44 bbWeight=0.50 PerfScore 3.62
+G_M22846_IG23: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
...
+48 (+7.61%) : 324339.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span
1[uint],int) (Instrumented Tier1)
@@ -10,7 +10,7 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
; V01 arg1 [V01,T03] ( 7, 8.50) int -> r15
-; V02 loc0 [V02,T01] ( 14, 11 ) int -> r13
+; V02 loc0 [V02,T01] ( 16, 12 ) int -> r13
; V03 loc1 [V03,T10] ( 3, 1.50) int -> r12
; V04 loc2 [V04,T07] ( 9, 3.13) byref -> r14 single-def
; V05 loc3 [V05,T08] ( 9, 3.13) byref -> r13 single-def
@@ -82,7 +82,7 @@
; V71 tmp63 [V71,T15] ( 2, 1 ) byref -> rdi "field V51._reference (fldOffset=0x0)" P-INDEP
; V72 tmp64 [V72,T19] ( 2, 1 ) int -> rsi "field V51._length (fldOffset=0x8)" P-INDEP
; V73 cse0 [V73,T12] ( 3, 1.50) long -> rdi "CSE - moderate"
-; V74 cse1 [V74,T00] ( 24, 13.76) ref -> rsi multi-def "CSE - aggressive"
+; V74 cse1 [V74,T00] ( 30, 21.26) ref -> rsi multi-def "CSE - aggressive"
; V75 cse2 [V75,T20] ( 2, 1 ) int -> rdi "CSE - moderate"
; V76 cse3 [V76,T21] ( 2, 1 ) int -> rdi "CSE - moderate"
; V77 cse4 [V77,T22] ( 2, 1 ) int -> rdi "CSE - moderate"
@@ -131,20 +131,32 @@ G_M26918_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
G_M26918_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov r13d, r14d
cmp r14d, 1
- jle G_M26918_IG11
+ jle G_M26918_IG13
;; size=13 bbWeight=1 PerfScore 1.50
G_M26918_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
cmp r13d, 16
- jle G_M26918_IG12
+ jle G_M26918_IG14
test r15d, r15d
- je G_M26918_IG30
+ je G_M26918_IG32
;; size=19 bbWeight=4 PerfScore 10.00
G_M26918_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
dec r15d
cmp r13d, r14d
- ja G_M26918_IG34
+ ja G_M26918_IG37
+ test r13d, r13d
+ jge SHORT G_M26918_IG10
+ ;; size=32 bbWeight=0.50 PerfScore 2.00
+G_M26918_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M26918_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r13d
mov rdi, rbx
; byrRegs +[rdi]
@@ -157,15 +169,15 @@ G_M26918_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
add rsi, rdi
mov eax, r14d
cmp rsi, rax
- ja G_M26918_IG34
+ ja G_M26918_IG37
lea rax, bword ptr [rbx+4*rdi]
; byrRegs +[rax]
mov bword ptr [rbp-0x30], rax
; GC ptr vars +{V52}
test r13d, r13d
- jge SHORT G_M26918_IG10
- ;; size=81 bbWeight=0.50 PerfScore 6.00
-G_M26918_IG09: ; bbWeight=2, gcVars=0000000000000200 {V52}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M26918_IG12
+ ;; size=54 bbWeight=0.50 PerfScore 4.62
+G_M26918_IG11: ; bbWeight=2, gcVars=0000000000000200 {V52}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rax]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -174,7 +186,7 @@ G_M26918_IG09: ; bbWeight=2, gcVars=0000000000000200 {V52}, gcrefRegs=000
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=2 PerfScore 7.00
-G_M26918_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M26918_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x30]
; byrRegs +[rdi]
mov esi, r13d
@@ -186,29 +198,29 @@ G_M26918_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
cmp r13d, 1
jg G_M26918_IG07
;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M26918_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26918_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- jmp G_M26918_IG31
+ jmp G_M26918_IG34
;; size=20 bbWeight=0.50 PerfScore 1.62
-G_M26918_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M26918_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
cmp r13d, 2
- jne SHORT G_M26918_IG16
+ jne SHORT G_M26918_IG18
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
lea r13, bword ptr [rbx+0x04]
; byrRegs +[r13]
mov edi, dword ptr [rbx]
cmp edi, dword ptr [r13]
- jbe G_M26918_IG31
+ jbe G_M26918_IG34
;; size=37 bbWeight=0.50 PerfScore 4.50
-G_M26918_IG13: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M26918_IG15: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref, isz
cmp rbx, r13
- jne SHORT G_M26918_IG15
+ jne SHORT G_M26918_IG17
;; size=5 bbWeight=0.27 PerfScore 0.34
-G_M26918_IG14: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref
+G_M26918_IG16: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -216,34 +228,34 @@ G_M26918_IG14: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r1
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=0.27 PerfScore 0.95
-G_M26918_IG15: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref
+G_M26918_IG17: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref
mov edi, dword ptr [rbx]
mov eax, dword ptr [r13]
mov dword ptr [rbx], eax
mov dword ptr [r13], edi
- jmp G_M26918_IG31
+ jmp G_M26918_IG34
;; size=17 bbWeight=0.27 PerfScore 2.18
-G_M26918_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M26918_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[r13]
cmp r13d, 3
- jne G_M26918_IG28
+ jne G_M26918_IG30
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
cmp r14d, 2
- jbe G_M26918_IG33
+ jbe G_M26918_IG36
lea r14, bword ptr [rbx+0x08]
; byrRegs +[r14]
lea r13, bword ptr [rbx+0x04]
; byrRegs +[r13]
mov edi, dword ptr [rbx]
cmp edi, dword ptr [r13]
- jbe SHORT G_M26918_IG20
+ jbe SHORT G_M26918_IG22
;; size=51 bbWeight=0.50 PerfScore 5.38
-G_M26918_IG17: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
+G_M26918_IG19: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
cmp rbx, r13
- jne SHORT G_M26918_IG19
+ jne SHORT G_M26918_IG21
;; size=5 bbWeight=0.27 PerfScore 0.34
-G_M26918_IG18: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
+G_M26918_IG20: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -251,22 +263,22 @@ G_M26918_IG18: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r1
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=0.27 PerfScore 0.95
-G_M26918_IG19: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
+G_M26918_IG21: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
mov edi, dword ptr [rbx]
mov esi, dword ptr [r13]
mov dword ptr [rbx], esi
mov dword ptr [r13], edi
;; size=12 bbWeight=0.27 PerfScore 1.63
-G_M26918_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
+G_M26918_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
mov edi, dword ptr [rbx]
cmp edi, dword ptr [r14]
- jbe SHORT G_M26918_IG24
+ jbe SHORT G_M26918_IG26
;; size=7 bbWeight=0.50 PerfScore 3.00
-G_M26918_IG21: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
+G_M26918_IG23: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref, isz
cmp rbx, r14
- jne SHORT G_M26918_IG23
+ jne SHORT G_M26918_IG25
;; size=5 bbWeight=0.27 PerfScore 0.34
-G_M26918_IG22: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
+G_M26918_IG24: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -274,23 +286,23 @@ G_M26918_IG22: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r1
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=0.27 PerfScore 0.95
-G_M26918_IG23: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
+G_M26918_IG25: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6008 {rbx r13 r14}, byref
mov edi, dword ptr [rbx]
mov esi, dword ptr [r14]
mov dword ptr [rbx], esi
mov dword ptr [r14], edi
;; size=10 bbWeight=0.27 PerfScore 1.63
-G_M26918_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M26918_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
; byrRegs -[rbx]
mov edi, dword ptr [r13]
cmp edi, dword ptr [r14]
- jbe G_M26918_IG31
+ jbe G_M26918_IG34
;; size=13 bbWeight=0.50 PerfScore 3.00
-G_M26918_IG25: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M26918_IG27: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
cmp r13, r14
- jne SHORT G_M26918_IG27
+ jne SHORT G_M26918_IG29
;; size=5 bbWeight=0.27 PerfScore 0.34
-G_M26918_IG26: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M26918_IG28: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -298,21 +310,21 @@ G_M26918_IG26: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=0.27 PerfScore 0.95
-G_M26918_IG27: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M26918_IG29: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
mov edi, dword ptr [r13]
mov eax, dword ptr [r14]
mov dword ptr [r13], eax
mov dword ptr [r14], edi
- jmp SHORT G_M26918_IG31
+ jmp SHORT G_M26918_IG34
;; size=16 bbWeight=0.27 PerfScore 2.18
-G_M26918_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M26918_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[r13-r14] +[rbx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
cmp r13d, r14d
- ja SHORT G_M26918_IG34
+ ja SHORT G_M26918_IG37
test r13d, r13d
- jge SHORT G_M26918_IG29
+ jge SHORT G_M26918_IG31
mov rsi, 0xD1FFAB1E
...
+48 (+8.25%) : 170369.dasm - System.Collections.Generic.ArraySortHelper1[System.Numerics.Vector2]:IntroSort(System.Span
1[System.Numerics.Vector2],int,System.Comparison`1[System.Numerics.Vector2]) (FullOpts)
@@ -10,10 +10,10 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Numerics.Vector2]>
; V01 arg1 [V01,T02] ( 7, 19 ) int -> rbx
-; V02 arg2 [V02,T04] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[System.Numerics.Vector2]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> r12
+; V02 arg2 [V02,T05] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[System.Numerics.Vector2]>
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> r12
; V04 loc1 [V04,T09] ( 3, 12 ) int -> [rbp-0x2C] spill-single-def
-; V05 loc2 [V05,T05] ( 4, 16 ) int -> rdi
+; V05 loc2 [V05,T06] ( 4, 16 ) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Numerics.Vector2]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Numerics.Vector2]>
@@ -44,13 +44,13 @@
;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T00] ( 4, 32 ) int -> r12 "Inlining Arg"
+; V36 tmp30 [V36,T01] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Numerics.Vector2]>
-; V38 tmp32 [V38,T06] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V38 tmp32 [V38,T07] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp35 [V41,T03] ( 10, 12.50) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp36 [V42,T07] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V41 tmp35 [V41,T04] ( 10, 12.50) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V42 tmp36 [V42,T08] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
@@ -82,7 +82,7 @@
; V71 cse0 [V71,T13] ( 11, 5.50) byref -> rbx multi-def "CSE - moderate"
; V72 cse1 [V72,T14] ( 11, 5.50) byref -> registers multi-def "CSE - moderate"
; V73 cse2 [V73,T16] ( 7, 3.50) byref -> r13 "CSE - moderate"
-; V74 cse3 [V74,T08] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V74 cse3 [V74,T03] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -142,16 +142,28 @@ G_M41768_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15
G_M41768_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
mov r12d, r13d
cmp r13d, 1
- jle G_M41768_IG20
+ jle G_M41768_IG23
;; size=13 bbWeight=1 PerfScore 1.50
G_M41768_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
cmp r12d, 16
- jle G_M41768_IG13
+ jle G_M41768_IG15
test ebx, ebx
- je G_M41768_IG19
+ je G_M41768_IG21
dec ebx
cmp r12d, r13d
- ja G_M41768_IG23
+ ja G_M41768_IG26
+ test r12d, r12d
+ jge SHORT G_M41768_IG11
+ ;; size=34 bbWeight=4 PerfScore 21.00
+G_M41768_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M41768_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
mov esi, r12d
mov rdi, r15
; byrRegs +[rdi]
@@ -168,15 +180,15 @@ G_M41768_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15},
add rsi, rcx
mov ecx, r13d
cmp rsi, rcx
- ja G_M41768_IG23
+ ja G_M41768_IG26
lea rcx, bword ptr [r15+8*rdi]
; byrRegs +[rcx]
mov bword ptr [rbp-0x38], rcx
; GC ptr vars +{V38}
test r12d, r12d
- jge SHORT G_M41768_IG11
- ;; size=86 bbWeight=4 PerfScore 58.00
-G_M41768_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref
+ jge SHORT G_M41768_IG13
+ ;; size=57 bbWeight=4 PerfScore 42.00
+G_M41768_IG12: ; bbWeight=2, gcVars=0000000000000080 {V38}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rcx]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -185,7 +197,7 @@ G_M41768_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=400
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=2 PerfScore 7.00
-G_M41768_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
+G_M41768_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r12d
@@ -200,16 +212,16 @@ G_M41768_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15},
cmp r12d, 1
jg G_M41768_IG09
;; size=32 bbWeight=4 PerfScore 28.00
-G_M41768_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41768_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
; byrRegs -[r15]
- jmp G_M41768_IG20
+ jmp G_M41768_IG23
;; size=5 bbWeight=1 PerfScore 2.00
-G_M41768_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14]
; byrRegs +[r15]
cmp r12d, 2
- jne SHORT G_M41768_IG14
+ jne SHORT G_M41768_IG16
mov rbx, r15
; byrRegs +[rbx]
vmovsd xmm0, qword ptr [rbx]
@@ -220,18 +232,18 @@ G_M41768_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15
call [r14+0x18]<unknown method>
; gcrRegs -[rdi r14]
test eax, eax
- jle G_M41768_IG20
+ jle G_M41768_IG23
vmovsd xmm0, qword ptr [rbx]
vmovsd xmm1, qword ptr [r15]
vmovsd qword ptr [rbx], xmm1
vmovsd qword ptr [r15], xmm0
- jmp G_M41768_IG20
+ jmp G_M41768_IG23
;; size=61 bbWeight=0.50 PerfScore 15.00
-G_M41768_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14]
; byrRegs -[rbx]
cmp r12d, 3
- jne G_M41768_IG17
+ jne G_M41768_IG19
mov rbx, r15
; byrRegs +[rbx]
vmovsd xmm0, qword ptr [rbx]
@@ -246,16 +258,16 @@ G_M41768_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15
call [r14+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M41768_IG15
+ jle SHORT G_M41768_IG17
vmovsd xmm0, qword ptr [rbx]
vmovsd xmm1, qword ptr [r12]
vmovsd qword ptr [rbx], xmm1
vmovsd qword ptr [r12], xmm0
;; size=62 bbWeight=0.50 PerfScore 14.25
-G_M41768_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=9008 {rbx r12 r15}, byref, isz
+G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=9008 {rbx r12 r15}, byref, isz
vmovsd xmm0, qword ptr [rbx]
cmp r13d, 2
- jbe G_M41768_IG22
+ jbe G_M41768_IG25
lea r13, bword ptr [r15+0x10]
; byrRegs +[r13]
vmovsd xmm1, qword ptr [r13]
@@ -265,13 +277,13 @@ G_M41768_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=9008 {rbx
; gcrRegs -[rdi]
; byrRegs -[r15]
test eax, eax
- jle SHORT G_M41768_IG16
+ jle SHORT G_M41768_IG18
vmovsd xmm0, qword ptr [rbx]
vmovsd xmm1, qword ptr [r13]
vmovsd qword ptr [rbx], xmm1
vmovsd qword ptr [r13], xmm0
;; size=56 bbWeight=0.50 PerfScore 14.00
-G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=3000 {r12 r13}, byref, isz
+G_M41768_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=3000 {r12 r13}, byref, isz
; byrRegs -[rbx]
vmovsd xmm0, qword ptr [r12]
vmovsd xmm1, qword ptr [r13]
@@ -280,20 +292,20 @@ G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=3000 {r12
call [r14+0x18]<unknown method>
; gcrRegs -[rdi r14]
test eax, eax
- jle SHORT G_M41768_IG20
+ jle SHORT G_M41768_IG23
vmovsd xmm0, qword ptr [r12]
vmovsd xmm1, qword ptr [r13]
vmovsd qword ptr [r12], xmm1
vmovsd qword ptr [r13], xmm0
- jmp SHORT G_M41768_IG20
+ jmp SHORT G_M41768_IG23
;; size=50 bbWeight=0.50 PerfScore 14.12
-G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14]
; byrRegs -[r12-r13] +[r15]
cmp r12d, r13d
- ja SHORT G_M41768_IG23
+ ja SHORT G_M41768_IG26
test r12d, r12d
- jge SHORT G_M41768_IG18
+ jge SHORT G_M41768_IG20
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -301,7 +313,7 @@ G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M41768_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
mov rdi, r15
; byrRegs +[rdi]
mov esi, r12d
@@ -310,13 +322,23 @@ G_M41768_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15
call [System.Collections.Generic.ArraySortHelper`1[System.Numerics.Vector2]:InsertionSort(System.Span`1[System.Numerics.Vector2],System.Comparison`1[System.Numerics.Vector2])]
; gcrRegs -[rdx r14]
; byrRegs -[rdi r15]
- jmp SHORT G_M41768_IG20
+ jmp SHORT G_M41768_IG23
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M41768_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14]
; byrRegs +[r15]
cmp r12d, r13d
- ja SHORT G_M41768_IG23
+ ja SHORT G_M41768_IG26
+ test r12d, r12d
+ jge SHORT G_M41768_IG22
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=29 bbWeight=0.50 PerfScore 3.00
+G_M41768_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
mov rdi, r15
; byrRegs +[rdi]
mov esi, r12d
@@ -325,11 +347,11 @@ G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15
call [System.Collections.Generic.ArraySortHelper`1[System.Numerics.Vector2]:HeapSort(System.Span`1[System.Numerics.Vector2],System.Comparison`1[System.Numerics.Vector2])]
; gcrRegs -[rdx r14]
; byrRegs -[rdi r15]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
...
libraries.crossgen2.linux.x64.checked.mch
-1 (-0.02%) : 1714.dasm - Program:Main(System.String[]):int (FullOpts)
@@ -1189,7 +1189,7 @@ G_M58511_IG22: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
xor r12d, r12d
;; size=37 bbWeight=1 PerfScore 11.50
G_M58511_IG23: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
- jmp G_M58511_IG31
+ jmp G_M58511_IG40
;; size=5 bbWeight=1 PerfScore 2.00
G_M58511_IG24: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x08], 0
@@ -1274,35 +1274,16 @@ G_M58511_IG29: ; bbWeight=4, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefR
mov edi, dword ptr [rax+0x08]
mov dword ptr [rbp-0x30], edi
;; size=6 bbWeight=4 PerfScore 12.00
-G_M58511_IG30: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58511_IG30: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
; GC ptr vars -{V53}
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x2C]
- jne SHORT G_M58511_IG32
- mov rdi, r13
- ; gcrRegs +[rdi]
- lea r11, [(reloc)] ; function address
- call [r11]<unknown method>
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- cmp rax, 0x2710
- jg G_M58511_IG40
- mov edi, 5
- call [<unknown method>]
- ; gcr arg pop 0
- mov edi, dword ptr [rbp-0x34]
- inc edi
- mov dword ptr [rbp-0x34], edi
- ;; size=52 bbWeight=4 PerfScore 58.00
-G_M58511_IG31: ; bbWeight=8, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
- cmp dword ptr [rbp-0x34], 40
- jge G_M58511_IG50
- jmp G_M58511_IG24
- ;; size=15 bbWeight=8 PerfScore 40.00
-G_M58511_IG32: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ je G_M58511_IG39
+ ;; size=12 bbWeight=4 PerfScore 16.00
+G_M58511_IG31: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
cmp dword ptr [rbp-0x34], 2
- jge G_M58511_IG35
+ jge G_M58511_IG41
xorps xmm0, xmm0
movups xmmword ptr [rbp-0x150], xmm0
movups xmmword ptr [rbp-0x140], xmm0
@@ -1313,7 +1294,7 @@ G_M58511_IG32: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=
call [<unknown method>]
; gcr arg pop 0
;; size=57 bbWeight=1 PerfScore 10.33
-G_M58511_IG33: ; bbWeight=1, nogc, extend
+G_M58511_IG32: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x150]
movups xmmword ptr [rbp-0x60], xmm0
movups xmm0, xmmword ptr [rbp-0x140]
@@ -1321,7 +1302,7 @@ G_M58511_IG33: ; bbWeight=1, nogc, extend
mov rsi, qword ptr [rbp-0x130]
mov qword ptr [rbp-0x40], rsi
;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG34: ; bbWeight=1, extend
+G_M58511_IG33: ; bbWeight=1, extend
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -1362,9 +1343,94 @@ G_M58511_IG34: ; bbWeight=1, extend
; gcr arg pop 0
mov edi, dword ptr [rbp-0x2C]
mov dword ptr [rbp-0x30], edi
- jmp G_M58511_IG39
- ;; size=116 bbWeight=1 PerfScore 42.25
-G_M58511_IG35: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=111 bbWeight=1 PerfScore 40.25
+G_M58511_IG34: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ mov r12d, 1
+ ;; size=6 bbWeight=1 PerfScore 0.25
+G_M58511_IG35: ; bbWeight=8, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rbp-0x34], 45
+ jge SHORT G_M58511_IG36
+ test r12d, r12d
+ je G_M58511_IG48
+ ;; size=15 bbWeight=8 PerfScore 34.00
+G_M58511_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r13-r15]
+ mov eax, dword ptr [rbp-0x30]
+ cmp eax, dword ptr [rbp-0x2C]
+ jne G_M58511_IG62
+ call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ ; byrRegs +[rax]
+ ; gcr arg pop 0
+ cmp byte ptr [rax+0x32], 0
+ je G_M58511_IG62
+ lea rdi, [rbp-0x88]
+ mov esi, 47
+ mov edx, 1
+ call [<unknown method>]
+ ; byrRegs -[rax]
+ ; gcr arg pop 0
+ ;; size=51 bbWeight=1 PerfScore 15.00
+G_M58511_IG37: ; bbWeight=1, nogc, extend
+ movups xmm0, xmmword ptr [rbp-0x88]
+ movups xmmword ptr [rbp-0x60], xmm0
+ movups xmm0, xmmword ptr [rbp-0x78]
+ movups xmmword ptr [rbp-0x50], xmm0
+ mov rsi, qword ptr [rbp-0x68]
+ mov qword ptr [rbp-0x40], rsi
+ ;; size=27 bbWeight=1 PerfScore 10.00
+G_M58511_IG38: ; bbWeight=1, extend
+ mov rsi, qword ptr [(reloc)] ; const ptr
+ mov rsi, gword ptr [rsi]
+ ; gcrRegs +[rsi]
+ lea rdi, [rbp-0x60]
+ call [<unknown method>]
+ ; gcrRegs -[rsi]
+ ; gcr arg pop 0
+ lea rdi, [rbp-0x60]
+ mov esi, 45
+ call [<unknown method>]
+ ; gcr arg pop 0
+ mov rsi, qword ptr [(reloc)] ; const ptr
+ mov rsi, gword ptr [rsi]
+ ; gcrRegs +[rsi]
+ lea rdi, [rbp-0x60]
+ call [<unknown method>]
+ ; gcrRegs -[rsi]
+ ; gcr arg pop 0
+ lea rdi, [rbp-0x60]
+ call [<unknown method>]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rax rdi]
+ ; gcr arg pop 0
+ jmp G_M58511_IG62
+ ;; size=79 bbWeight=1 PerfScore 27.50
+G_M58511_IG39: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx r13-r15]
+ mov rdi, r13
+ ; gcrRegs +[rdi]
+ lea r11, [(reloc)] ; function address
+ call [r11]<unknown method>
+ ; gcrRegs -[rdi]
+ ; gcr arg pop 0
+ cmp rax, 0x2710
+ jg G_M58511_IG45
+ mov edi, 5
+ call [<unknown method>]
+ ; gcr arg pop 0
+ mov edi, dword ptr [rbp-0x34]
+ inc edi
+ mov dword ptr [rbp-0x34], edi
+ ;; size=44 bbWeight=4 PerfScore 42.00
+G_M58511_IG40: ; bbWeight=8, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ cmp dword ptr [rbp-0x34], 40
+ jge G_M58511_IG35
+ jmp G_M58511_IG24
+ ;; size=15 bbWeight=8 PerfScore 40.00
+G_M58511_IG41: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
xorps xmm0, xmm0
movups xmmword ptr [rbp-0x128], xmm0
movups xmmword ptr [rbp-0x118], xmm0
@@ -1375,7 +1441,7 @@ G_M58511_IG35: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=
call [<unknown method>]
; gcr arg pop 0
;; size=47 bbWeight=1 PerfScore 7.33
-G_M58511_IG36: ; bbWeight=1, nogc, extend
+G_M58511_IG42: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x128]
movups xmmword ptr [rbp-0x60], xmm0
movups xmm0, xmmword ptr [rbp-0x118]
@@ -1383,7 +1449,7 @@ G_M58511_IG36: ; bbWeight=1, nogc, extend
mov rsi, qword ptr [rbp-0x108]
mov qword ptr [rbp-0x40], rsi
;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG37: ; bbWeight=1, extend
+G_M58511_IG43: ; bbWeight=1, extend
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -1425,7 +1491,7 @@ G_M58511_IG37: ; bbWeight=1, extend
; gcrRegs -[rsi]
; gcr arg pop 0
;; size=119 bbWeight=1 PerfScore 43.50
-G_M58511_IG38: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M58511_IG44: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x60]
call [<unknown method>]
; gcrRegs +[rax]
@@ -1435,12 +1501,9 @@ G_M58511_IG38: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=
call [<unknown method>]
; gcrRegs -[rax rdi]
; gcr arg pop 0
- ;; size=19 bbWeight=1 PerfScore 6.75
-G_M58511_IG39: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
- mov r12d, 1
- jmp G_M58511_IG50
- ;; size=11 bbWeight=1 PerfScore 2.25
-G_M58511_IG40: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M58511_IG34
+ ;; size=24 bbWeight=1 PerfScore 8.75
+G_M58511_IG45: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
xorps xmm0, xmm0
movups xmmword ptr [rbp-0x100], xmm0
movups xmmword ptr [rbp-0xF0], xmm0
@@ -1451,7 +1514,7 @@ G_M58511_IG40: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=
call [<unknown method>]
; gcr arg pop 0
;; size=47 bbWeight=1 PerfScore 7.33
-G_M58511_IG41: ; bbWeight=1, nogc, extend
+G_M58511_IG46: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x100]
movups xmmword ptr [rbp-0x60], xmm0
movups xmm0, xmmword ptr [rbp-0xF0]
@@ -1459,7 +1522,7 @@ G_M58511_IG41: ; bbWeight=1, nogc, extend
mov rsi, qword ptr [rbp-0xE0]
mov qword ptr [rbp-0x40], rsi
;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG42: ; bbWeight=1, extend
+G_M58511_IG47: ; bbWeight=1, extend
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -1493,11 +1556,11 @@ G_M58511_IG42: ; bbWeight=1, extend
mov esi, dword ptr [rbp-0x34]
call [<unknown method>]
; gcr arg pop 0
- jmp G_M58511_IG38
+ jmp G_M58511_IG44
;; size=97 bbWeight=1 PerfScore 99.00
-G_M58511_IG43: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M58511_IG48: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M58511_IG46
+ jne SHORT G_M58511_IG51
xor edi, edi
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[rax]
@@ -1516,9 +1579,9 @@ G_M58511_IG43: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=
; GC ptr vars +{V51}
mov rdi, qword ptr [(reloc)] ; <unknown class>
cmp qword ptr [rax], rdi
- je SHORT G_M58511_IG45
+ je SHORT G_M58511_IG50
;; size=51 bbWeight=4 PerfScore 74.00
-G_M58511_IG44: ; bbWeight=2, gcVars=00000000000000000000000000000200 {V51}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
...
libraries.pmi.linux.x64.checked.mch
-29 (-32.58%) : 221681.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
mov ecx, esi
- test esi, esi
- jl SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, eax
+ jae SHORT G_M3357_IG13
mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x0C]
cmp edx, 32
je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx
cmp eax, ecx
jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- cmp ecx, eax
- jae SHORT G_M3357_IG17
- mov edx, ecx
- movzx rdx, word ptr [rdi+2*rdx+0x0C]
- cmp edx, 32
- je SHORT G_M3357_IG12
- ;; size=16 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc ecx
- cmp eax, ecx
- jg SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
sub eax, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx
sub eax, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-13 (-3.30%) : 91208.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T05] ( 7, 8 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol>
; V01 arg1 [V01,T10] ( 3, 3 ) ubyte -> rsi single-def
; V02 loc0 [V02,T03] ( 3, 13 ) byref -> r14 single-def
-; V03 loc1 [V03,T00] ( 6, 28 ) ref -> r13 class-hnd <<unknown class>>
+; V03 loc1 [V03,T01] ( 6, 28 ) ref -> r13 class-hnd <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
; V05 loc3 [V05,T02] ( 7, 13.88) ref -> r12 class-hnd exact <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T14] ( 3, 2 ) byref -> r14
-; V08 tmp2 [V08,T01] ( 4, 24 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T00] ( 4, 32 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
; V11 tmp5 [V11,T11] ( 4, 4.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
@@ -39,7 +39,7 @@
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
; V30 tmp24 [V30,T04] ( 4, 12 ) long -> rax "Inline stloc first use temp"
-; V31 tmp25 [V31,T06] ( 5, 8 ) ref -> rsi class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
+; V31 tmp25 [V31,T06] ( 4, 10 ) ref -> rsi class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
; V32 tmp26 [V32,T13] ( 2, 2.76) ubyte -> rdi "Inline return value spill temp"
; V33 tmp27 [V33 ] ( 3, 4.15) byref -> [rbp-0x30] must-init pinned "Inline stloc first use temp"
;* V34 tmp28 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -89,15 +89,15 @@ G_M47296_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14},
G_M47296_IG06: ; bbWeight=2, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref
mov rdi, qword ptr [r13+0x08]
and rdi, -2
- je G_M47296_IG16
+ je G_M47296_IG17
test dil, 2
- jne G_M47296_IG17
+ jne G_M47296_IG18
call <unknown method>
; gcrRegs +[rax]
;; size=29 bbWeight=2 PerfScore 11.00
G_M47296_IG07: ; bbWeight=2, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
test rax, rax
- jne G_M47296_IG15
+ jne G_M47296_IG16
;; size=9 bbWeight=2 PerfScore 2.50
G_M47296_IG08: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref
; gcrRegs -[rax]
@@ -118,7 +118,7 @@ G_M47296_IG08: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r1
call <unknown method>
; gcrRegs -[rax rdi]
test rax, rax
- je G_M47296_IG19
+ je G_M47296_IG20
;; size=53 bbWeight=4 PerfScore 35.00
G_M47296_IG09: ; bbWeight=4, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, byref, isz
mov rcx, gword ptr [rbp-0x38]
@@ -142,17 +142,25 @@ G_M47296_IG10: ; bbWeight=1.38, gcrefRegs=300A {rcx rbx r12 r13}, byrefRe
; byrRegs +[rsi]
mov bword ptr [rbp-0x30], rsi
test edi, edi
- jne G_M47296_IG20
+ jne G_M47296_IG21
;; size=50 bbWeight=1.38 PerfScore 12.10
-G_M47296_IG11: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG11: ; bbWeight=2, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
; byrRegs -[rsi]
xor rsi, rsi
; gcrRegs +[rsi]
+ ;; size=2 bbWeight=2 PerfScore 0.50
+G_M47296_IG12: ; bbWeight=4, gcrefRegs=304A {rcx rbx rsi r12 r13}, byrefRegs=4000 {r14}, byref, isz
test rsi, rsi
- jne G_M47296_IG21
- ;; size=11 bbWeight=4 PerfScore 6.00
-G_M47296_IG12: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rsi]
+ je SHORT G_M47296_IG13
+ lea rdi, bword ptr [rcx+0x08]
+ ; byrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rsi]
+ ; byrRegs -[rdi]
+ mov rcx, gword ptr [rbp-0x38]
+ ; gcrRegs +[rcx]
+ ;; size=19 bbWeight=4 PerfScore 23.00
+G_M47296_IG13: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
mov rdi, r14
; byrRegs +[rdi]
mov rsi, rcx
@@ -166,13 +174,13 @@ G_M47296_IG12: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=
cmp rax, r13
jne G_M47296_IG05
;; size=23 bbWeight=4 PerfScore 12.00
-G_M47296_IG13: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+G_M47296_IG14: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r13]
; byrRegs -[r14]
mov rax, r12
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47296_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -182,7 +190,7 @@ G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M47296_IG16: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r12]
add rsp, 24
pop rbx
@@ -193,14 +201,14 @@ G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, gcvars, byref
+G_M47296_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] +[rbx r13]
; byrRegs +[r14]
xor rax, rax
; gcrRegs +[rax]
jmp G_M47296_IG07
;; size=7 bbWeight=0 PerfScore 0.00
-G_M47296_IG17: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref, isz
+G_M47296_IG18: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs -[rax]
and rdi, -4
call <unknown method>
@@ -210,18 +218,18 @@ G_M47296_IG17: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r1
mov rdi, qword ptr [r12+0x10]
call <unknown method>
test rax, rax
- jne SHORT G_M47296_IG18
+ jne SHORT G_M47296_IG19
mov rdi, r12
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi r12]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M47296_IG18: ; bbWeight=0, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG19: ; bbWeight=0, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
jmp G_M47296_IG07
;; size=5 bbWeight=0 PerfScore 0.00
-G_M47296_IG19: ; bbWeight=0, gcVars=0000000000000002 {V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
+G_M47296_IG20: ; bbWeight=0, gcVars=0000000000000001 {V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] +[r12]
- ; GC ptr vars +{V01 V08}
+ ; GC ptr vars +{V00 V08}
mov rdi, r12
; gcrRegs +[rdi]
xor esi, esi
@@ -229,7 +237,7 @@ G_M47296_IG19: ; bbWeight=0, gcVars=0000000000000002 {V08}, gcrefRegs=300
; gcrRegs -[rdi]
jmp G_M47296_IG09
;; size=16 bbWeight=0 PerfScore 0.00
-G_M47296_IG20: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG21: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
; gcrRegs +[rcx]
mov rdi, r12
; gcrRegs +[rdi]
@@ -237,24 +245,12 @@ G_M47296_IG20: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=
; gcrRegs -[rcx rdi] +[rax]
mov rsi, rax
; gcrRegs +[rsi]
- test rsi, rsi
- mov rcx, gword ptr [rbp-0x38]
- ; gcrRegs +[rcx]
- je G_M47296_IG12
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M47296_IG21: ; bbWeight=0, gcrefRegs=304A {rcx rbx rsi r12 r13}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rax]
- lea rdi, bword ptr [rcx+0x08]
- ; byrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rcx rsi]
- ; byrRegs -[rdi]
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
jmp G_M47296_IG12
- ;; size=19 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
-Total bytes of code 394, prolog size 25, PerfScore 136.22, instruction count 110, allocated bytes for code 394 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
+Total bytes of code 381, prolog size 25, PerfScore 153.72, instruction count 108, allocated bytes for code 381 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
; ============================================================
Unwind Info:
-8 (-2.40%) : 267803.dasm - System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
@@ -12,7 +12,7 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V02 loc0 [V02,T20] ( 2, 2 ) int -> r13
; V03 loc1 [V03,T04] ( 4, 32 ) int -> rax
-; V04 loc2 [V04,T10] ( 5, 18 ) int -> rcx
+; V04 loc2 [V04,T10] ( 5, 18 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T22] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -23,7 +23,7 @@
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V14 tmp9 [V14,T09] ( 3, 20 ) ref -> rdi class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
-; V15 tmp10 [V15,T11] ( 2, 16 ) ref -> rax class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
+; V15 tmp10 [V15,T11] ( 2, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
; V16 tmp11 [V16,T06] ( 4, 28 ) ref -> rsi class-hnd "Inlining Arg" <ubyte[]>
; V17 tmp12 [V17,T01] ( 6, 48 ) ref -> registers class-hnd exact "Inlining Arg" <System.IO.Compression.InputBuffer>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
@@ -105,10 +105,10 @@ G_M58280_IG07: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14},
cmp dword ptr [rdi+0x58], 24
je G_M58280_IG13
;; size=14 bbWeight=4 PerfScore 24.00
-G_M58280_IG08: ; bbWeight=2, gcrefRegs=8080 {rdi r15}, byrefRegs=4000 {r14}, byref
+G_M58280_IG08: ; bbWeight=2, gcrefRegs=8080 {rdi r15}, byrefRegs=4000 {r14}, byref, isz
cmp dword ptr [rdi+0x58], 23
- je G_M58280_IG13
- ;; size=10 bbWeight=2 PerfScore 8.00
+ je SHORT G_M58280_IG13
+ ;; size=6 bbWeight=2 PerfScore 8.00
G_M58280_IG09: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs -[rdi]
mov rdi, gword ptr [r15+0x10]
@@ -121,28 +121,26 @@ G_M58280_IG09: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14},
mov rax, qword ptr [rax+0x68]
call [rax+0x18]<unknown method>
; gcrRegs -[rsi rdi]
- mov ecx, eax
- test ecx, ecx
+ test eax, eax
jle SHORT G_M58280_IG13
mov rsi, gword ptr [r15+0x20]
; gcrRegs +[rsi]
- cmp dword ptr [rsi+0x08], ecx
+ cmp dword ptr [rsi+0x08], eax
jl SHORT G_M58280_IG16
- mov rax, gword ptr [r15+0x18]
- ; gcrRegs +[rax]
- mov rbx, gword ptr [rax+0x10]
+ mov rdi, gword ptr [r15+0x18]
+ ; gcrRegs +[rdi]
+ mov rbx, gword ptr [rdi+0x10]
; gcrRegs +[rbx]
cmp byte ptr [rbx], bl
test rsi, rsi
je G_M58280_IG17
- ;; size=57 bbWeight=4 PerfScore 116.00
+ ;; size=55 bbWeight=4 PerfScore 115.00
G_M58280_IG10: ; bbWeight=2, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rax]
- cmp dword ptr [rsi+0x08], ecx
+ ; gcrRegs -[rdi]
+ cmp dword ptr [rsi+0x08], eax
jb G_M58280_IG17
;; size=9 bbWeight=2 PerfScore 8.00
G_M58280_IG11: ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=4000 {r14}, byref, isz
- mov eax, ecx
cmp dword ptr [rbx+0x1C], 0
jne SHORT G_M58280_IG12
mov dword ptr [rbp-0x2C], eax
@@ -157,12 +155,12 @@ G_M58280_IG11: ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=4000
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rcx rsi]
; byrRegs -[rdi]
- xor edi, edi
- mov dword ptr [r12+0x18], edi
- mov edi, dword ptr [rbp-0x2C]
- mov dword ptr [r12+0x1C], edi
+ xor eax, eax
+ mov dword ptr [r12+0x18], eax
+ mov eax, dword ptr [rbp-0x2C]
+ mov dword ptr [r12+0x1C], eax
jmp G_M58280_IG03
- ;; size=50 bbWeight=4 PerfScore 51.00
+ ;; size=48 bbWeight=4 PerfScore 50.00
G_M58280_IG12: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref
; gcrRegs -[r12]
mov ebx, r12d
@@ -215,7 +213,7 @@ G_M58280_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 333, prolog size 16, PerfScore 339.75, instruction count 96, allocated bytes for code 333 (MethodHash=bf671c57) for method System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
+Total bytes of code 325, prolog size 16, PerfScore 337.75, instruction count 94, allocated bytes for code 325 (MethodHash=bf671c57) for method System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
; ============================================================
Unwind Info:
+17 (+1.75%) : 184548.dasm - Microsoft.VisualBasic.CompilerServices.Utils:PropertyToString(System.Reflection.PropertyInfo):System.String (FullOpts)
@@ -64,7 +64,7 @@
; V53 tmp42 [V53,T30] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
; V54 tmp43 [V54,T31] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
;* V55 tmp44 [V55 ] ( 0, 0 ) long -> zero-ref "spilling arg"
-; V56 tmp45 [V56,T22] ( 3, 5.90) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
+; V56 tmp45 [V56,T22] ( 3, 5.90) ref -> registers class-hnd "Inline return value spill temp" <System.String>
; V57 tmp46 [V57,T12] ( 4, 7.59) int -> [rbp-0x2C] spill-single-def "Inline stloc first use temp"
; V58 tmp47 [V58,T19] ( 3, 5.69) int -> rdi "Inline stloc first use temp"
; V59 tmp48 [V59,T04] ( 7, 13.28) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
@@ -77,15 +77,15 @@
;* V66 tmp55 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V67 tmp56 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V68 tmp57 [V68,T07] ( 3, 9.48) byref -> rdi "Inlining Arg"
-; V69 tmp58 [V69,T08] ( 3, 9.48) byref -> rsi "Inlining Arg"
+; V69 tmp58 [V69,T08] ( 3, 9.48) byref -> r13 "Inlining Arg"
; V70 tmp59 [V70,T15] ( 2, 7.59) long -> rdx "Inlining Arg"
; V71 tmp60 [V71,T05] ( 3, 11.38) long -> rdx "spilling arg"
;* V72 tmp61 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V73 tmp62 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp63 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp64 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V76 tmp65 [V76,T13] ( 2, 7.59) byref -> rax "Inlining Arg"
-; V77 tmp66 [V77,T14] ( 2, 7.59) byref -> rcx "Inlining Arg"
+; V76 tmp65 [V76,T13] ( 2, 7.59) byref -> rdi "Inlining Arg"
+; V77 tmp66 [V77,T14] ( 2, 7.59) byref -> rax "Inlining Arg"
;* V78 tmp67 [V78 ] ( 0, 0 ) long -> zero-ref "spilling arg"
; V79 tmp68 [V79,T28] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V80 tmp69 [V80,T20] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
@@ -180,9 +180,9 @@ G_M56809_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs +[r14]
mov esi, dword ptr [r14+0x08]
sub esi, 2
- jo G_M56809_IG35
+ jo G_M56809_IG34
add esi, 1
- jo G_M56809_IG35
+ jo G_M56809_IG34
movsxd rsi, esi
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
@@ -197,9 +197,9 @@ G_M56809_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs -[rax rsi rdi]
mov edi, dword ptr [r14+0x08]
sub edi, 1
- jo G_M56809_IG35
+ jo G_M56809_IG34
cmp edi, dword ptr [r14+0x08]
- jae G_M56809_IG34
+ jae G_M56809_IG33
mov rdi, gword ptr [r14+8*rdi+0x10]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -382,7 +382,7 @@ G_M56809_IG16: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=
; gcrRegs -[rax]
mov dword ptr [rbp-0x34], eax
test eax, eax
- jle G_M56809_IG32
+ jle G_M56809_IG31
;; size=71 bbWeight=1 PerfScore 16.25
G_M56809_IG17: ; bbWeight=4, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
mov edi, r12d
@@ -391,16 +391,19 @@ G_M56809_IG17: ; bbWeight=4, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000
mov gword ptr [rbp-0x58], rcx
; GC ptr vars +{V10}
test ebx, ebx
- jne G_M56809_IG30
+ jne G_M56809_IG29
;; size=20 bbWeight=4 PerfScore 18.00
-G_M56809_IG18: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56809_IG18: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx]
+ mov rcx, gword ptr [rbp-0x58]
+ ; gcrRegs +[rcx]
test r13, r13
- je SHORT G_M56809_IG21
- ;; size=5 bbWeight=2 PerfScore 2.50
+ je SHORT G_M56809_IG24
+ ;; size=9 bbWeight=2 PerfScore 4.50
G_M56809_IG19: ; bbWeight=1.88, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov edx, dword ptr [r13+0x08]
test edx, edx
- je SHORT G_M56809_IG21
+ je SHORT G_M56809_IG24
;; size=8 bbWeight=1.88 PerfScore 6.10
G_M56809_IG20: ; bbWeight=1.90, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x30], edx
@@ -408,71 +411,76 @@ G_M56809_IG20: ; bbWeight=1.90, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRe
mov dword ptr [rbp-0x2C], esi
lea edi, [rsi+0x02]
test edi, edi
- jl G_M56809_IG36
- jmp SHORT G_M56809_IG22
- ;; size=21 bbWeight=1.90 PerfScore 11.38
-G_M56809_IG21: ; bbWeight=2, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
- mov r13, 0xD1FFAB1E
- ; gcrRegs +[r13]
- jmp G_M56809_IG29
- ;; size=15 bbWeight=2 PerfScore 4.50
-G_M56809_IG22: ; bbWeight=1.90, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ jl G_M56809_IG35
call <unknown method>
; gcrRegs -[rcx] +[rax]
- mov gword ptr [rbp-0x60], rax
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov gword ptr [rbp-0x60], rsi
; GC ptr vars +{V59}
- test rax, rax
- jne SHORT G_M56809_IG23
+ test rsi, rsi
+ jne SHORT G_M56809_IG21
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, r15
- ; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
- ;; size=26 bbWeight=1.90 PerfScore 12.80
-G_M56809_IG23: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rax, gword ptr [rbp-0x60]
- ; gcrRegs +[rax]
- mov ecx, dword ptr [rbp-0x30]
- cmp dword ptr [rax+0x08], ecx
- jge SHORT G_M56809_IG24
+ ;; size=48 bbWeight=1.90 PerfScore 20.86
+G_M56809_IG21: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rsi, gword ptr [rbp-0x60]
+ ; gcrRegs +[rsi]
+ mov eax, dword ptr [rbp-0x30]
+ cmp dword ptr [rsi+0x08], eax
+ jge SHORT G_M56809_IG22
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, r15
- ; gcrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rax rsi rdi]
+ ; gcrRegs -[rsi rdi]
;; size=24 bbWeight=1.90 PerfScore 18.02
-G_M56809_IG24: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rax, gword ptr [rbp-0x60]
- ; gcrRegs +[rax]
- lea rdi, bword ptr [rax+0x0C]
+G_M56809_IG22: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rsi, gword ptr [rbp-0x60]
+ ; gcrRegs +[rsi]
+ lea rdi, bword ptr [rsi+0x0C]
; byrRegs +[rdi]
- lea rsi, bword ptr [r13+0x0C]
- ; byrRegs +[rsi]
+ add r13, 12
+ ; gcrRegs -[r13]
+ ; byrRegs +[r13]
mov edx, dword ptr [rbp-0x30]
add rdx, rdx
cmp rdx, 2
- jne SHORT G_M56809_IG26
- ;; size=24 bbWeight=1.90 PerfScore 8.53
-G_M56809_IG25: ; bbWeight=0.95, gcrefRegs=C000 {r14 r15}, byrefRegs=00C0 {rsi rdi}, byref, isz
- ; gcrRegs -[rax r13]
- movzx rdx, word ptr [rsi]
+ jne SHORT G_M56809_IG25
+ ;; size=24 bbWeight=1.90 PerfScore 8.06
+G_M56809_IG23: ; bbWeight=0.95, gcrefRegs=C000 {r14 r15}, byrefRegs=2080 {rdi r13}, byref, isz
+ ; gcrRegs -[rsi]
+ movzx rdx, word ptr [r13]
mov word ptr [rdi], dx
- jmp SHORT G_M56809_IG27
- ;; size=8 bbWeight=0.95 PerfScore 4.74
-G_M56809_IG26: ; bbWeight=1.90, gcrefRegs=C000 {r14 r15}, byrefRegs=00C0 {rsi rdi}, byref
+ jmp SHORT G_M56809_IG26
+ ;; size=10 bbWeight=0.95 PerfScore 4.74
+G_M56809_IG24: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rcx]
+ ; byrRegs -[rdi r13]
+ ; GC ptr vars -{V04 V59}
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ jmp SHORT G_M56809_IG28
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M56809_IG25: ; bbWeight=1.90, gcVars=0000000020000810 {V04 V10 V59}, gcrefRegs=C000 {r14 r15}, byrefRegs=2080 {rdi r13}, gcvars, byref
+ ; gcrRegs -[rcx rsi]
+ ; byrRegs +[rdi r13]
+ ; GC ptr vars +{V04 V59}
+ mov rsi, r13
+ ; byrRegs +[rsi]
call [<unknown method>]
- ; byrRegs -[rsi rdi]
- ;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M56809_IG27: ; bbWeight=1.90, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rsi rdi r13]
+ ;; size=9 bbWeight=1.90 PerfScore 6.16
+G_M56809_IG26: ; bbWeight=1.90, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov r13, gword ptr [rbp-0x60]
; gcrRegs +[r13]
mov edi, dword ptr [r13+0x08]
sub edi, dword ptr [rbp-0x2C]
cmp edi, 2
- jge SHORT G_M56809_IG28
+ jge SHORT G_M56809_IG27
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, r15
@@ -480,27 +488,34 @@ G_M56809_IG27: ; bbWeight=1.90, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=28 bbWeight=1.90 PerfScore 18.49
-G_M56809_IG28: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
- movsxd rax, dword ptr [rbp-0x2C]
- lea rax, bword ptr [r13+2*rax+0x0C]
+G_M56809_IG27: ; bbWeight=1.90, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
+ movsxd rdi, dword ptr [rbp-0x2C]
+ lea rdi, bword ptr [r13+2*rdi+0x0C]
+ ; byrRegs +[rdi]
+ mov rax, 0xD1FFAB1E
; byrRegs +[rax]
- mov rcx, 0xD1FFAB1E
- ; byrRegs +[rcx]
- mov edx, dword ptr [rcx]
- mov dword ptr [rax], edx
+ mov ecx, dword ptr [rax]
+ mov dword ptr [rdi], ecx
+ mov rsi, r13
+ ; gcrRegs +[rsi]
mov rcx, gword ptr [rbp-0x58]
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- ;; size=27 bbWeight=1.90 PerfScore 17.54
-G_M56809_IG29: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[rax]
+ ;; size=30 bbWeight=1.90 PerfScore 18.02
+G_M56809_IG28: ; bbWeight=2, gcVars=0000000020000800 {V04 V10}, gcrefRegs=C042 {rcx rsi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r13]
+ ; byrRegs -[rax rdi]
; GC ptr vars -{V04 V59}
- jmp SHORT G_M56809_IG31
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M56809_IG30: ; bbWeight=2, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref
+ mov r13, rsi
+ ; gcrRegs +[r13]
+ jmp SHORT G_M56809_IG30
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M56809_IG29: ; bbWeight=2, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rsi]
+ mov rcx, gword ptr [rbp-0x58]
+ ; gcrRegs +[rcx]
xor ebx, ebx
- ;; size=2 bbWeight=2 PerfScore 0.50
-G_M56809_IG31: ; bbWeight=4, gcrefRegs=E002 {rcx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
...
+22 (+3.93%) : 205533.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rcx "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rax "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> rbx "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> rsi single-def "field V03._array (fldOffset=0x0)" P-INDEP
; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r8 "field V03._index (fldOffset=0x8)" P-INDEP
; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r9 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rcx "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rax "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [rbp-0x30] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r15 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rsi single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> rsi single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rcx "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rax "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> rdx "CSE - aggressive"
;
@@ -96,83 +96,62 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0
call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x28], rax
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov gword ptr [rbp-0x28], rcx
; GC ptr vars +{V02}
- ;; size=82 bbWeight=0.50 PerfScore 8.25
-G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=85 bbWeight=0.50 PerfScore 8.38
+G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x68]
; gcrRegs +[rsi]
mov edx, dword ptr [rsi+0x08]
- xor ecx, ecx
+ xor eax, eax
xor r8d, r8d
test edx, edx
- jle SHORT G_M3645_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, ecx
- lea rcx, [rcx+2*rcx]
- lea rcx, bword ptr [rsi+8*rcx+0x10]
- ; byrRegs +[rcx]
- mov r9, gword ptr [rcx]
+ jle G_M3645_IG17
+ ;; size=24 bbWeight=0.50 PerfScore 3.38
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
+ lea rax, [rax+2*rax]
+ lea rax, bword ptr [rsi+8*rax+0x10]
+ ; byrRegs +[rax]
+ mov r9, gword ptr [rax]
; gcrRegs +[r9]
- mov rcx, gword ptr [rcx+0x10]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rax, gword ptr [rax+0x10]
+ ; gcrRegs +[rax]
+ ; byrRegs -[rax]
cmp r9, gword ptr [rdi+0x50]
je SHORT G_M3645_IG09
;; size=24 bbWeight=4 PerfScore 39.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref, isz
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref
cmp r9, gword ptr [rdi+0x48]
- jne SHORT G_M3645_IG10
- ;; size=6 bbWeight=2 PerfScore 8.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M3645_IG12
+ ;; size=10 bbWeight=2 PerfScore 8.00
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r9]
- mov rbx, rcx
+ mov rbx, rax
; gcrRegs +[rbx]
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M3645_IG12
- ;; size=9 bbWeight=2 PerfScore 8.50
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- lea ecx, [r8+0x01]
- mov r8d, ecx
- cmp edx, r8d
- jg SHORT G_M3645_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi rdi]
- mov rdi, gword ptr [rbp-0x20]
- ; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28]
- ; gcrRegs +[rax]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdx, rax
- ; gcrRegs +[rdx]
- ; GC ptr vars -{V00}
- call [<unknown method>]
- ; gcrRegs -[rax rdx rbx rsi rdi]
- ; gcr arg pop 0
- jmp G_M3645_IG17
- ;; size=25 bbWeight=0.50 PerfScore 3.75
-G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax rbx rdi]
- ; GC ptr vars +{V00}
+ je G_M3645_IG12
+ ;; size=13 bbWeight=2 PerfScore 8.50
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rsi]
movzx rsi, byte ptr [rdi+0x42]
movzx rdx, byte ptr [rdi+0x44]
or esi, edx
- je SHORT G_M3645_IG13
+ je SHORT G_M3645_IG11
mov rdi, gword ptr [rdi+0x08]
mov r15, gword ptr [rbp-0x20]
; gcrRegs +[r15]
mov rsi, gword ptr [r15+0x18]
; gcrRegs +[rsi]
- mov rdx, rax
+ mov rdx, rcx
; gcrRegs +[rdx]
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])]
- ; gcrRegs -[rax rdx rsi rdi]
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
@@ -183,24 +162,24 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 10.75
+G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ mov r15, gword ptr [rbp-0x20]
+ ; gcrRegs +[r15]
+ movzx rdx, byte ptr [r15+0x43]
+ movzx rsi, byte ptr [r15+0x44]
+ or edx, esi
mov rdi, r15
; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28]
- ; gcrRegs +[rax]
- ;; size=59 bbWeight=0.50 PerfScore 11.38
-G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- movzx rdx, byte ptr [rdi+0x43]
- movzx rsi, byte ptr [rdi+0x44]
- or edx, esi
- je SHORT G_M3645_IG11
+ je G_M3645_IG17
mov rdx, gword ptr [rdi+0x70]
; gcrRegs +[rdx]
mov rsi, gword ptr [rdi+0x28]
; gcrRegs +[rsi]
mov rdi, rbx
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]]
- ; gcrRegs -[rdx rsi rdi]
+ ; gcrRegs -[rdx rsi rdi r15] +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x30], rax
; GC ptr vars +{V21}
@@ -214,24 +193,41 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=00
mov r15, rax
; gcrRegs +[r15]
cmp dword ptr [r15+0x08], 0
- je G_M3645_IG11
- ;; size=62 bbWeight=0.50 PerfScore 11.38
-G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov r14, gword ptr [rbp-0x20]
- ; gcrRegs +[r14]
- cmp byte ptr [r14+0x43], 0
- je SHORT G_M3645_IG15
- mov rdx, gword ptr [r14+0x08]
- ; gcrRegs +[rdx]
- mov rdi, r14
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
+ je SHORT G_M3645_IG17
+ mov rcx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M3645_IG14
+ ;; size=80 bbWeight=0.50 PerfScore 14.00
+G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r15] +[rsi]
+ ; GC ptr vars -{V21}
+ lea eax, [r8+0x01]
+ mov r8d, eax
+ cmp edx, r8d
+ jg G_M3645_IG07
+ ;; size=16 bbWeight=4 PerfScore 8.00
+G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M3645_IG17
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M3645_IG14: ; bbWeight=0.50, gcVars=0000000000000A02 {V00 V02 V21}, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r15]
+ ; GC ptr vars +{V21}
+ cmp byte ptr [rdi+0x43], 0
+ je SHORT G_M3645_IG15
+ mov rdx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rdx]
mov rsi, r15
; gcrRegs +[rsi]
xor ecx, ecx
+ ; gcrRegs -[rcx]
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
+ mov r14, gword ptr [rbp-0x20]
+ ; gcrRegs +[r14]
mov rdx, gword ptr [r14+0x10]
; gcrRegs +[rdx]
mov rdi, r14
@@ -242,23 +238,26 @@ G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
- ;; size=50 bbWeight=0.50 PerfScore 8.25
-G_M3645_IG15: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r14
; gcrRegs +[rdi]
+ mov rcx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rcx]
+ ;; size=53 bbWeight=0.50 PerfScore 8.75
+G_M3645_IG15: ; bbWeight=0.50, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi]
mov rdx, r15
; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-0x28]
- ; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rdx rsi rdi r15]
; gcr arg pop 0
nop
- ;; size=21 bbWeight=0.50 PerfScore 2.88
...
+22 (+3.93%) : 242097.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rcx "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rax "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> rbx "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> rsi single-def "field V03._array (fldOffset=0x0)" P-INDEP
; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r8 "field V03._index (fldOffset=0x8)" P-INDEP
; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r9 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rcx "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rax "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [rbp-0x30] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r15 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rsi single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> rsi single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rcx "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rax "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> rdx "CSE - aggressive"
;
@@ -96,83 +96,62 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0
call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x28], rax
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov gword ptr [rbp-0x28], rcx
; GC ptr vars +{V02}
- ;; size=82 bbWeight=0.50 PerfScore 8.25
-G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=85 bbWeight=0.50 PerfScore 8.38
+G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x68]
; gcrRegs +[rsi]
mov edx, dword ptr [rsi+0x08]
- xor ecx, ecx
+ xor eax, eax
xor r8d, r8d
test edx, edx
- jle SHORT G_M3645_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, ecx
- lea rcx, [rcx+2*rcx]
- lea rcx, bword ptr [rsi+8*rcx+0x10]
- ; byrRegs +[rcx]
- mov r9, gword ptr [rcx]
+ jle G_M3645_IG17
+ ;; size=24 bbWeight=0.50 PerfScore 3.38
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
+ lea rax, [rax+2*rax]
+ lea rax, bword ptr [rsi+8*rax+0x10]
+ ; byrRegs +[rax]
+ mov r9, gword ptr [rax]
; gcrRegs +[r9]
- mov rcx, gword ptr [rcx+0x10]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rax, gword ptr [rax+0x10]
+ ; gcrRegs +[rax]
+ ; byrRegs -[rax]
cmp r9, gword ptr [rdi+0x50]
je SHORT G_M3645_IG09
;; size=24 bbWeight=4 PerfScore 39.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref, isz
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref
cmp r9, gword ptr [rdi+0x48]
- jne SHORT G_M3645_IG10
- ;; size=6 bbWeight=2 PerfScore 8.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M3645_IG12
+ ;; size=10 bbWeight=2 PerfScore 8.00
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r9]
- mov rbx, rcx
+ mov rbx, rax
; gcrRegs +[rbx]
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M3645_IG12
- ;; size=9 bbWeight=2 PerfScore 8.50
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- lea ecx, [r8+0x01]
- mov r8d, ecx
- cmp edx, r8d
- jg SHORT G_M3645_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi rdi]
- mov rdi, gword ptr [rbp-0x20]
- ; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28]
- ; gcrRegs +[rax]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdx, rax
- ; gcrRegs +[rdx]
- ; GC ptr vars -{V00}
- call [<unknown method>]
- ; gcrRegs -[rax rdx rbx rsi rdi]
- ; gcr arg pop 0
- jmp G_M3645_IG17
- ;; size=25 bbWeight=0.50 PerfScore 3.75
-G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax rbx rdi]
- ; GC ptr vars +{V00}
+ je G_M3645_IG12
+ ;; size=13 bbWeight=2 PerfScore 8.50
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rsi]
movzx rsi, byte ptr [rdi+0x42]
movzx rdx, byte ptr [rdi+0x44]
or esi, edx
- je SHORT G_M3645_IG13
+ je SHORT G_M3645_IG11
mov rdi, gword ptr [rdi+0x08]
mov r15, gword ptr [rbp-0x20]
; gcrRegs +[r15]
mov rsi, gword ptr [r15+0x18]
; gcrRegs +[rsi]
- mov rdx, rax
+ mov rdx, rcx
; gcrRegs +[rdx]
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])]
- ; gcrRegs -[rax rdx rsi rdi]
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
@@ -183,24 +162,24 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 10.75
+G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ mov r15, gword ptr [rbp-0x20]
+ ; gcrRegs +[r15]
+ movzx rdx, byte ptr [r15+0x43]
+ movzx rsi, byte ptr [r15+0x44]
+ or edx, esi
mov rdi, r15
; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28]
- ; gcrRegs +[rax]
- ;; size=59 bbWeight=0.50 PerfScore 11.38
-G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- movzx rdx, byte ptr [rdi+0x43]
- movzx rsi, byte ptr [rdi+0x44]
- or edx, esi
- je SHORT G_M3645_IG11
+ je G_M3645_IG17
mov rdx, gword ptr [rdi+0x70]
; gcrRegs +[rdx]
mov rsi, gword ptr [rdi+0x28]
; gcrRegs +[rsi]
mov rdi, rbx
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]]
- ; gcrRegs -[rdx rsi rdi]
+ ; gcrRegs -[rdx rsi rdi r15] +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x30], rax
; GC ptr vars +{V21}
@@ -214,24 +193,41 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=00
mov r15, rax
; gcrRegs +[r15]
cmp dword ptr [r15+0x08], 0
- je G_M3645_IG11
- ;; size=62 bbWeight=0.50 PerfScore 11.38
-G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov r14, gword ptr [rbp-0x20]
- ; gcrRegs +[r14]
- cmp byte ptr [r14+0x43], 0
- je SHORT G_M3645_IG15
- mov rdx, gword ptr [r14+0x08]
- ; gcrRegs +[rdx]
- mov rdi, r14
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
+ je SHORT G_M3645_IG17
+ mov rcx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M3645_IG14
+ ;; size=80 bbWeight=0.50 PerfScore 14.00
+G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r15] +[rsi]
+ ; GC ptr vars -{V21}
+ lea eax, [r8+0x01]
+ mov r8d, eax
+ cmp edx, r8d
+ jg G_M3645_IG07
+ ;; size=16 bbWeight=4 PerfScore 8.00
+G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M3645_IG17
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M3645_IG14: ; bbWeight=0.50, gcVars=0000000000000A02 {V00 V02 V21}, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r15]
+ ; GC ptr vars +{V21}
+ cmp byte ptr [rdi+0x43], 0
+ je SHORT G_M3645_IG15
+ mov rdx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rdx]
mov rsi, r15
; gcrRegs +[rsi]
xor ecx, ecx
+ ; gcrRegs -[rcx]
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
+ mov r14, gword ptr [rbp-0x20]
+ ; gcrRegs +[r14]
mov rdx, gword ptr [r14+0x10]
; gcrRegs +[rdx]
mov rdi, r14
@@ -242,23 +238,26 @@ G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
- ;; size=50 bbWeight=0.50 PerfScore 8.25
-G_M3645_IG15: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r14
; gcrRegs +[rdi]
+ mov rcx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rcx]
+ ;; size=53 bbWeight=0.50 PerfScore 8.75
+G_M3645_IG15: ; bbWeight=0.50, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi]
mov rdx, r15
; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-0x28]
- ; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rdx rsi rdi r15]
; gcr arg pop 0
nop
- ;; size=21 bbWeight=0.50 PerfScore 2.88
...
libraries_tests.run.linux.x64.Release.mch
-33 (-35.87%) : 424483.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -5,14 +5,15 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 14
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 9, 3.51) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 4.50) int -> rsi single-def
-; V02 loc0 [V02,T02] ( 11, 1.51) int -> rax
-; V03 loc1 [V03,T03] ( 6, 1.51) ushort -> rcx
+; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 6, 4 ) int -> rsi single-def
+; V02 loc0 [V02,T03] ( 7, 2 ) int -> rcx
+; V03 loc1 [V03,T04] ( 3, 1.50) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V05 cse0 [V05,T02] ( 5, 2.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -22,9 +23,10 @@ G_M3357_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M3357_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x08], esi
+ mov eax, dword ptr [rdi+0x08]
+ cmp eax, esi
jg SHORT G_M3357_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00
+ ;; size=7 bbWeight=1 PerfScore 3.25
G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
xor eax, eax
@@ -33,71 +35,44 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
- mov eax, esi
- test esi, esi
- jl SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, eax
- movzx rcx, word ptr [rdi+2*rcx+0x0C]
- cmp ecx, 32
- je SHORT G_M3357_IG13
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M3357_IG07: ; bbWeight=0.49, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 9
- je SHORT G_M3357_IG13
- ;; size=5 bbWeight=0.49 PerfScore 0.62
-G_M3357_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- sub eax, esi
+ mov ecx, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, eax
+ jae SHORT G_M3357_IG08
+ mov edx, ecx
+ movzx rdx, word ptr [rdi+2*rdx+0x0C]
+ cmp edx, 32
+ je SHORT G_M3357_IG09
+ cmp edx, 9
+ je SHORT G_M3357_IG09
+ mov eax, ecx
+ sub eax, esi
+ ;; size=25 bbWeight=0.50 PerfScore 3.25
+G_M3357_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rdi]
- cmp eax, dword ptr [rdi+0x08]
- jae SHORT G_M3357_IG12
- mov ecx, eax
- movzx rcx, word ptr [rdi+2*rcx+0x0C]
- cmp ecx, 32
- je SHORT G_M3357_IG14
- cmp ecx, 9
- je SHORT G_M3357_IG14
- ;; size=22 bbWeight=0.01 PerfScore 0.04
-G_M3357_IG11: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG08
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- inc eax
- cmp dword ptr [rdi+0x08], eax
+ inc ecx
+ cmp eax, ecx
jg SHORT G_M3357_IG06
- jmp SHORT G_M3357_IG15
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M3357_IG14: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc eax
- cmp dword ptr [rdi+0x08], eax
- jg SHORT G_M3357_IG10
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M3357_IG15: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov eax, dword ptr [rdi+0x08]
sub eax, esi
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0, epilog, nogc, extend
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M3357_IG10: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0 PerfScore 0.00
-Total bytes of code 92, prolog size 4, PerfScore 10.17, instruction count 40, allocated bytes for code 92 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 59, prolog size 4, PerfScore 9.50, instruction count 28, allocated bytes for code 59 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
-33 (-35.87%) : 591423.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -5,14 +5,15 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 22
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 22
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 9, 3.51) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 4.50) int -> rsi single-def
-; V02 loc0 [V02,T02] ( 11, 1.51) int -> rax
-; V03 loc1 [V03,T03] ( 6, 1.51) ushort -> rcx
+; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 6, 4 ) int -> rsi single-def
+; V02 loc0 [V02,T03] ( 7, 2 ) int -> rcx
+; V03 loc1 [V03,T04] ( 3, 1.50) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V05 cse0 [V05,T02] ( 5, 2.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -22,9 +23,10 @@ G_M3357_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=4 bbWeight=1 PerfScore 1.25
G_M3357_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x08], esi
+ mov eax, dword ptr [rdi+0x08]
+ cmp eax, esi
jg SHORT G_M3357_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00
+ ;; size=7 bbWeight=1 PerfScore 3.25
G_M3357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
xor eax, eax
@@ -33,71 +35,44 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
- mov eax, esi
- test esi, esi
- jl SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, eax
- movzx rcx, word ptr [rdi+2*rcx+0x0C]
- cmp ecx, 32
- je SHORT G_M3357_IG13
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 9
- je SHORT G_M3357_IG13
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- sub eax, esi
+ mov ecx, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, eax
+ jae SHORT G_M3357_IG08
+ mov edx, ecx
+ movzx rdx, word ptr [rdi+2*rdx+0x0C]
+ cmp edx, 32
+ je SHORT G_M3357_IG09
+ cmp edx, 9
+ je SHORT G_M3357_IG09
+ mov eax, ecx
+ sub eax, esi
+ ;; size=25 bbWeight=0.50 PerfScore 3.25
+G_M3357_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rdi]
- cmp eax, dword ptr [rdi+0x08]
- jae SHORT G_M3357_IG12
- mov ecx, eax
- movzx rcx, word ptr [rdi+2*rcx+0x0C]
- cmp ecx, 32
- je SHORT G_M3357_IG14
- cmp ecx, 9
- je SHORT G_M3357_IG14
- ;; size=22 bbWeight=0.01 PerfScore 0.04
-G_M3357_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG08
- ;; size=2 bbWeight=0.00 PerfScore 0.01
-G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- inc eax
- cmp dword ptr [rdi+0x08], eax
+ inc ecx
+ cmp eax, ecx
jg SHORT G_M3357_IG06
- jmp SHORT G_M3357_IG15
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M3357_IG14: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc eax
- cmp dword ptr [rdi+0x08], eax
- jg SHORT G_M3357_IG10
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M3357_IG15: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov eax, dword ptr [rdi+0x08]
sub eax, esi
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0, epilog, nogc, extend
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M3357_IG10: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0 PerfScore 0.00
-Total bytes of code 92, prolog size 4, PerfScore 10.17, instruction count 40, allocated bytes for code 92 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 59, prolog size 4, PerfScore 9.50, instruction count 28, allocated bytes for code 59 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
-29 (-32.58%) : 390407.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,12 +8,12 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 20144
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 4.31) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 5.85) int -> rsi single-def
-; V02 loc0 [V02,T01] ( 11, 7.17) int -> rcx
-; V03 loc1 [V03,T03] ( 6, 3.57) ushort -> rdx
+; V00 arg0 [V00,T02] ( 4, 4.31) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 4.90) int -> rsi single-def
+; V02 loc0 [V02,T00] ( 7, 8.46) int -> rcx
+; V03 loc1 [V03,T04] ( 3, 3.57) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 3.33) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 4.63) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -25,80 +25,58 @@ G_M3357_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byre
; gcrRegs +[rdi]
mov eax, dword ptr [rdi+0x08]
cmp eax, esi
- jle SHORT G_M3357_IG08
+ jle SHORT G_M3357_IG11
;; size=7 bbWeight=1 PerfScore 3.25
-G_M3357_IG03: ; bbWeight=0.95, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG03: ; bbWeight=0.95, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov ecx, esi
- test esi, esi
- jl SHORT G_M3357_IG12
- ;; size=6 bbWeight=0.95 PerfScore 1.43
-G_M3357_IG04: ; bbWeight=1.30, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.95 PerfScore 0.24
+G_M3357_IG04: ; bbWeight=1.31, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, eax
+ jae SHORT G_M3357_IG13
mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x0C]
cmp edx, 32
je SHORT G_M3357_IG06
- ;; size=12 bbWeight=1.30 PerfScore 4.54
-G_M3357_IG05: ; bbWeight=0.94, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1.31 PerfScore 6.22
+G_M3357_IG05: ; bbWeight=0.95, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG10
- ;; size=5 bbWeight=0.94 PerfScore 1.17
-G_M3357_IG06: ; bbWeight=1.30, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG09
+ ;; size=5 bbWeight=0.95 PerfScore 1.18
+G_M3357_IG06: ; bbWeight=1.32, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx
cmp eax, ecx
jg SHORT G_M3357_IG04
- ;; size=6 bbWeight=1.30 PerfScore 1.95
-G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG15
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0.05 PerfScore 0.01
-G_M3357_IG09: ; bbWeight=0.05, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.05 PerfScore 0.07
-G_M3357_IG10: ; bbWeight=0.95, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, ecx
- sub eax, esi
- ;; size=4 bbWeight=0.95 PerfScore 0.47
-G_M3357_IG11: ; bbWeight=0.95, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.95 PerfScore 1.42
-G_M3357_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rdi]
- cmp ecx, eax
- jae SHORT G_M3357_IG17
- mov edx, ecx
- movzx rdx, word ptr [rdi+2*rdx+0x0C]
- cmp edx, 32
- je SHORT G_M3357_IG14
- ;; size=16 bbWeight=0.01 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp edx, 9
- jne SHORT G_M3357_IG10
- ;; size=5 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG14: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc ecx
- cmp eax, ecx
- jg SHORT G_M3357_IG12
- ;; size=6 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=1.32 PerfScore 1.97
+G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
sub eax, esi
;; size=2 bbWeight=0.01 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0.01, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.01, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG09: ; bbWeight=0.95, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, ecx
+ sub eax, esi
+ ;; size=4 bbWeight=0.95 PerfScore 0.47
+G_M3357_IG10: ; bbWeight=0.95, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.95 PerfScore 1.42
+G_M3357_IG11: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.05 PerfScore 0.01
+G_M3357_IG12: ; bbWeight=0.05, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.05 PerfScore 0.07
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 89, prolog size 4, PerfScore 15.68, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 60, prolog size 4, PerfScore 16.10, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
+44 (+9.21%) : 401541.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -23,23 +23,25 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> rax "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> r14 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> rbx single-def "arg temp"
; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> rdi "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> rbx single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov r15, rdi
; gcrRegs +[r15]
mov rbx, rsi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test rbx, rbx
je G_M10785_IG13
@@ -48,19 +50,25 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov eax, 1
;; size=23 bbWeight=1 PerfScore 2.75
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
cmp qword ptr [rbx+0x30], -1
jne G_M10785_IG13
mov rdi, qword ptr [r15+0x18]
cmp rdi, qword ptr [rbx+0x18]
jne G_M10785_IG13
+ mov rdi, qword ptr [r15+0x20]
+ xor r14d, r14d
+ cmp rdi, qword ptr [rbx+0x20]
+ sete r14b
jmp G_M10785_IG15
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
@@ -68,11 +76,13 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rsi]
;; size=6 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi rdi]
mov rsi, gword ptr [r15+0x28]
@@ -91,11 +101,13 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {
mov rax, qword ptr [rax+0x48]
;; size=37 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [rax+0x10]<unknown method>
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi rdi]
mov rsi, gword ptr [r15+0x28]
@@ -119,11 +131,13 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rsi]
;; size=6 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi]
mov rdi, gword ptr [r15+0x28]
@@ -142,25 +156,26 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx r15]
- mov rax, qword ptr [r15+0x20]
- cmp rax, qword ptr [rbx+0x20]
- sete al
- movzx rax, al
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movzx rax, r14b
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
mov rdi, qword ptr [r15]
cmp rdi, qword ptr [rbx]
je SHORT G_M10785_IG20
@@ -238,7 +253,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
jmp G_M10785_IG02
;; size=54 bbWeight=0 PerfScore 0.00
-Total bytes of code 478, prolog size 9, PerfScore 9.25, instruction count 125, allocated bytes for code 478 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 522, prolog size 12, PerfScore 12.00, instruction count 140, allocated bytes for code 522 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -246,11 +261,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+44 (+9.21%) : 287491.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -23,23 +23,25 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> rax "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> r14 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> rbx single-def "arg temp"
; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> rdi "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> rbx single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov r15, rdi
; gcrRegs +[r15]
mov rbx, rsi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test rbx, rbx
je G_M10785_IG13
@@ -48,19 +50,25 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov eax, 1
;; size=23 bbWeight=1 PerfScore 2.75
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
cmp qword ptr [rbx+0x30], -1
jne G_M10785_IG13
mov rdi, qword ptr [r15+0x18]
cmp rdi, qword ptr [rbx+0x18]
jne G_M10785_IG13
+ mov rdi, qword ptr [r15+0x20]
+ xor r14d, r14d
+ cmp rdi, qword ptr [rbx+0x20]
+ sete r14b
jmp G_M10785_IG15
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
@@ -68,11 +76,13 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rsi]
;; size=6 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi rdi]
mov rsi, gword ptr [r15+0x28]
@@ -91,11 +101,13 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {
mov rax, qword ptr [rax+0x48]
;; size=37 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [rax+0x10]<unknown method>
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi rdi]
mov rsi, gword ptr [r15+0x28]
@@ -119,11 +131,13 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rsi]
;; size=6 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi]
mov rdi, gword ptr [r15+0x28]
@@ -142,25 +156,26 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx r15]
- mov rax, qword ptr [r15+0x20]
- cmp rax, qword ptr [rbx+0x20]
- sete al
- movzx rax, al
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movzx rax, r14b
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
mov rdi, qword ptr [r15]
cmp rdi, qword ptr [rbx]
je SHORT G_M10785_IG20
@@ -238,7 +253,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
jmp G_M10785_IG02
;; size=54 bbWeight=0 PerfScore 0.00
-Total bytes of code 478, prolog size 9, PerfScore 9.25, instruction count 125, allocated bytes for code 478 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 522, prolog size 12, PerfScore 12.00, instruction count 140, allocated bytes for code 522 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -246,11 +261,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+44 (+9.44%) : 486934.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -21,25 +21,27 @@
; V09 tmp5 [V09,T07] ( 3, 0 ) ubyte -> rsi "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V12 tmp8 [V12,T10] ( 2, 0 ) int -> rax "Single return block return value"
+; V12 tmp8 [V12,T10] ( 2, 0 ) int -> r14 "Single return block return value"
; V13 tmp9 [V13,T11] ( 2, 0 ) int -> rdi "argument with side effect"
; V14 tmp10 [V14,T08] ( 2, 0 ) ref -> rbx single-def "arg temp"
; V15 tmp11 [V15,T03] ( 3, 0 ) ref -> rdi "argument with side effect"
; V16 tmp12 [V16,T12] ( 2, 0 ) int -> rdi "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> rbx single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov r15, rdi
; gcrRegs +[r15]
mov rbx, rsi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test rbx, rbx
je G_M10785_IG12
@@ -48,19 +50,25 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov eax, 1
;; size=23 bbWeight=1 PerfScore 2.75
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
cmp qword ptr [rbx+0x30], -1
jne G_M10785_IG12
mov rdi, qword ptr [r15+0x18]
cmp rdi, qword ptr [rbx+0x18]
jne G_M10785_IG12
+ mov rdi, qword ptr [r15+0x20]
+ xor r14d, r14d
+ cmp rdi, qword ptr [rbx+0x20]
+ sete r14b
jmp G_M10785_IG14
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
@@ -68,11 +76,13 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rsi]
;; size=6 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi rdi]
mov rsi, gword ptr [r15+0x28]
@@ -91,11 +101,13 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {
mov rax, qword ptr [rax+0x48]
;; size=37 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [rax+0x10]<unknown method>
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi]
mov rsi, gword ptr [r15+0x28]
@@ -116,11 +128,13 @@ G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {
; gcrRegs +[rsi]
;; size=50 bbWeight=0 PerfScore 0.00
G_M10785_IG10: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [<unknown method>]
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi]
mov rdi, gword ptr [r15+0x28]
@@ -139,25 +153,26 @@ G_M10785_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
G_M10785_IG13: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx r15]
- mov rax, qword ptr [r15+0x20]
- cmp rax, qword ptr [rbx+0x20]
- sete al
- movzx rax, al
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movzx rax, r14b
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG15: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
mov rdi, qword ptr [r15]
cmp rdi, qword ptr [rbx]
je SHORT G_M10785_IG19
@@ -232,7 +247,7 @@ G_M10785_IG20: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
jmp G_M10785_IG02
;; size=54 bbWeight=0 PerfScore 0.00
-Total bytes of code 466, prolog size 9, PerfScore 9.25, instruction count 125, allocated bytes for code 466 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 510, prolog size 12, PerfScore 12.00, instruction count 140, allocated bytes for code 510 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -240,11 +255,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-29 (-32.58%) : 146905.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
mov ecx, esi
- test esi, esi
- jl SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, eax
+ jae SHORT G_M3357_IG13
mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x0C]
cmp edx, 32
je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx
cmp eax, ecx
jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- cmp ecx, eax
- jae SHORT G_M3357_IG17
- mov edx, ecx
- movzx rdx, word ptr [rdi+2*rdx+0x0C]
- cmp edx, 32
- je SHORT G_M3357_IG12
- ;; size=16 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc ecx
- cmp eax, ecx
- jg SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
sub eax, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx
sub eax, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-29 (-32.58%) : 20362.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
mov ecx, esi
- test esi, esi
- jl SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, eax
+ jae SHORT G_M3357_IG13
mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x0C]
cmp edx, 32
je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx
cmp eax, ecx
jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- cmp ecx, eax
- jae SHORT G_M3357_IG17
- mov edx, ecx
- movzx rdx, word ptr [rdi+2*rdx+0x0C]
- cmp edx, 32
- je SHORT G_M3357_IG12
- ;; size=16 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc ecx
- cmp eax, ecx
- jg SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
sub eax, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx
sub eax, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-13 (-3.30%) : 31420.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T05] ( 7, 8 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol>
; V01 arg1 [V01,T10] ( 3, 3 ) ubyte -> rsi single-def
; V02 loc0 [V02,T03] ( 3, 13 ) byref -> r14 single-def
-; V03 loc1 [V03,T00] ( 6, 28 ) ref -> r13 class-hnd <<unknown class>>
+; V03 loc1 [V03,T01] ( 6, 28 ) ref -> r13 class-hnd <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
; V05 loc3 [V05,T02] ( 7, 13.88) ref -> r12 class-hnd exact <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T14] ( 3, 2 ) byref -> r14
-; V08 tmp2 [V08,T01] ( 4, 24 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T00] ( 4, 32 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
; V11 tmp5 [V11,T11] ( 4, 4.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
@@ -39,7 +39,7 @@
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
; V30 tmp24 [V30,T04] ( 4, 12 ) long -> rax "Inline stloc first use temp"
-; V31 tmp25 [V31,T06] ( 5, 8 ) ref -> rsi class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
+; V31 tmp25 [V31,T06] ( 4, 10 ) ref -> rsi class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
; V32 tmp26 [V32,T13] ( 2, 2.76) ubyte -> rdi "Inline return value spill temp"
; V33 tmp27 [V33 ] ( 3, 4.15) byref -> [rbp-0x30] must-init pinned "Inline stloc first use temp"
;* V34 tmp28 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -89,15 +89,15 @@ G_M47296_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14},
G_M47296_IG06: ; bbWeight=2, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref
mov rdi, qword ptr [r13+0x08]
and rdi, -2
- je G_M47296_IG16
+ je G_M47296_IG17
test dil, 2
- jne G_M47296_IG17
+ jne G_M47296_IG18
call <unknown method>
; gcrRegs +[rax]
;; size=29 bbWeight=2 PerfScore 11.00
G_M47296_IG07: ; bbWeight=2, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
test rax, rax
- jne G_M47296_IG15
+ jne G_M47296_IG16
;; size=9 bbWeight=2 PerfScore 2.50
G_M47296_IG08: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref
; gcrRegs -[rax]
@@ -118,7 +118,7 @@ G_M47296_IG08: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r1
call <unknown method>
; gcrRegs -[rax rdi]
test rax, rax
- je G_M47296_IG19
+ je G_M47296_IG20
;; size=53 bbWeight=4 PerfScore 35.00
G_M47296_IG09: ; bbWeight=4, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, byref, isz
mov rcx, gword ptr [rbp-0x38]
@@ -142,17 +142,25 @@ G_M47296_IG10: ; bbWeight=1.38, gcrefRegs=300A {rcx rbx r12 r13}, byrefRe
; byrRegs +[rsi]
mov bword ptr [rbp-0x30], rsi
test edi, edi
- jne G_M47296_IG20
+ jne G_M47296_IG21
;; size=50 bbWeight=1.38 PerfScore 12.10
-G_M47296_IG11: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG11: ; bbWeight=2, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
; byrRegs -[rsi]
xor rsi, rsi
; gcrRegs +[rsi]
+ ;; size=2 bbWeight=2 PerfScore 0.50
+G_M47296_IG12: ; bbWeight=4, gcrefRegs=304A {rcx rbx rsi r12 r13}, byrefRegs=4000 {r14}, byref, isz
test rsi, rsi
- jne G_M47296_IG21
- ;; size=11 bbWeight=4 PerfScore 6.00
-G_M47296_IG12: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rsi]
+ je SHORT G_M47296_IG13
+ lea rdi, bword ptr [rcx+0x08]
+ ; byrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rsi]
+ ; byrRegs -[rdi]
+ mov rcx, gword ptr [rbp-0x38]
+ ; gcrRegs +[rcx]
+ ;; size=19 bbWeight=4 PerfScore 23.00
+G_M47296_IG13: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
mov rdi, r14
; byrRegs +[rdi]
mov rsi, rcx
@@ -166,13 +174,13 @@ G_M47296_IG12: ; bbWeight=4, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=
cmp rax, r13
jne G_M47296_IG05
;; size=23 bbWeight=4 PerfScore 12.00
-G_M47296_IG13: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+G_M47296_IG14: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r13]
; byrRegs -[r14]
mov rax, r12
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47296_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -182,7 +190,7 @@ G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M47296_IG16: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r12]
add rsp, 24
pop rbx
@@ -193,14 +201,14 @@ G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, gcvars, byref
+G_M47296_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] +[rbx r13]
; byrRegs +[r14]
xor rax, rax
; gcrRegs +[rax]
jmp G_M47296_IG07
;; size=7 bbWeight=0 PerfScore 0.00
-G_M47296_IG17: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref, isz
+G_M47296_IG18: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs -[rax]
and rdi, -4
call <unknown method>
@@ -210,18 +218,18 @@ G_M47296_IG17: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=4000 {r1
mov rdi, qword ptr [r12+0x10]
call <unknown method>
test rax, rax
- jne SHORT G_M47296_IG18
+ jne SHORT G_M47296_IG19
mov rdi, r12
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi r12]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M47296_IG18: ; bbWeight=0, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG19: ; bbWeight=0, gcrefRegs=2009 {rax rbx r13}, byrefRegs=4000 {r14}, byref
jmp G_M47296_IG07
;; size=5 bbWeight=0 PerfScore 0.00
-G_M47296_IG19: ; bbWeight=0, gcVars=0000000000000002 {V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
+G_M47296_IG20: ; bbWeight=0, gcVars=0000000000000001 {V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] +[r12]
- ; GC ptr vars +{V01 V08}
+ ; GC ptr vars +{V00 V08}
mov rdi, r12
; gcrRegs +[rdi]
xor esi, esi
@@ -229,7 +237,7 @@ G_M47296_IG19: ; bbWeight=0, gcVars=0000000000000002 {V08}, gcrefRegs=300
; gcrRegs -[rdi]
jmp G_M47296_IG09
;; size=16 bbWeight=0 PerfScore 0.00
-G_M47296_IG20: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
+G_M47296_IG21: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=4000 {r14}, byref
; gcrRegs +[rcx]
mov rdi, r12
; gcrRegs +[rdi]
@@ -237,24 +245,12 @@ G_M47296_IG20: ; bbWeight=0, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=
; gcrRegs -[rcx rdi] +[rax]
mov rsi, rax
; gcrRegs +[rsi]
- test rsi, rsi
- mov rcx, gword ptr [rbp-0x38]
- ; gcrRegs +[rcx]
- je G_M47296_IG12
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M47296_IG21: ; bbWeight=0, gcrefRegs=304A {rcx rbx rsi r12 r13}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rax]
- lea rdi, bword ptr [rcx+0x08]
- ; byrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rcx rsi]
- ; byrRegs -[rdi]
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
jmp G_M47296_IG12
- ;; size=19 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
-Total bytes of code 394, prolog size 25, PerfScore 136.22, instruction count 110, allocated bytes for code 394 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
+Total bytes of code 381, prolog size 25, PerfScore 153.72, instruction count 108, allocated bytes for code 381 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
; ============================================================
Unwind Info:
+11 (+2.93%) : 273801.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex760_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -152,7 +152,7 @@ G_M53590_IG08: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
cmp edi, r12d
ja G_M53590_IG25
;; size=15 bbWeight=4.00 PerfScore 11.00
-G_M53590_IG09: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
+G_M53590_IG09: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
mov esi, edi
lea rdx, bword ptr [r13+2*rsi]
; byrRegs +[rdx]
@@ -162,8 +162,8 @@ G_M53590_IG09: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
sub r8d, edi
mov dword ptr [rbp-0x30], r8d
test r8d, r8d
- jge SHORT G_M53590_IG16
- ;; size=26 bbWeight=4.00 PerfScore 24.00
+ jge G_M53590_IG16
+ ;; size=30 bbWeight=4.00 PerfScore 24.00
G_M53590_IG10: ; bbWeight=2.00, gcVars=0000000000000010 {V17}, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, gcvars, byref
; byrRegs -[rdx]
mov rsi, 0xD1FFAB1E
@@ -200,24 +200,27 @@ G_M53590_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13},
G_M53590_IG13: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
lea ecx, [rdi+0x01]
cmp ecx, r12d
- jae SHORT G_M53590_IG24
+ jae G_M53590_IG24
mov dword ptr [rbp-0x2C], edi
lea ecx, [rdi+0x01]
movzx rcx, word ptr [r13+2*rcx]
cmp ecx, 256
jb SHORT G_M53590_IG17
- ;; size=28 bbWeight=2.00 PerfScore 13.00
+ ;; size=32 bbWeight=2.00 PerfScore 13.00
G_M53590_IG14: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
mov edi, ecx
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M53590_IG22
- ;; size=12 bbWeight=2 PerfScore 9.00
-G_M53590_IG15: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
mov edi, dword ptr [rbp-0x2C]
- jmp SHORT G_M53590_IG19
- ;; size=5 bbWeight=4 PerfScore 12.00
+ jne SHORT G_M53590_IG19
+ ;; size=15 bbWeight=2 PerfScore 11.00
+G_M53590_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r13]
+ mov dword ptr [rbp-0x2C], edi
+ jmp SHORT G_M53590_IG22
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
G_M53590_IG16: ; bbWeight=2.00, gcVars=0000000000000010 {V17}, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, gcvars, byref, isz
+ ; byrRegs +[r13]
; GC ptr vars +{V04 V17}
mov rdx, bword ptr [rbp-0x40]
; byrRegs +[rdx]
@@ -277,7 +280,7 @@ G_M53590_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 376, prolog size 19, PerfScore 186.62, instruction count 114, allocated bytes for code 376 (MethodHash=e5872ea9) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex760_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+Total bytes of code 387, prolog size 19, PerfScore 178.12, instruction count 115, allocated bytes for code 387 (MethodHash=e5872ea9) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex760_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================
Unwind Info:
+22 (+4.07%) : 11764.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rcx "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rax "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> rbx "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> rsi single-def "field V03._array (fldOffset=0x0)" P-INDEP
; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r8 "field V03._index (fldOffset=0x8)" P-INDEP
; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r9 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rcx "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rax "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [rbp-0x30] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> r15 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rsi single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> rsi single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rcx "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rax "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> rdx "CSE - aggressive"
;
@@ -92,83 +92,62 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=
call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x28], rax
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov gword ptr [rbp-0x28], rcx
; GC ptr vars +{V02}
- ;; size=62 bbWeight=0.50 PerfScore 7.50
-G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=65 bbWeight=0.50 PerfScore 7.62
+G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x68]
; gcrRegs +[rsi]
mov edx, dword ptr [rsi+0x08]
- xor ecx, ecx
+ xor eax, eax
xor r8d, r8d
test edx, edx
- jle SHORT G_M10501_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M10501_IG07: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, ecx
- lea rcx, [rcx+2*rcx]
- lea rcx, bword ptr [rsi+8*rcx+0x10]
- ; byrRegs +[rcx]
- mov r9, gword ptr [rcx]
+ jle G_M10501_IG17
+ ;; size=24 bbWeight=0.50 PerfScore 3.38
+G_M10501_IG07: ; bbWeight=4, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
+ lea rax, [rax+2*rax]
+ lea rax, bword ptr [rsi+8*rax+0x10]
+ ; byrRegs +[rax]
+ mov r9, gword ptr [rax]
; gcrRegs +[r9]
- mov rcx, gword ptr [rcx+0x10]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rax, gword ptr [rax+0x10]
+ ; gcrRegs +[rax]
+ ; byrRegs -[rax]
cmp r9, gword ptr [rdi+0x50]
je SHORT G_M10501_IG09
;; size=24 bbWeight=4 PerfScore 39.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref, isz
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=02CB {rax rcx rbx rsi rdi r9}, byrefRegs=0000 {}, byref
cmp r9, gword ptr [rdi+0x48]
- jne SHORT G_M10501_IG10
- ;; size=6 bbWeight=2 PerfScore 8.00
-G_M10501_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M10501_IG12
+ ;; size=10 bbWeight=2 PerfScore 8.00
+G_M10501_IG09: ; bbWeight=2, gcrefRegs=00C3 {rax rcx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r9]
- mov rbx, rcx
+ mov rbx, rax
; gcrRegs +[rbx]
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M10501_IG12
- ;; size=9 bbWeight=2 PerfScore 8.50
-G_M10501_IG10: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- lea ecx, [r8+0x01]
- mov r8d, ecx
- cmp edx, r8d
- jg SHORT G_M10501_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi rdi]
- mov rdi, gword ptr [rbp-0x20]
- ; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28]
- ; gcrRegs +[rax]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdx, rax
- ; gcrRegs +[rdx]
- ; GC ptr vars -{V00}
- call [<unknown method>]
- ; gcrRegs -[rax rdx rbx rsi rdi]
- ; gcr arg pop 0
- jmp G_M10501_IG17
- ;; size=25 bbWeight=0.50 PerfScore 3.75
-G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax rbx rdi]
- ; GC ptr vars +{V00}
+ je G_M10501_IG12
+ ;; size=13 bbWeight=2 PerfScore 8.50
+G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rsi]
movzx rsi, byte ptr [rdi+0x42]
movzx rdx, byte ptr [rdi+0x44]
or esi, edx
- je SHORT G_M10501_IG13
+ je SHORT G_M10501_IG11
mov rdi, gword ptr [rdi+0x08]
mov r15, gword ptr [rbp-0x20]
; gcrRegs +[r15]
mov rsi, gword ptr [r15+0x18]
; gcrRegs +[rsi]
- mov rdx, rax
+ mov rdx, rcx
; gcrRegs +[rdx]
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])]
- ; gcrRegs -[rax rdx rsi rdi]
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
@@ -179,24 +158,24 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 10.75
+G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ mov r15, gword ptr [rbp-0x20]
+ ; gcrRegs +[r15]
+ movzx rdx, byte ptr [r15+0x43]
+ movzx rsi, byte ptr [r15+0x44]
+ or edx, esi
mov rdi, r15
; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x28]
- ; gcrRegs +[rax]
- ;; size=59 bbWeight=0.50 PerfScore 11.38
-G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- movzx rdx, byte ptr [rdi+0x43]
- movzx rsi, byte ptr [rdi+0x44]
- or edx, esi
- je SHORT G_M10501_IG11
+ je G_M10501_IG17
mov rdx, gword ptr [rdi+0x70]
; gcrRegs +[rdx]
mov rsi, gword ptr [rdi+0x28]
; gcrRegs +[rsi]
mov rdi, rbx
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]]
- ; gcrRegs -[rdx rsi rdi]
+ ; gcrRegs -[rdx rsi rdi r15] +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x30], rax
; GC ptr vars +{V21}
@@ -210,24 +189,41 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=0089 {rax rbx rdi}, byrefRegs=0
mov r15, rax
; gcrRegs +[r15]
cmp dword ptr [r15+0x08], 0
- je G_M10501_IG11
- ;; size=62 bbWeight=0.50 PerfScore 11.38
-G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov r14, gword ptr [rbp-0x20]
- ; gcrRegs +[r14]
- cmp byte ptr [r14+0x43], 0
- je SHORT G_M10501_IG15
- mov rdx, gword ptr [r14+0x08]
- ; gcrRegs +[rdx]
- mov rdi, r14
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
+ je SHORT G_M10501_IG17
+ mov rcx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M10501_IG14
+ ;; size=80 bbWeight=0.50 PerfScore 14.00
+G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r15] +[rsi]
+ ; GC ptr vars -{V21}
+ lea eax, [r8+0x01]
+ mov r8d, eax
+ cmp edx, r8d
+ jg G_M10501_IG07
+ ;; size=16 bbWeight=4 PerfScore 8.00
+G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M10501_IG17
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M10501_IG14: ; bbWeight=0.50, gcVars=0000000000000A02 {V00 V02 V21}, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r15]
+ ; GC ptr vars +{V21}
+ cmp byte ptr [rdi+0x43], 0
+ je SHORT G_M10501_IG15
+ mov rdx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rdx]
mov rsi, r15
; gcrRegs +[rsi]
xor ecx, ecx
+ ; gcrRegs -[rcx]
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
+ mov r14, gword ptr [rbp-0x20]
+ ; gcrRegs +[r14]
mov rdx, gword ptr [r14+0x10]
; gcrRegs +[rdx]
mov rdi, r14
@@ -238,23 +234,26 @@ G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
- ;; size=50 bbWeight=0.50 PerfScore 8.25
-G_M10501_IG15: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r14
; gcrRegs +[rdi]
+ mov rcx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rcx]
+ ;; size=53 bbWeight=0.50 PerfScore 8.75
+G_M10501_IG15: ; bbWeight=0.50, gcrefRegs=808A {rcx rbx rdi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi]
mov rdx, r15
; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-0x28]
- ; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rdx rsi rdi r15]
; gcr arg pop 0
nop
- ;; size=21 bbWeight=0.50 PerfScore 2.88
...
+48 (+6.02%) : 8078.dasm - System.Collections.Generic.GenericArraySortHelper2[uint,System.__Canon]:IntroSort(System.Span
1[uint],System.Span`1[System.__Canon],int) (FullOpts)
@@ -12,11 +12,11 @@
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
; V02 arg1 [V02 ] ( 17, 18 ) struct (16) [rbp-0x40] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Span`1[System.__Canon]>
; V03 arg2 [V03,T05] ( 7, 19 ) int -> r15
-; V04 loc0 [V04,T00] ( 15, 32.50) int -> r12
-; V05 loc1 [V05,T08] ( 4, 16 ) int -> [rbp-0x44] spill-single-def
+; V04 loc0 [V04,T00] ( 17, 37 ) int -> r12
+; V05 loc1 [V05,T09] ( 4, 16 ) int -> [rbp-0x44] spill-single-def
; V06 loc2 [V06,T02] ( 7, 28 ) int -> rdx
; V07 OutArgs [V07 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 16 ) long -> rcx "spilling helperCall"
+; V08 tmp1 [V08,T12] ( 2, 16 ) long -> rcx "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]>
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref "impSpillLclRefs" <System.Span`1[uint]>
@@ -46,11 +46,11 @@
;* V35 tmp28 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V36 tmp29 [V36,T01] ( 4, 32 ) int -> [rbp-0x48] spill-single-def "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V38 tmp31 [V38,T10] ( 2, 16 ) byref -> [rbp-0x60] spill-single-def "Inlining Arg"
+; V38 tmp31 [V38,T11] ( 2, 16 ) byref -> [rbp-0x60] spill-single-def "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp33 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp34 [V41,T07] ( 9, 12 ) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T06] ( 13, 16 ) int -> r14 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V41 tmp34 [V41,T08] ( 9, 12 ) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V42 tmp35 [V42,T07] ( 13, 16 ) int -> r14 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V43 tmp36 [V43 ] ( 11, 14 ) byref -> [rbp-0x40] do-not-enreg[X] addr-exposed single-def "field V02._reference (fldOffset=0x0)" P-DEP
; V44 tmp37 [V44 ] ( 12, 15 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed single-def "field V02._length (fldOffset=0x8)" P-DEP
;* V45 tmp38 [V45 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -77,10 +77,10 @@
; V66 tmp59 [V66,T15] ( 3, 12 ) int -> [rbp-0x4C] spill-single-def "field V32._length (fldOffset=0x8)" P-INDEP
; V67 tmp60 [V67,T18] ( 2, 8 ) byref -> [rbp-0x68] spill-single-def "field V37._reference (fldOffset=0x0)" P-INDEP
; V68 tmp61 [V68,T21] ( 2, 8 ) int -> [rbp-0x50] spill-single-def "field V37._length (fldOffset=0x8)" P-INDEP
-; V69 tmp62 [V69,T12] ( 2, 16 ) long -> rsi "argument with side effect"
-; V70 cse0 [V70,T13] ( 7, 14 ) long -> [rbp-0x58] multi-def "CSE - moderate"
-; V71 cse1 [V71,T14] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
-; V72 rat0 [V72,T09] ( 3, 16 ) long -> registers "runtime lookup"
+; V69 tmp62 [V69,T13] ( 2, 16 ) long -> rsi "argument with side effect"
+; V70 cse0 [V70,T14] ( 7, 14 ) long -> [rbp-0x58] multi-def "CSE - moderate"
+; V71 cse1 [V71,T06] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
+; V72 rat0 [V72,T10] ( 3, 16 ) long -> registers "runtime lookup"
; V73 rat1 [V73,T03] ( 3, 22.40) long -> rcx "fgMakeTemp is creating a new local variable"
; V74 rat2 [V74,T25] ( 3, 2 ) long -> rsi "runtime lookup"
; V75 rat3 [V75,T23] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
@@ -146,27 +146,39 @@ G_M51381_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13},
G_M51381_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
mov r12d, r14d
cmp r14d, 1
- jle G_M51381_IG22
+ jle G_M51381_IG24
;; size=13 bbWeight=1 PerfScore 1.50
-G_M51381_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+G_M51381_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
cmp r12d, 16
- jle G_M51381_IG16
+ jle G_M51381_IG18
test r15d, r15d
- je G_M51381_IG23
+ je G_M51381_IG25
dec r15d
cmp r12d, r14d
- ja G_M51381_IG26
+ ja G_M51381_IG29
+ test r12d, r12d
+ jge SHORT G_M51381_IG11
+ ;; size=36 bbWeight=4 PerfScore 21.00
+G_M51381_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M51381_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
mov dword ptr [rbp-0x4C], r12d
mov rdi, qword ptr [rbx+0x38]
mov rdi, qword ptr [rdi]
mov rcx, qword ptr [rdi+0x20]
test rcx, rcx
- je G_M51381_IG15
- ;; size=55 bbWeight=4 PerfScore 49.00
-G_M51381_IG10: ; bbWeight=3.20, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+ je G_M51381_IG17
+ ;; size=24 bbWeight=4 PerfScore 33.00
+G_M51381_IG12: ; bbWeight=3.20, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
mov eax, dword ptr [rbp-0x4C]
;; size=3 bbWeight=3.20 PerfScore 3.20
-G_M51381_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov rsi, rcx
mov qword ptr [rbp-0x58], rsi
mov rcx, rsi
@@ -195,16 +207,16 @@ G_M51381_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byr
add rdi, rsi
mov esi, r14d
cmp rdi, rsi
- ja G_M51381_IG26
+ ja G_M51381_IG29
mov edi, edx
lea r8, bword ptr [r13+4*rdi]
; byrRegs +[r8]
mov bword ptr [rbp-0x60], r8
; GC ptr vars +{V38}
test ecx, ecx
- jge SHORT G_M51381_IG13
+ jge SHORT G_M51381_IG15
;; size=96 bbWeight=4 PerfScore 82.00
-G_M51381_IG12: ; bbWeight=2, gcVars=0000000000000400 {V38}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref
+G_M51381_IG14: ; bbWeight=2, gcVars=0000000000000800 {V38}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref
; byrRegs -[r8]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -213,7 +225,7 @@ G_M51381_IG12: ; bbWeight=2, gcVars=0000000000000400 {V38}, gcrefRegs=000
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=2 PerfScore 7.00
-G_M51381_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+G_M51381_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
mov r8, bword ptr [rbp-0x60]
; byrRegs +[r8]
mov bword ptr [rbp-0x68], r8
@@ -244,22 +256,22 @@ G_M51381_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byr
cmp r12d, 1
jg G_M51381_IG09
;; size=78 bbWeight=4 PerfScore 75.00
-G_M51381_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51381_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13]
- jmp G_M51381_IG22
+ jmp G_M51381_IG24
;; size=5 bbWeight=2 PerfScore 4.00
-G_M51381_IG15: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
+G_M51381_IG17: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref
; byrRegs +[r13]
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rcx, rax
mov eax, dword ptr [rbp-0x4C]
- jmp G_M51381_IG11
+ jmp G_M51381_IG13
;; size=29 bbWeight=0.80 PerfScore 3.80
-G_M51381_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
cmp r12d, 2
- jne SHORT G_M51381_IG17
+ jne SHORT G_M51381_IG19
mov dword ptr [rsp], 1
mov rcx, bword ptr [rbp-0x40]
; byrRegs +[rcx]
@@ -271,12 +283,12 @@ G_M51381_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13},
xor r9d, r9d
call [<unknown method>]
; byrRegs -[rcx rsi r13]
- jmp G_M51381_IG22
+ jmp G_M51381_IG24
;; size=44 bbWeight=0.50 PerfScore 5.12
-G_M51381_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
; byrRegs +[r13]
cmp r12d, 3
- jne SHORT G_M51381_IG18
+ jne SHORT G_M51381_IG20
mov dword ptr [rsp], 1
mov rcx, bword ptr [rbp-0x40]
; byrRegs +[rcx]
@@ -310,14 +322,14 @@ G_M51381_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13},
mov r9d, 1
call [<unknown method>]
; byrRegs -[rcx rsi r13]
- jmp SHORT G_M51381_IG22
+ jmp SHORT G_M51381_IG24
;; size=110 bbWeight=0.50 PerfScore 12.12
-G_M51381_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
; byrRegs +[r13]
cmp r12d, r14d
- ja G_M51381_IG26
+ ja G_M51381_IG29
test r12d, r12d
- jge SHORT G_M51381_IG19
+ jge SHORT G_M51381_IG21
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -325,15 +337,15 @@ G_M51381_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13},
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=33 bbWeight=0.50 PerfScore 3.00
-G_M51381_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov r14d, r12d
mov rdi, qword ptr [rbx+0x38]
mov rdi, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x20]
test rsi, rsi
- je SHORT G_M51381_IG21
+ je SHORT G_M51381_IG23
;; size=19 bbWeight=0.50 PerfScore 3.75
-G_M51381_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov r15, rsi
lea rdi, [rbp-0x40]
mov ecx, r14d
@@ -349,17 +361,17 @@ G_M51381_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13},
mov rdi, rbx
call [<unknown method>]
; byrRegs -[rax rcx rsi r13]
- jmp SHORT G_M51381_IG22
+ jmp SHORT G_M51381_IG24
;; size=41 bbWeight=0.50 PerfScore 5.25
-G_M51381_IG21: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
+G_M51381_IG23: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
; byrRegs +[r13]
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rsi, rax
- jmp SHORT G_M51381_IG20
+ jmp SHORT G_M51381_IG22
;; size=23 bbWeight=0.10 PerfScore 0.38
-G_M51381_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M51381_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13]
add rsp, 72
pop rbx
@@ -370,10 +382,20 @@ G_M51381_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
ret
;; size=15 bbWeight=2 PerfScore 8.50
-G_M51381_IG23: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref, isz
+G_M51381_IG25: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, gcvars, byref, isz
; byrRegs +[r13]
cmp r12d, r14d
- ja SHORT G_M51381_IG26
+ ja SHORT G_M51381_IG29
+ test r12d, r12d
+ jge SHORT G_M51381_IG26
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=29 bbWeight=0.50 PerfScore 3.00
+G_M51381_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
mov r14, r13
; byrRegs +[r14]
...
realworld.run.linux.x64.checked.mch
-29 (-32.58%) : 15332.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> rcx
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> rdx
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rsi single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> rcx
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,72 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
mov ecx, esi
- test esi, esi
- jl SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, eax
+ jae SHORT G_M3357_IG13
mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x0C]
cmp edx, 32
je SHORT G_M3357_IG08
- ;; size=12 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
inc ecx
cmp eax, ecx
jg SHORT G_M3357_IG06
- ;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- cmp ecx, eax
- jae SHORT G_M3357_IG17
- mov edx, ecx
- movzx rdx, word ptr [rdi+2*rdx+0x0C]
- cmp edx, 32
- je SHORT G_M3357_IG12
- ;; size=16 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp edx, 9
- jne SHORT G_M3357_IG15
- ;; size=5 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc ecx
- cmp eax, ecx
- jg SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
sub eax, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ecx
sub eax, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 89, prolog size 4, PerfScore 31.55, instruction count 41, allocated bytes for code 89 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 60, prolog size 4, PerfScore 34.88, instruction count 29, allocated bytes for code 60 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-13 (-1.98%) : 14216.dasm - System.Linq.Enumerable:g_EnumerableToArray|2960double:double
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 26 single block inlinees; 22 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
+; V00 arg0 [V00,T12] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
; V01 loc0 [V01 ] ( 2, 2 ) struct (64) [rbp-0x68] do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[double]>
; V02 loc1 [V02 ] ( 16, 12 ) struct (264) [rbp-0x170] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[double]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <double[]>
@@ -17,37 +17,37 @@
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[double]>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <double[]>
-; V09 tmp5 [V09,T22] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
-; V10 tmp6 [V10,T19] ( 6, 3.50) ref -> rbx class-hnd "Inline stloc first use temp" <double[]>
+; V09 tmp5 [V09,T21] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V10 tmp6 [V10,T18] ( 6, 3.50) ref -> rbx class-hnd "Inline stloc first use temp" <double[]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[double]>
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <double[]>
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <double[]>
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V16 tmp12 [V16,T16] ( 8, 4 ) int -> r13 "Inline stloc first use temp"
+; V16 tmp12 [V16,T15] ( 8, 4 ) int -> r13 "Inline stloc first use temp"
; V17 tmp13 [V17 ] ( 3, 1.50) struct (16) [rbp-0x180] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[double]>
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.Span`1[double]>
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]>
;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double[]]>
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double[]]>
-; V22 tmp18 [V22,T01] ( 5, 16.50) int -> [rbp-0x184] "Inline stloc first use temp"
+; V22 tmp18 [V22,T02] ( 5, 16.50) int -> [rbp-0x184] "Inline stloc first use temp"
; V23 tmp19 [V23,T07] ( 4, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <double[]>
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]>
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]>
;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double]>
-; V27 tmp23 [V27,T17] ( 4, 4 ) int -> r12 "Inlining Arg"
-; V28 tmp24 [V28,T24] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V27 tmp23 [V27,T16] ( 4, 4 ) int -> r12 "Inlining Arg"
+; V28 tmp24 [V28,T23] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]>
;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V34 tmp30 [V34,T27] ( 2, 2 ) long -> rax "Inlining Arg"
+; V34 tmp30 [V34,T26] ( 2, 2 ) long -> rax "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V38 tmp34 [V38,T21] ( 3, 3 ) int -> r14 "Inlining Arg"
-; V39 tmp35 [V39,T25] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V38 tmp34 [V38,T20] ( 3, 3 ) int -> r14 "Inlining Arg"
+; V39 tmp35 [V39,T24] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp37 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp38 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double[]]>
@@ -59,7 +59,7 @@
;* V48 tmp44 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]>
;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V50 tmp46 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V51 tmp47 [V51,T04] ( 2, 16 ) long -> r8 "Inlining Arg"
+; V51 tmp47 [V51,T04] ( 2, 16 ) long -> rdx "Inlining Arg"
;* V52 tmp48 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V54 tmp50 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
@@ -67,20 +67,20 @@
; V56 tmp52 [V56,T03] ( 2, 16 ) byref -> r15 "Inlining Arg"
;* V57 tmp53 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V58 tmp54 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V59 tmp55 [V59,T18] ( 4, 4 ) int -> r13 "Inlining Arg"
+; V59 tmp55 [V59,T17] ( 4, 4 ) int -> r13 "Inlining Arg"
;* V60 tmp56 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V61 tmp57 [V61,T26] ( 2, 2 ) byref -> r12 single-def "Inlining Arg"
-; V62 tmp58 [V62,T23] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V61 tmp57 [V61,T25] ( 2, 2 ) byref -> r12 single-def "Inlining Arg"
+; V62 tmp58 [V62,T22] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
;* V63 tmp59 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T20] ( 3, 3 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V66 tmp62 [V66,T40] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T19] ( 3, 3 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V66 tmp62 [V66,T39] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V69 tmp65 [V69 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp66 [V70 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V71 tmp67 [V71,T28] ( 3, 1.50) byref -> r15 "field V15._reference (fldOffset=0x0)" P-INDEP
-; V72 tmp68 [V72,T29] ( 3, 1.50) int -> r14 "field V15._length (fldOffset=0x8)" P-INDEP
+; V71 tmp67 [V71,T27] ( 3, 1.50) byref -> r15 "field V15._reference (fldOffset=0x0)" P-INDEP
+; V72 tmp68 [V72,T28] ( 3, 1.50) int -> r14 "field V15._length (fldOffset=0x8)" P-INDEP
; V73 tmp69 [V73 ] ( 2, 1 ) byref -> [rbp-0x180] do-not-enreg[X] addr-exposed "field V17._reference (fldOffset=0x0)" P-DEP
; V74 tmp70 [V74 ] ( 2, 1 ) int -> [rbp-0x178] do-not-enreg[X] addr-exposed "field V17._length (fldOffset=0x8)" P-DEP
; V75 tmp71 [V75,T05] ( 8, 14.50) byref -> r15 "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -89,35 +89,34 @@
;* V78 tmp74 [V78 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V79 tmp75 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V81 tmp77 [V81,T15] ( 2, 4.50) byref -> r12 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V82 tmp78 [V82,T14] ( 3, 5 ) int -> r13 "field V21._length (fldOffset=0x8)" P-INDEP
+; V81 tmp77 [V81,T14] ( 2, 4.50) byref -> r12 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V82 tmp78 [V82,T13] ( 3, 5 ) int -> r13 "field V21._length (fldOffset=0x8)" P-INDEP
;* V83 tmp79 [V83 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp80 [V84 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V85 tmp81 [V85,T31] ( 2, 1 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp82 [V86,T36] ( 2, 1 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
+; V85 tmp81 [V85,T30] ( 2, 1 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+; V86 tmp82 [V86,T35] ( 2, 1 ) int -> r12 "field V25._length (fldOffset=0x8)" P-INDEP
;* V87 tmp83 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V89 tmp85 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp86 [V90 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-; V91 tmp87 [V91,T32] ( 2, 1 ) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-; V92 tmp88 [V92,T37] ( 2, 1 ) int -> r14 "field V37._length (fldOffset=0x8)" P-INDEP
-; V93 tmp89 [V93,T33] ( 2, 1 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp87 [V91,T31] ( 2, 1 ) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+; V92 tmp88 [V92,T36] ( 2, 1 ) int -> r14 "field V37._length (fldOffset=0x8)" P-INDEP
+; V93 tmp89 [V93,T32] ( 2, 1 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp90 [V94 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V95 tmp91 [V95,T34] ( 2, 1 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-; V96 tmp92 [V96,T38] ( 2, 1 ) int -> r13 "field V43._length (fldOffset=0x8)" P-INDEP
-; V97 tmp93 [V97,T10] ( 3, 8 ) byref -> rsi "field V47._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp94 [V98,T02] ( 5, 16 ) int -> [rbp-0x188] "field V47._length (fldOffset=0x8)" P-INDEP
+; V95 tmp91 [V95,T33] ( 2, 1 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp92 [V96,T37] ( 2, 1 ) int -> r13 "field V43._length (fldOffset=0x8)" P-INDEP
+; V97 tmp93 [V97,T09] ( 3, 8 ) byref -> rsi "field V47._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp94 [V98,T01] ( 6, 20 ) int -> [rbp-0x188] "field V47._length (fldOffset=0x8)" P-INDEP
;* V99 tmp95 [V99 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp96 [V100 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
-; V101 tmp97 [V101,T11] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP
-; V102 tmp98 [V102,T12] ( 2, 8 ) int -> r14 "field V54._length (fldOffset=0x8)" P-INDEP
-; V103 tmp99 [V103,T35] ( 2, 1 ) byref -> r12 single-def "field V60._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp100 [V104,T39] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0x8)" P-INDEP
-; V105 cse0 [V105,T30] ( 3, 1.50) long -> [rbp-0x190] spill-single-def "CSE - conservative"
-; V106 cse1 [V106,T08] ( 3, 12 ) long -> [rbp-0x198] spill-single-def "CSE - moderate"
-; V107 cse2 [V107,T09] ( 9, 9 ) ref -> rsi multi-def "CSE - moderate"
+; V101 tmp97 [V101,T10] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP
+; V102 tmp98 [V102,T11] ( 2, 8 ) int -> r14 "field V54._length (fldOffset=0x8)" P-INDEP
+; V103 tmp99 [V103,T34] ( 2, 1 ) byref -> r12 single-def "field V60._reference (fldOffset=0x0)" P-INDEP
+; V104 tmp100 [V104,T38] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0x8)" P-INDEP
+; V105 cse0 [V105,T29] ( 3, 1.50) long -> [rbp-0x190] spill-single-def "CSE - conservative"
+; V106 cse1 [V106,T08] ( 9, 9 ) ref -> rsi multi-def "CSE - moderate"
;
-; Lcl frame size = 376
+; Lcl frame size = 360
G_M60021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -126,9 +125,9 @@ G_M60021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 376
+ sub rsp, 360
vzeroupper
- lea rbp, [rsp+0x1A0]
+ lea rbp, [rsp+0x190]
vxorps xmm8, xmm8, xmm8
vmovdqa xmmword ptr [rbp-0x180], xmm8
vmovdqa xmmword ptr [rbp-0x170], xmm8
@@ -259,19 +258,18 @@ G_M60021_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=9040 {rsi r1
cmp ecx, r14d
ja G_M60021_IG22
mov dword ptr [rbp-0x188], ecx
- mov r8d, ecx
- shl r8, 3
- mov qword ptr [rbp-0x198], r8
- mov rdx, r8
+ mov edx, ecx
+ shl rdx, 3
mov rdi, r15
; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rsi rdi]
- mov rdi, qword ptr [rbp-0x198]
- add r15, rdi
- sub r14d, dword ptr [rbp-0x188]
+ mov edi, dword ptr [rbp-0x188]
+ mov esi, edi
+ lea r15, bword ptr [r15+8*rsi]
+ sub r14d, edi
jns SHORT G_M60021_IG13
- ;; size=60 bbWeight=4 PerfScore 47.00
+ ;; size=47 bbWeight=4 PerfScore 37.00
G_M60021_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -330,7 +328,7 @@ G_M60021_IG18: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M60021_IG19: ; bbWeight=1, epilog, nogc, extend
- add rsp, 376
+ add rsp, 360
pop rbx
pop r12
pop r13
@@ -352,7 +350,7 @@ G_M60021_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 657, prolog size 87, PerfScore 164.29, instruction count 148, allocated bytes for code 657 (MethodHash=ba5d158a) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[double](System.Collections.Generic.IEnumerable`1[double]):double[] (FullOpts)
+Total bytes of code 644, prolog size 87, PerfScore 154.29, instruction count 147, allocated bytes for code 644 (MethodHash=ba5d158a) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[double](System.Collections.Generic.IEnumerable`1[double]):double[] (FullOpts)
; ============================================================
Unwind Info:
@@ -366,7 +364,7 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x11 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 47 * 8 = 376 = 0x00178
+ Size: 45 * 8 = 360 = 0x00168
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
-15 (-1.84%) : 21690.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)
@@ -77,7 +77,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
cmp esi, 1
je G_M39186_IG23
xor ebx, ebx
- jmp G_M39186_IG36
+ jmp G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rdi+0x28], -1
@@ -262,7 +262,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
; gcrRegs +[rbx]
xor r15d, r15d
cmp dword ptr [rdi+0x30], 0
- jle G_M39186_IG30
+ jle G_M39186_IG37
;; size=22 bbWeight=0.50 PerfScore 2.75
G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
@@ -271,10 +271,10 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov r11, gword ptr [rdi+0x20]
; gcrRegs +[r11]
cmp r15d, dword ptr [r11+0x10]
- jae G_M39186_IG31
+ jae SHORT G_M39186_IG27
mov r11, gword ptr [r11+0x08]
cmp r15d, dword ptr [r11+0x08]
- jae G_M39186_IG32
+ jae SHORT G_M39186_IG26
mov eax, r15d
mov r14, gword ptr [r11+8*rax+0x10]
; gcrRegs +[r14]
@@ -285,11 +285,36 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- je G_M39186_IG35
- test rbx, rbx
jne SHORT G_M39186_IG28
- ;; size=69 bbWeight=4 PerfScore 85.00
-G_M39186_IG25: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=4 PerfScore 80.00
+G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r14]
+ xor ebx, ebx
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rdi]
+ ; gcr arg pop 0
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ jmp G_M39186_IG38
+ ;; size=21 bbWeight=0.50 PerfScore 3.62
+G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M39186_IG28: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx r14]
+ test rbx, rbx
+ jne SHORT G_M39186_IG33
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M39186_IG29: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
mov rbx, gword ptr [rbp-0x30]
; gcrRegs +[rbx]
@@ -298,12 +323,19 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x38]
test rax, rax
- je SHORT G_M39186_IG33
+ je SHORT G_M39186_IG31
;; size=23 bbWeight=2 PerfScore 20.50
-G_M39186_IG26: ; bbWeight=1.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, rax
- ;; size=3 bbWeight=1.60 PerfScore 0.40
-G_M39186_IG27: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M39186_IG32
+ ;; size=5 bbWeight=1.60 PerfScore 3.60
+G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov rdi, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M39186_IG32: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
movsxd rsi, dword ptr [rbx+0x30]
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
@@ -312,7 +344,7 @@ G_M39186_IG27: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
; gcrRegs +[r13]
mov rbx, r13
;; size=15 bbWeight=2 PerfScore 11.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r13]
mov r13, gword ptr [rbp-0x30]
; gcrRegs +[r13]
@@ -321,9 +353,18 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
mov rsi, qword ptr [rsi]
mov r11, qword ptr [rsi+0x30]
test r11, r11
- je SHORT G_M39186_IG34
+ je SHORT G_M39186_IG35
;; size=24 bbWeight=4 PerfScore 41.00
-G_M39186_IG29: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M39186_IG36
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r11, rax
+ ;; size=18 bbWeight=0.80 PerfScore 1.20
+G_M39186_IG36: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
mov rdi, r14
; gcrRegs +[rdi]
call [r11]
@@ -341,7 +382,7 @@ G_M39186_IG29: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000
cmp r15d, dword ptr [r13+0x30]
jl G_M39186_IG24
;; size=33 bbWeight=4 PerfScore 37.00
-G_M39186_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
mov r13, gword ptr [rbp-0x30]
; gcrRegs +[r13]
@@ -356,51 +397,12 @@ G_M39186_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov ebx, 1
mov rdi, r13
; gcrRegs +[rdi]
- jmp SHORT G_M39186_IG36
- ;; size=34 bbWeight=0.50 PerfScore 3.12
-G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi r13]
- call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M39186_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M39186_IG33: ; bbWeight=0.40, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx r14]
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov rdi, rax
- jmp G_M39186_IG27
- ;; size=23 bbWeight=0.40 PerfScore 1.40
-G_M39186_IG34: ; bbWeight=0.80, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r13]
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r11, rax
- jmp SHORT G_M39186_IG29
- ;; size=20 bbWeight=0.80 PerfScore 2.80
-G_M39186_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r13-r14]
- mov r13, gword ptr [rbp-0x30]
- ; gcrRegs +[r13]
- xor ebx, ebx
- mov rdi, r13
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rdi r13]
- ; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x30]
- ; gcrRegs +[rdi]
- ;; size=19 bbWeight=0.50 PerfScore 2.75
-G_M39186_IG36: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 2.12
+G_M39186_IG38: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
mov eax, ebx
;; size=2 bbWeight=1 PerfScore 0.25
-G_M39186_IG37: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop r13
@@ -409,7 +411,7 @@ G_M39186_IG37: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[rdi]
; GC ptr vars +{V03 V23}
push rbp
@@ -422,9 +424,9 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x40]
;; size=23 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x38], 0
- je SHORT G_M39186_IG40
+ je SHORT G_M39186_IG42
mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -433,10 +435,10 @@ G_M39186_IG39: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, funclet epilog, nogc, extend
+G_M39186_IG43: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -445,7 +447,7 @@ G_M39186_IG41: ; bbWeight=0, funclet epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
push r15
push r14
@@ -456,7 +458,7 @@ G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x40]
;; size=23 bbWeight=0 PerfScore 0.00
-G_M39186_IG43: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG45: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbp-0x30]
; gcrRegs +[rdi]
call [<unknown method>]
@@ -464,7 +466,7 @@ G_M39186_IG43: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000
; gcr arg pop 0
nop
;; size=11 bbWeight=0 PerfScore 0.00
-G_M39186_IG44: ; bbWeight=0, funclet epilog, nogc, extend
+G_M39186_IG46: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 16
...
+2 (+1.20%) : 24306.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
@@ -43,7 +43,7 @@ G_M17353_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov r15, rbx
; gcrRegs +[r15]
test rbx, rbx
- je SHORT G_M17353_IG09
+ je SHORT G_M17353_IG08
;; size=8 bbWeight=1 PerfScore 1.50
G_M17353_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, r15
@@ -64,7 +64,7 @@ G_M17353_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
G_M17353_IG04: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax
cmp qword ptr [r15], rdi
- jne SHORT G_M17353_IG11
+ jne SHORT G_M17353_IG12
mov r14, r15
; gcrRegs +[r14]
lea rsi, [rbp-0x30]
@@ -88,25 +88,16 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
cmp eax, dword ptr [rbx+0x20]
jne SHORT G_M17353_IG03
;; size=5 bbWeight=2 PerfScore 8.00
-G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r15]
- mov rax, r14
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 24
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M17353_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r14]
+ jmp SHORT G_M17353_IG10
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r14
@@ -114,8 +105,21 @@ G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[r15]
+G_M17353_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[r14]
+ mov rax, r14
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 24
+ pop rbx
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M17353_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r14] +[r15]
mov rsi, r15
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -123,7 +127,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {
int3
;; size=9 bbWeight=0 PerfScore 0.00
-Total bytes of code 167, prolog size 31, PerfScore 114.58, instruction count 56, allocated bytes for code 167 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 169, prolog size 31, PerfScore 115.58, instruction count 57, allocated bytes for code 169 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
; ============================================================
Unwind Info:
+14 (+3.47%) : 14382.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -12,7 +12,7 @@
; V01 loc0 [V01,T13] ( 5, 28 ) long -> rdi
; V02 loc1 [V02,T14] ( 5, 24 ) int -> r14
; V03 loc2 [V03,T12] ( 5, 28.50) ref -> r13 class-hnd exact <System.String>
-; V04 loc3 [V04,T04] ( 8, 50 ) int -> r12
+; V04 loc3 [V04,T05] ( 8, 50 ) int -> r12
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax
; V06 loc5 [V06,T08] ( 3, 40 ) ref -> rcx class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> [rbp-0x2C]
@@ -33,9 +33,9 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T18] ( 4, 5 ) ref -> rax "Single return block return value"
; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V25 cse0 [V25,T05] ( 6, 49 ) int -> r15 "CSE - aggressive"
+; V25 cse0 [V25,T03] ( 8, 57 ) int -> r15 "CSE - aggressive"
; V26 cse1 [V26,T07] ( 5, 40 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V27 cse2 [V27,T03] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
+; V27 cse2 [V27,T04] ( 10, 50 ) ref -> rdi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -58,10 +58,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp r15d, 1
jle G_M46295_IG16
;; size=23 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor edi, edi
xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test r15d, r15d
+ jle SHORT G_M46295_IG07
+ ;; size=9 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ecx, eax
mov rcx, gword ptr [rbx+8*rcx+0x10]
@@ -94,7 +96,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r12d, r12d
xor eax, eax
; gcrRegs -[rax]
- ;; size=41 bbWeight=4 PerfScore 19.00
+ test r15d, r15d
+ jle G_M46295_IG15
+ ;; size=50 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x2C], eax
mov edi, eax
@@ -249,7 +253,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 403, prolog size 22, PerfScore 585.25, instruction count 115, allocated bytes for code 403 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 417, prolog size 22, PerfScore 595.25, instruction count 119, allocated bytes for code 417 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
+48 (+9.62%) : 770.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span
1[int],int,System.Comparison`1[int]) (FullOpts)
@@ -10,10 +10,10 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
; V01 arg1 [V01,T03] ( 7, 19 ) int -> r15
-; V02 arg2 [V02,T04] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> r12
+; V02 arg2 [V02,T05] ( 15, 16 ) ref -> r14 class-hnd single-def <System.Comparison`1[int]>
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> r12
; V04 loc1 [V04,T09] ( 3, 12 ) int -> [rbp-0x2C] spill-single-def
-; V05 loc2 [V05,T05] ( 4, 16 ) int -> rdi
+; V05 loc2 [V05,T06] ( 4, 16 ) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -44,13 +44,13 @@
;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T00] ( 4, 32 ) int -> r12 "Inlining Arg"
+; V36 tmp30 [V36,T01] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V38 tmp32 [V38,T06] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V38 tmp32 [V38,T07] ( 2, 16 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp34 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V41 tmp35 [V41,T02] ( 29, 22 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp36 [V42,T07] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V42 tmp36 [V42,T08] ( 9, 13.50) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
@@ -79,7 +79,7 @@
; V68 tmp62 [V68,T15] ( 2, 2 ) int -> rsi "argument with side effect"
; V69 tmp63 [V69,T16] ( 2, 2 ) int -> rsi "argument with side effect"
; V70 tmp64 [V70,T17] ( 2, 2 ) int -> rsi "argument with side effect"
-; V71 cse0 [V71,T08] ( 15, 12 ) ref -> rsi multi-def "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 21, 19.50) ref -> rsi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -138,16 +138,28 @@ G_M15629_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
G_M15629_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov r12d, r13d
cmp r13d, 1
- jle G_M15629_IG20
+ jle G_M15629_IG23
;; size=13 bbWeight=1 PerfScore 1.50
G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
cmp r12d, 16
- jle G_M15629_IG13
+ jle G_M15629_IG15
test r15d, r15d
- je G_M15629_IG19
+ je G_M15629_IG21
dec r15d
cmp r12d, r13d
- ja G_M15629_IG23
+ ja G_M15629_IG26
+ test r12d, r12d
+ jge SHORT G_M15629_IG11
+ ;; size=36 bbWeight=4 PerfScore 21.00
+G_M15629_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d
mov rdi, rbx
; byrRegs +[rdi]
@@ -164,15 +176,15 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx},
add rsi, rcx
mov ecx, r13d
cmp rsi, rcx
- ja G_M15629_IG23
+ ja G_M15629_IG26
lea rcx, bword ptr [rbx+4*rdi]
; byrRegs +[rcx]
mov bword ptr [rbp-0x38], rcx
; GC ptr vars +{V38}
test r12d, r12d
- jge SHORT G_M15629_IG11
- ;; size=88 bbWeight=4 PerfScore 58.00
-G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
+ jge SHORT G_M15629_IG13
+ ;; size=57 bbWeight=4 PerfScore 42.00
+G_M15629_IG12: ; bbWeight=2, gcVars=0000000000000080 {V38}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -181,7 +193,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=0000000000000040 {V38}, gcrefRegs=400
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r12d
@@ -196,16 +208,16 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx},
cmp r12d, 1
jg G_M15629_IG09
;; size=33 bbWeight=4 PerfScore 28.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
; byrRegs -[rbx]
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
; byrRegs +[rbx]
cmp r12d, 2
- jne SHORT G_M15629_IG14
+ jne SHORT G_M15629_IG16
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov rdi, gword ptr [r14+0x08]
@@ -213,17 +225,17 @@ G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi r14]
test eax, eax
- jle G_M15629_IG20
+ jle G_M15629_IG23
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x04], esi
- jmp G_M15629_IG20
+ jmp G_M15629_IG23
;; size=42 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
cmp r12d, 3
- jne SHORT G_M15629_IG17
+ jne SHORT G_M15629_IG19
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov rdi, gword ptr [r14+0x08]
@@ -231,29 +243,29 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M15629_IG15
+ jle SHORT G_M15629_IG17
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x04]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x04], esi
;; size=33 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx]
cmp r13d, 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
mov edx, dword ptr [rbx+0x08]
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
call [r14+0x18]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov esi, dword ptr [rbx]
mov edx, dword ptr [rbx+0x08]
mov dword ptr [rbx], edx
mov dword ptr [rbx+0x08], esi
;; size=37 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx+0x04]
mov edx, dword ptr [rbx+0x08]
mov rdi, gword ptr [r14+0x08]
@@ -261,19 +273,19 @@ G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [r14+0x18]<unknown method>
; gcrRegs -[rdi r14]
test eax, eax
- jle SHORT G_M15629_IG20
+ jle SHORT G_M15629_IG23
mov edi, dword ptr [rbx+0x04]
mov esi, dword ptr [rbx+0x08]
mov dword ptr [rbx+0x04], esi
mov dword ptr [rbx+0x08], edi
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=32 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
test r12d, r12d
- jge SHORT G_M15629_IG18
+ jge SHORT G_M15629_IG20
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -281,7 +293,7 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov esi, r12d
mov rdi, rbx
; byrRegs +[rdi]
@@ -290,13 +302,23 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])]
; gcrRegs -[rdx r14]
; byrRegs -[rbx rdi]
- jmp SHORT G_M15629_IG20
+ jmp SHORT G_M15629_IG23
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[r14]
; byrRegs +[rbx]
cmp r12d, r13d
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
+ test r12d, r12d
+ jge SHORT G_M15629_IG22
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=29 bbWeight=0.50 PerfScore 3.00
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
mov rdi, rbx
; byrRegs +[rdi]
mov esi, r12d
@@ -305,11 +327,11 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])]
; gcrRegs -[rdx r14]
; byrRegs -[rbx rdi]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M15629_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 1.88
+G_M15629_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.x64.checked.mch |
25 |
8 |
12 |
5 |
-220 |
+344 |
benchmarks.run_pgo.linux.x64.checked.mch |
563 |
472 |
69 |
22 |
-16,960 |
+2,931 |
benchmarks.run_tiered.linux.x64.checked.mch |
9 |
2 |
5 |
2 |
-71 |
+133 |
coreclr_tests.run.linux.x64.checked.mch |
417 |
127 |
221 |
69 |
-1,100 |
+2,082 |
libraries.crossgen2.linux.x64.checked.mch |
1 |
1 |
0 |
0 |
-1 |
+0 |
libraries.pmi.linux.x64.checked.mch |
154 |
36 |
68 |
50 |
-425 |
+1,007 |
libraries_tests.run.linux.x64.Release.mch |
1,520 |
724 |
513 |
283 |
-9,774 |
+5,716 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
277 |
53 |
76 |
148 |
-498 |
+926 |
realworld.run.linux.x64.checked.mch |
27 |
7 |
15 |
5 |
-68 |
+179 |
smoke_tests.nativeaot.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2,993 |
1,430 |
979 |
584 |
-29,117 |
+13,318 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.x64.checked.mch |
34,975 |
3,135 |
31,840 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.linux.x64.checked.mch |
156,554 |
60,225 |
96,329 |
13 (0.01%) |
13 (0.01%) |
benchmarks.run_tiered.linux.x64.checked.mch |
56,298 |
42,308 |
13,990 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.linux.x64.checked.mch |
598,040 |
355,280 |
242,760 |
10 (0.00%) |
10 (0.00%) |
libraries.crossgen2.linux.x64.checked.mch |
1,930 |
0 |
1,930 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.x64.checked.mch |
296,878 |
6 |
296,872 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.linux.x64.Release.mch |
766,353 |
498,383 |
267,970 |
111 (0.01%) |
111 (0.01%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,396 |
21,912 |
283,484 |
0 (0.00%) |
0 (0.00%) |
realworld.run.linux.x64.checked.mch |
33,215 |
49 |
33,166 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.linux.x64.checked.mch |
64 |
0 |
64 |
0 (0.00%) |
0 (0.00%) |
|
2,249,703 |
981,298 |
1,268,405 |
134 (0.01%) |
134 (0.01%) |
jit-analyze output
benchmarks.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13723744 (overridden on cmd)
Total bytes of diff: 13723868 (overridden on cmd)
Total bytes of delta: 124 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 25 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 69144788 (overridden on cmd)
Total bytes of diff: 69130759 (overridden on cmd)
Total bytes of delta: -14029 (-0.02 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 86 unchanged.
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15897809 (overridden on cmd)
Total bytes of diff: 15897871 (overridden on cmd)
Total bytes of delta: 62 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 9 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 403316719 (overridden on cmd)
Total bytes of diff: 403317701 (overridden on cmd)
Total bytes of delta: 982 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 99 unchanged.
libraries.crossgen2.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 203687 (overridden on cmd)
Total bytes of diff: 203686 (overridden on cmd)
Total bytes of delta: -1 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 60405907 (overridden on cmd)
Total bytes of diff: 60406489 (overridden on cmd)
Total bytes of delta: 582 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 77 unchanged.
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 348249945 (overridden on cmd)
Total bytes of diff: 348245887 (overridden on cmd)
Total bytes of delta: -4058 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 80 unchanged.
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 132684063 (overridden on cmd)
Total bytes of diff: 132684491 (overridden on cmd)
Total bytes of delta: 428 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 78 unchanged.
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13212110 (overridden on cmd)
Total bytes of diff: 13212221 (overridden on cmd)
Total bytes of delta: 111 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 27 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
osx arm64
Diffs are based on 2,029,386 contexts (927,368 MinOpts, 1,102,018 FullOpts).
MISSED contexts: 109 (0.01%)
Overall (+1,280 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
11,185,284 |
+148 |
benchmarks.run_pgo.osx.arm64.checked.mch |
34,533,064 |
+1,584 |
benchmarks.run_tiered.osx.arm64.checked.mch |
15,508,464 |
+184 |
coreclr_tests.run.osx.arm64.checked.mch |
483,586,020 |
+1,016 |
libraries.crossgen2.osx.arm64.checked.mch |
311,684 |
+0 |
libraries.pmi.osx.arm64.checked.mch |
80,207,064 |
-24 |
libraries_tests.run.osx.arm64.Release.mch |
313,700,576 |
-1,948 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
163,153,084 |
+188 |
realworld.run.osx.arm64.checked.mch |
15,075,948 |
+132 |
FullOpts (+1,280 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
11,184,656 |
+148 |
benchmarks.run_pgo.osx.arm64.checked.mch |
18,159,716 |
+1,584 |
benchmarks.run_tiered.osx.arm64.checked.mch |
4,004,192 |
+184 |
coreclr_tests.run.osx.arm64.checked.mch |
153,413,252 |
+1,016 |
libraries.crossgen2.osx.arm64.checked.mch |
311,684 |
+0 |
libraries.pmi.osx.arm64.checked.mch |
80,085,936 |
-24 |
libraries_tests.run.osx.arm64.Release.mch |
111,962,988 |
-1,948 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
149,999,392 |
+188 |
realworld.run.osx.arm64.checked.mch |
14,511,996 |
+132 |
Example diffs
benchmarks.run.osx.arm64.checked.mch
-40 (-27.03%) : 5767.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-0.71%) : 15945.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)
@@ -8,19 +8,19 @@
; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T43] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
-; V01 arg1 [V01,T39] ( 5, 8 ) int -> x22 single-def
+; V00 this [V00,T44] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
+; V01 arg1 [V01,T40] ( 5, 8 ) int -> x22 single-def
; V02 arg2 [V02,T36] ( 6, 9 ) ref -> x21 class-hnd single-def <System.String>
-; V03 arg3 [V03,T40] ( 5, 8 ) long -> x23 single-def
-; V04 arg4 [V04,T41] ( 5, 8 ) int -> x24 single-def
-; V05 arg5 [V05,T42] ( 5, 8 ) int -> x25 single-def
+; V03 arg3 [V03,T41] ( 5, 8 ) long -> x23 single-def
+; V04 arg4 [V04,T42] ( 5, 8 ) int -> x24 single-def
+; V05 arg5 [V05,T43] ( 5, 8 ) int -> x25 single-def
; V06 arg6 [V06,T32] ( 7, 10 ) int -> x20 single-def
-; V07 arg7 [V07,T26] ( 12, 12 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]>
-; V08 loc0 [V08,T44] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]>
-; V09 loc1 [V09,T45] ( 5, 5 ) ubyte -> registers
-; V10 loc2 [V10,T16] ( 8, 22 ) int -> [fp+0x114]
-; V11 loc3 [V11,T17] ( 8, 22 ) int -> [fp+0x110]
-; V12 loc4 [V12,T53] ( 3, 3 ) int -> [fp+0x10C] spill-single-def
+; V07 arg7 [V07,T21] ( 12, 15 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]>
+; V08 loc0 [V08,T46] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]>
+; V09 loc1 [V09,T37] ( 5, 8 ) ubyte -> registers
+; V10 loc2 [V10,T15] ( 8, 25 ) int -> [fp+0x114]
+; V11 loc3 [V11,T16] ( 8, 25 ) int -> [fp+0x110]
+; V12 loc4 [V12,T45] ( 3, 6 ) int -> [fp+0x10C] spill-single-def
;* V13 loc5 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 loc6 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref
@@ -41,7 +41,7 @@
; V30 loc22 [V30,T34] ( 2, 9 ) ref -> [fp+0x30] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V31 loc23 [V31,T11] ( 5, 33 ) int -> [fp+0xB4]
; V32 loc24 [V32 ] ( 2, 16 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V33 loc25 [V33,T52] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
+; V33 loc25 [V33,T53] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
; V34 loc26 [V34,T35] ( 2, 9 ) ref -> x19 class-hnd exact single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V35 loc27 [V35,T12] ( 5, 33 ) int -> [fp+0x94]
;* V36 loc28 [V36 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
@@ -54,20 +54,20 @@
;* V43 tmp6 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
; V45 tmp8 [V45 ] ( 2, 16 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V46 tmp9 [V46,T48] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
+; V46 tmp9 [V46,T49] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
;* V47 tmp10 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp11 [V48,T49] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
+; V48 tmp11 [V48,T50] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
; V49 tmp12 [V49,T27] ( 2, 8 ) ubyte -> x3 "Inline return value spill temp"
; V50 tmp13 [V50,T28] ( 3, 12 ) ubyte -> x3 "Inline return value spill temp"
;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V52 tmp15 [V52,T15] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
-; V53 tmp16 [V53,T21] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
+; V52 tmp15 [V52,T17] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
+; V53 tmp16 [V53,T22] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
; V54 tmp17 [V54 ] ( 4, 16 ) byref -> [fp+0x70] must-init pinned "Inline stloc first use temp"
-; V55 tmp18 [V55,T37] ( 2, 8 ) long -> x2
+; V55 tmp18 [V55,T38] ( 2, 8 ) long -> x2
; V56 tmp19 [V56,T08] ( 2, 36 ) long -> [fp+0x68] spill-single-def "Inline stloc first use temp"
;* V57 tmp20 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V58 tmp21 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V59 tmp22 [V59,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp22 [V59,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp23 [V60 ] ( 2, 8 ) int -> [fp+0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V62 tmp25 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -77,22 +77,22 @@
; V66 tmp29 [V66 ] ( 2, 16 ) ref -> [fp+0xE8] do-not-enreg[X] addr-exposed "field V19.ParameterName (fldOffset=0x0)" P-DEP
; V67 tmp30 [V67 ] ( 2, 16 ) ref -> [fp+0xF0] do-not-enreg[X] addr-exposed "field V19.ParameterType (fldOffset=0x8)" P-DEP
; V68 tmp31 [V68 ] ( 2, 16 ) ref -> [fp+0xF8] do-not-enreg[X] addr-exposed "field V19.TypeInfo (fldOffset=0x10)" P-DEP
-; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
+; V69 tmp32 [V69,T24] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref "field V23.ParameterType (fldOffset=0x8)" P-INDEP
-; V71 tmp34 [V71,T24] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
+; V71 tmp34 [V71,T25] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
; V72 tmp35 [V72 ] ( 2, 16 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V32.ParameterName (fldOffset=0x0)" P-DEP
; V73 tmp36 [V73 ] ( 2, 16 ) ref -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V32.ParameterType (fldOffset=0x8)" P-DEP
; V74 tmp37 [V74 ] ( 2, 16 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed "field V32.TypeInfo (fldOffset=0x10)" P-DEP
-; V75 tmp38 [V75,T22] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
+; V75 tmp38 [V75,T23] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
;* V76 tmp39 [V76 ] ( 0, 0 ) ref -> zero-ref "field V36.ParameterType (fldOffset=0x8)" P-INDEP
; V77 tmp40 [V77,T19] ( 3, 20 ) ref -> x5 "field V36.TypeInfo (fldOffset=0x10)" P-INDEP
; V78 tmp41 [V78,T03] ( 3, 48 ) byref -> x1 "BlockOp address local"
-; V79 tmp42 [V79,T50] ( 2, 4 ) long -> x2 "Cast away GC"
-; V80 tmp43 [V80,T51] ( 2, 4 ) long -> x3 "Cast away GC"
-; V81 tmp44 [V81,T46] ( 2, 4 ) ref -> x7 "argument with side effect"
+; V79 tmp42 [V79,T51] ( 2, 4 ) long -> x1 "Cast away GC"
+; V80 tmp43 [V80,T52] ( 2, 4 ) long -> x3 "Cast away GC"
+; V81 tmp44 [V81,T47] ( 2, 4 ) ref -> x7 "argument with side effect"
; V82 tmp45 [V82,T04] ( 3, 48 ) byref -> x0 "BlockOp address local"
-; V83 tmp46 [V83,T25] ( 2, 16 ) long -> x2 "Cast away GC"
-; V84 tmp47 [V84,T47] ( 2, 16 ) ref -> x7 "argument with side effect"
+; V83 tmp46 [V83,T26] ( 2, 16 ) long -> x2 "Cast away GC"
+; V84 tmp47 [V84,T48] ( 2, 16 ) ref -> x7 "argument with side effect"
; V85 PSPSym [V85,T60] ( 1, 1 ) long -> [fp+0x118] do-not-enreg[V] "PSPSym"
; V86 cse0 [V86,T29] ( 3, 12 ) int -> [fp+0x58] spill-single-def "CSE - moderate"
; V87 cse1 [V87,T54] ( 3, 3 ) int -> x28 "CSE - moderate"
@@ -137,8 +137,8 @@ G_M27295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov x19, x7
; gcrRegs +[x19]
;; size=104 bbWeight=1 PerfScore 19.00
-G_M27295_IG02: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V33 V52}
+G_M27295_IG02: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V33 V53}
mov w27, wzr
;; size=4 bbWeight=1 PerfScore 0.50
G_M27295_IG03: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref, isz
@@ -184,10 +184,10 @@ G_M27295_IG04: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0
ldr w7, [x5, #0x08]
str w7, [fp, #0x50] // [V89 cse3]
cmp w7, #0
- ble G_M27295_IG10
+ ble G_M27295_IG11
;; size=28 bbWeight=1 PerfScore 7.50
-G_M27295_IG05: ; bbWeight=8, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V52}
+G_M27295_IG05: ; bbWeight=8, gcVars=0020000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V53}
mov w0, #24
mov x1, #16
str w6, [fp, #0xD1FFAB1E] // [V18 loc10]
@@ -212,70 +212,22 @@ G_M27295_IG07: ; bbWeight=8, isz, extend
blr x8
; gcrRegs -[x5]
; gcr arg pop 0
- cbz w0, G_M27295_IG11
- ldr w1, [fp, #0xE0] // [V20 loc12]
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- add w2, w2, w1
- ldr w1, [fp, #0xD1FFAB1E] // [V18 loc10]
- add w1, w1, #1
- ldr w3, [fp, #0x50] // [V89 cse3]
- cmp w3, w1
- mov w6, w1
- ldr x5, [fp, #0x40] // [V17 loc9]
- ; gcrRegs +[x5]
- bgt G_M27295_IG09
- ;; size=72 bbWeight=8 PerfScore 164.00
-G_M27295_IG08: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
+ cbnz w0, G_M27295_IG12
+ ;; size=32 bbWeight=8 PerfScore 60.00
+G_M27295_IG08: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- mov w1, #6
- cmp w20, #0
- csel w1, wzr, w1, eq
- ldr w4, [fp, #0xD1FFAB1E] // [V11 loc3]
- add w0, w4, #5
- str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
- cmp w4, #0
- csel w0, wzr, w0, eq
- str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- add w0, w2, w0
- add w5, w0, w1
- str w5, [fp, #0xD1FFAB1E] // [V16 loc8]
- sxtw x1, w5
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWARR_1_VC
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- str x0, [fp, #0x48] // [V08 loc0]
- ; GC ptr vars +{V08}
- b G_M27295_IG15
- ;; size=76 bbWeight=1 PerfScore 14.00
-G_M27295_IG09: ; bbWeight=4, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x5]
- ; GC ptr vars -{V08} +{V17 V31}
- str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG05
- ;; size=8 bbWeight=4 PerfScore 8.00
-G_M27295_IG10: ; bbWeight=0.50, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
- ; GC ptr vars -{V17 V31}
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M27295_IG11: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref
mov w27, #1
ldr w2, [fp, #0xD1FFAB1E] // [V12 loc4]
str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- mov w4, #4
- str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
+ mov w1, #4
+ str w1, [fp, #0xD1FFAB1E] // [V11 loc3]
mov x5, x19
; gcrRegs +[x5]
str x5, [fp, #0x38] // [V21 loc13]
; GC ptr vars +{V21}
mov w6, wzr
;; size=32 bbWeight=1 PerfScore 7.00
-G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27295_IG09: ; bbWeight=8, gcVars=0020000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
mov w1, #24
mov x0, #16
str w6, [fp, #0xDC] // [V22 loc14]
@@ -301,30 +253,11 @@ G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs
blr x7
; gcrRegs -[x0 x5]
; gcr arg pop 0
- cbz w0, G_M27295_IG14
- ldr w0, [fp, #0x88] // [V45 tmp8]
- ldr w1, [fp, #0xD8] // [V24 loc16]
- add w1, w1, w0
- ldr w2, [fp, #0xD1FFAB1E] // [V11 loc3]
- add w2, w2, w1
- ldr w0, [fp, #0xDC] // [V22 loc14]
- add w0, w0, #1
- ldr w1, [fp, #0x50] // [V89 cse3]
- cmp w1, w0
- str w2, [fp, #0xD1FFAB1E] // [V11 loc3]
- mov w6, w0
- ldr x5, [fp, #0x38] // [V21 loc13]
- ; gcrRegs +[x5]
- bgt G_M27295_IG12
- ;; size=128 bbWeight=8 PerfScore 344.00
-G_M27295_IG13: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
- ; GC ptr vars -{V21 V33}
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG08
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M27295_IG14
+ ;; size=76 bbWeight=8 PerfScore 212.00
+G_M27295_IG10: ; bbWeight=4, gcVars=0020000000000000 {V33}, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
+ ; GC ptr vars -{V21 V33}
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -337,47 +270,112 @@ G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000
ldr x19, [x0]
; gcrRegs +[x19]
ldr w27, [fp, #0xD1FFAB1E] // [V12 loc4]
- str wzr, [fp, #0xD1FFAB1E] // [V11 loc3]
- mov w2, wzr
- mov w0, w2
- mov w2, w27
+ mov w4, wzr
+ mov w0, wzr
+ str w27, [fp, #0xD1FFAB1E] // [V10 loc2]
+ str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
mov w27, w0
- b G_M27295_IG08
- ;; size=64 bbWeight=1 PerfScore 13.50
...
-4 (-0.15%) : 5961.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -23,24 +23,24 @@
; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1
;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt"
;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg"
;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -67,13 +67,13 @@
;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
-; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg"
-; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
+; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]>
; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg"
; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]>
@@ -90,14 +90,14 @@
;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
-; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
+; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP
;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
@@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x40] // [V100 tmp78]
cmp w1, w2
bhi G_M4730_IG74
- cmp w1, #0
- cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w3, [x1, #0x08]
cmp w3, w0
bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x27]
add x1, x1, #16
@@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {},
beq G_M4730_IG67
b G_M4730_IG27
;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89}
str w1, [fp, #0x60] // [V10 loc6]
mov w28, w2
@@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; GC ptr vars +{V89}
ldr w28, [fp, #0x68] // [V07 loc3]
;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3]
; GC ptr vars -{V57}
cmp w25, w26
@@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}
; GC ptr vars +{V13}
cbz x24, G_M4730_IG39
;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26]
ldr w26, [fp, #0x44] // [V90 tmp68]
cbz w26, G_M4730_IG32
@@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
str w0, [x19, #0x18]
b G_M4730_IG41
;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27]
; GC ptr vars +{V13 V16 V89}
b G_M4730_IG42
@@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; gcrRegs -[x26]
b G_M4730_IG47
;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26]
; GC ptr vars +{V13 V16 V89}
ldr x2, [fp, #0x30] // [V13 loc9]
@@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcr arg pop 0
b G_M4730_IG06
;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27]
; GC ptr vars +{V13 V16 V89}
ldr x1, [fp, #0x30] // [V13 loc9]
@@ -1212,7 +1211,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2688, prolog size 48, PerfScore 6977.50, instruction count 672, allocated bytes for code 2688 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2684, prolog size 48, PerfScore 6975.50, instruction count 671, allocated bytes for code 2684 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1223,7 +1222,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 672 (0x002a0) Actual length = 2688 (0x000a80)
+ Function Length : 671 (0x0029f) Actual length = 2684 (0x000a7c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.61%) : 5880.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
@@ -76,7 +76,7 @@ G_M60940_IG02: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=800
G_M60940_IG03: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
cbnz x0, G_M60940_IG04
str xzr, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=12 bbWeight=1 PerfScore 3.00
G_M60940_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -128,7 +128,7 @@ G_M60940_IG05: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {},
ldr x0, [fp, #0x38] // [V07 loc3]
; gcrRegs +[x0]
str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=52 bbWeight=1 PerfScore 14.00
G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -144,7 +144,7 @@ G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w2, wzr
mov w3, wzr
cmp w1, #0
- ble G_M60940_IG11
+ ble G_M60940_IG13
;; size=44 bbWeight=1 PerfScore 13.00
G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w4, #24
@@ -159,21 +159,28 @@ G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr w2, [fp, #0x28] // [V10 loc6+0x08]
; byrRegs -[x2]
cmp w2, #17
- beq G_M60940_IG10
+ bne G_M60940_IG10
+ ;; size=44 bbWeight=8 PerfScore 152.00
+G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M60940_IG12
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ b G_M60940_IG13
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M60940_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
add w2, w3, #1
sxtw w3, w2
cmp w1, w3
bgt G_M60940_IG07
- ;; size=60 bbWeight=8 PerfScore 172.00
-G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=8 PerfScore 20.00
+G_M60940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M60940_IG11
+ b G_M60940_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- nop
- b G_M60940_IG11
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, fp, #32 // [V10 loc6]
ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
@@ -184,9 +191,9 @@ G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcr arg pop 0
str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=36 bbWeight=1 PerfScore 10.00
-G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG13: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; GC ptr vars -{V05}
ldr x0, [fp, #0x18] // [V04 loc0]
@@ -199,36 +206,36 @@ G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=000
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M60940_IG16
+ b G_M60940_IG18
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG12: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04 V05}
ldr x0, [fp, #0x48] // [V34 PSPSym]
- bl G_M60940_IG27
+ bl G_M60940_IG29
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60940_IG13: ; bbWeight=1, nogc, extend
+G_M60940_IG15: ; bbWeight=1, nogc, extend
nop
;; size=4 bbWeight=1 PerfScore 0.50
-G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05}
ldr x0, [fp, #0x10] // [V05 loc1]
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M60940_IG15: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x50]
- ldp fp, lr, [sp], #0x60
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x60
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M60940_IG19: ; bbWeight=1, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x50]
+ ldp fp, lr, [sp], #0x60
+ ret lr
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M60940_IG20: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
@@ -236,7 +243,7 @@ G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
str x1, [sp, #0x18]
sub fp, x1, #96
;; size=20 bbWeight=0 PerfScore 0.00
-G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG21: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05}
mov x1, x0
; gcrRegs +[x1]
@@ -249,12 +256,12 @@ G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- cbnz x19, G_M60940_IG20
+ cbnz x19, G_M60940_IG22
mov w0, wzr
; gcrRegs -[x0]
- b G_M60940_IG23
+ b G_M60940_IG25
;; size=36 bbWeight=0 PerfScore 0.00
-G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -263,7 +270,7 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M60940_IG21
+ cbnz x0, G_M60940_IG23
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -276,44 +283,44 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x0, #0
cset x0, ne
; gcrRegs -[x0]
- b G_M60940_IG22
+ b G_M60940_IG24
;; size=56 bbWeight=0 PerfScore 0.00
-G_M60940_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0
cset x0, ne
;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #96
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M60940_IG25: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG27: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
adr x0, [G_M60940_IG09]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M60940_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #96
str x3, [sp, #0x18]
;; size=16 bbWeight=1 PerfScore 3.50
-G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG30: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
- cbz x0, G_M60940_IG29
+ cbz x0, G_M60940_IG31
movz x1, #0xD1FFAB1E // code for System.Reflection.PortableExecutable.PEReader:Dispose():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -323,7 +330,7 @@ G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
@@ -331,7 +338,7 @@ G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
RWD00 dq 0000000104814218h, 00000001084987B0h
-Total bytes of code 652, prolog size 32, PerfScore 283.00, instruction count 163, allocated bytes for code 652 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
+Total bytes of code 656, prolog size 32, PerfScore 284.00, instruction count 164, allocated bytes for code 656 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
; ============================================================
Unwind Info:
@@ -342,7 +349,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -410,7 +417,7 @@ Unwind Info:
*************** EH table for System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider
2 EH table entries, 1 duplicate clauses, 1 cloned finallys, 4 total EH entries reported to VM
-EH#0: try [G_M60940_IG10..G_M60940_IG11) handled by [G_M60940_IG24..G_M60940_IG27) filter at [G_M60940_IG18..G_M60940_IG24)
...
+16 (+0.67%) : 16579.dasm - System.Text.Json.Tests.Perf_Deep:WriteDeepUtf16():this (FullOpts)
@@ -12,7 +12,7 @@
; V01 loc0 [V01,T00] ( 69,116.50) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Text.Json.Utf8JsonWriter>
; V02 loc1 [V02 ] ( 9, 7 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init ld-addr-op <System.Text.Json.JsonWriterOptions>
; V03 loc2 [V03,T09] ( 6, 21 ) int -> x21
-; V04 loc3 [V04,T02] ( 8, 29 ) int -> x24
+; V04 loc3 [V04,T02] ( 8, 29 ) int -> x21
; V05 loc4 [V05,T18] ( 4, 13 ) int -> x19
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T42] ( 3, 6 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Buffers.ArrayBufferWriter`1[ubyte]>
@@ -86,8 +86,8 @@
;* V75 tmp69 [V75 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V76 tmp70 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V77 tmp71 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x21 "Inlining Arg"
-; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x22 "Inlining Arg"
+; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x26 "Inlining Arg"
;* V80 tmp74 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V81 tmp75 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V82 tmp76 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -100,7 +100,7 @@
; V89 tmp83 [V89,T33] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
; V90 tmp84 [V90,T24] ( 5, 10 ) ref -> x0
;* V91 tmp85 [V91 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x22 "Inline stloc first use temp"
+; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x27 "Inline stloc first use temp"
;* V93 tmp87 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V94 tmp88 [V94 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V95 tmp89 [V95,T14] ( 2, 16 ) int -> x1 "Inlining Arg"
@@ -145,10 +145,10 @@
;* V134 tmp128 [V134 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP
;* V135 tmp129 [V135 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
;* V136 tmp130 [V136 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x25 "field V75._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x21 "field V75._length (fldOffset=0x8)" P-INDEP
-; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x25 "field V76._reference (fldOffset=0x0)" P-INDEP
-; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x21 "field V76._length (fldOffset=0x8)" P-INDEP
+; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x26 "field V75._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x22 "field V75._length (fldOffset=0x8)" P-INDEP
+; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x26 "field V76._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x22 "field V76._length (fldOffset=0x8)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
;* V143 tmp137 [V143 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP
@@ -159,7 +159,7 @@
; V148 tmp142 [V148,T37] ( 2, 8 ) long -> x24 "Cast away GC"
; V149 tmp143 [V149,T51] ( 2, 4 ) long -> x25 "Cast away GC"
; V150 tmp144 [V150,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x22 "Cast away GC"
+; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x27 "Cast away GC"
; V152 tmp146 [V152,T07] ( 3, 24 ) ref -> x1 "arr expr"
; V153 PSPSym [V153,T61] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym"
; V154 cse0 [V154,T17] ( 4, 14 ) int -> x0 "CSE - moderate"
@@ -170,21 +170,22 @@
; Lcl frame size = 72
G_M54203_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0xA0]!
stp x19, x20, [sp, #0x58]
stp x21, x22, [sp, #0x68]
stp x23, x24, [sp, #0x78]
- str x25, [sp, #0x88]
+ stp x25, x26, [sp, #0x88]
+ str x27, [sp, #0x98]
mov fp, sp
add x9, fp, #32
movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]
- add x1, sp, #144
+ add x1, sp, #160
str x1, [fp, #0x50] // [V153 PSPSym]
mov x19, x0
; gcrRegs +[x19]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M54203_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08]
; gcrRegs +[x20]
@@ -485,18 +486,18 @@ G_M54203_IG28: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
str w0, [x20, #0x28]
mov w0, #3
strb w0, [x20, #0x36]
- mov w24, wzr
+ mov w21, wzr
;; size=32 bbWeight=1 PerfScore 8.00
G_M54203_IG29: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x28]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
- cmp w24, w1
+ cmp w21, w1
bhs G_M54203_IG47
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x22, [x0, w24, UXTW #3]
+ ldr x22, [x0, w21, UXTW #3]
; gcrRegs +[x22]
cbnz x22, G_M54203_IG61
;; size=28 bbWeight=4 PerfScore 48.00
@@ -517,12 +518,12 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
- cmp w24, w0
+ cmp w21, w0
bhs G_M54203_IG47
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
- ldr w1, [x1, w24, UXTW #2]
+ ldr w1, [x1, w21, UXTW #2]
; byrRegs -[x1]
sxtw x1, w1
mov x0, x20
@@ -534,10 +535,10 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- add w24, w24, #1
+ add w21, w21, #1
movz w0, #0xD1FFAB1E
movk w0, #1 LSL #16
- cmp w24, w0
+ cmp w21, w0
blt G_M54203_IG29
;; size=72 bbWeight=4 PerfScore 82.00
G_M54203_IG32: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
@@ -631,7 +632,7 @@ G_M54203_IG39: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
b G_M54203_IG72
;; size=64 bbWeight=1 PerfScore 15.00
G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov w0, w21
+ mov w0, w22
movz x1, #0xD1FFAB1E // code for System.Text.Json.ThrowHelper:ThrowArgumentException_ValueTooLarge(long)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -640,9 +641,9 @@ G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
+G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
; gcrRegs +[x19]
- ; byrRegs +[x25]
+ ; byrRegs +[x26]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -653,7 +654,7 @@ G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
;; size=24 bbWeight=0 PerfScore 0.00
G_M54203_IG42: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x25]
+ ; byrRegs -[x26]
ldrb w4, [x20, #0x36]
ldr w2, [x20, #0x68]
mov w0, #31
@@ -915,27 +916,27 @@ G_M54203_IG60: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=100
;; size=40 bbWeight=0.50 PerfScore 4.25
G_M54203_IG61: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- add x25, x22, #12
- ; byrRegs +[x25]
- ldr w21, [x22, #0x08]
+ add x26, x22, #12
+ ; byrRegs +[x26]
+ ldr w22, [x22, #0x08]
+ ; gcrRegs -[x22]
movz w0, #0xD1FFAB1E
movk w0, #0xD1FFAB1E LSL #16
- cmp w21, w0
+ cmp w22, w0
bgt G_M54203_IG40
add x0, x20, #96
; byrRegs +[x0]
ldr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbnz w21, G_M54203_IG62
+ cbnz w22, G_M54203_IG62
movn w3, #0
b G_M54203_IG65
;; size=44 bbWeight=2 PerfScore 24.00
-G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref, isz
- ; gcrRegs -[x22]
- mov x22, x25
- ; byrRegs +[x22]
- str x22, [fp, #0x20] // [V87 tmp81]
+G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x27, x26
+ ; byrRegs +[x27]
+ str x27, [fp, #0x20] // [V87 tmp81]
cbnz x0, G_M54203_IG64
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
@@ -944,17 +945,17 @@ G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200
ldr w0, [x0]
tbz w0, #0, G_M54203_IG41
;; size=32 bbWeight=2 PerfScore 16.00
-G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
- ; byrRegs -[x22]
+G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ; byrRegs -[x27]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
;; size=16 bbWeight=2 PerfScore 9.00
-G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
- mov x1, x22
- mov w2, w21
+G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref
+ mov x1, x27
+ mov w2, w22
ldr x3, [x0]
ldr x3, [x3, #0x48]
ldr x3, [x3, #0x28]
@@ -963,13 +964,13 @@ G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200
; gcr arg pop 0
sxtw w3, w0
;; size=28 bbWeight=2 PerfScore 23.00
-G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
str xzr, [fp, #0x20] // [V87 tmp81]
cmn w3, #1
beq G_M54203_IG66
- mov x1, x25
+ mov x1, x26
; byrRegs +[x1]
- mov w2, w21
+ mov w2, w22
mov x0, x20
; gcrRegs +[x0]
movz x4, #0xD1FFAB1E // code for <unknown method>
@@ -978,12 +979,12 @@ G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
ldr x4, [x4]
blr x4
; gcrRegs -[x0]
- ; byrRegs -[x1 x25]
+ ; byrRegs -[x1 x26]
; gcr arg pop 0
b G_M54203_IG69
;; size=48 bbWeight=2 PerfScore 21.00
-G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
- ; byrRegs +[x25]
+G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
...
+20 (+3.94%) : 21852.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -33,10 +33,10 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value"
; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG23
- cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25
+ cbz w21, G_M46295_IG19
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG17
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG14
- cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16
+ cbnz x23, G_M46295_IG12
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08]
sub w0, w0, w24
cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12
; byrRegs +[x2]
sbfiz x0, x24, #1, #32
@@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -244,7 +255,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=40 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -254,7 +265,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 508, prolog size 32, PerfScore 659.00, instruction count 127, allocated bytes for code 508 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 528, prolog size 32, PerfScore 671.00, instruction count 132, allocated bytes for code 528 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -265,7 +276,7 @@ Unwind Info:
E bit : 0
...
benchmarks.run_pgo.osx.arm64.checked.mch
-16 (-3.54%) : 76508.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary
2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
@@ -23,7 +23,7 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
; V12 tmp6 [V12,T05] ( 2,399.96) long -> x1 "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> x23 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> x23 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> x24 class-hnd "Inlining Arg" <System.__Canon>
@@ -39,9 +39,9 @@
; V26 tmp20 [V26,T03] ( 2,400 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon>
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> x24 "V04.[000..008)"
-; V30 tmp24 [V30,T14] ( 4,101.01) int -> x25 "V04.[008..012)"
-; V31 tmp25 [V31,T07] ( 6,301.01) int -> registers "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> x24 "V04.[000..008)"
+; V30 tmp24 [V30,T14] ( 3,101.01) int -> x25 "V04.[008..012)"
+; V31 tmp25 [V31,T06] ( 6,301.01) int -> registers "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> x2 "V04.[024..032)"
; V33 tmp27 [V33,T11] ( 3,199.99) long -> x4 "V04.[032..040)"
;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)"
@@ -80,15 +80,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldp w25, w26, [fp, #0xF8] // [V04 loc2+0x08], [V04 loc2+0x0c]
;; size=12 bbWeight=1 PerfScore 4.50
G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- cbz w23, G_M19783_IG08
+ cbz w23, G_M19783_IG06
;; size=4 bbWeight=0.01 PerfScore 0.01
G_M19783_IG04: ; bbWeight=7.41, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
- b G_M19783_IG08
+ b G_M19783_IG06
;; size=4 bbWeight=7.41 PerfScore 7.41
G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x24]
cmp w22, w0
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
add x0, x19, #16
; byrRegs +[x0]
ldr x0, [x0, w22, UXTW #3]
@@ -107,11 +107,15 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
mov w26, wzr
b G_M19783_IG03
;; size=56 bbWeight=0.01 PerfScore 0.17
-G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ mov w23, #1
+ ldr w0, [x24, #0x44]
+ cmp w25, w0
+ bne G_M19783_IG18
ldr w27, [x24, #0x38]
- b G_M19783_IG10
- ;; size=8 bbWeight=100 PerfScore 400.00
+ b G_M19783_IG09
+ ;; size=24 bbWeight=100 PerfScore 900.00
G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
sxtw x0, w22
@@ -127,23 +131,17 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24},
blr x4
; gcrRegs -[x0 x2]
; gcr arg pop 0
- cbz w0, G_M19783_IG15
- ;; size=44 bbWeight=99.99 PerfScore 1199.89
-G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- mov w23, #1
- ldr w0, [x24, #0x44]
- cmp w25, w0
- bne G_M19783_IG19
+ cbz w0, G_M19783_IG14
b G_M19783_IG06
- ;; size=20 bbWeight=100 PerfScore 600.00
-G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=99.99 PerfScore 1299.88
+G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24, #0x10]
; gcrRegs +[x0]
add w1, w26, #1
sxtw w28, w1
ldr w1, [x0, #0x08]
cmp w26, w1
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
mov w1, #24
mov x2, #16
umaddl x1, w26, w1, x2
@@ -153,38 +151,38 @@ G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr w1, [x0, #0x14]
cmn w1, #1
mov w26, w28
- bge G_M19783_IG11
+ bge G_M19783_IG10
;; size=56 bbWeight=100 PerfScore 2000.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cmp w26, w27
- bhs G_M19783_IG16
- b G_M19783_IG09
+ bhs G_M19783_IG15
+ b G_M19783_IG08
;; size=12 bbWeight=100 PerfScore 250.00
-G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
+G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldp x2, x4, [x0]
; gcrRegs +[x2]
mov w28, #1
;; size=8 bbWeight=100 PerfScore 450.00
-G_M19783_IG12: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cbnz w28, G_M19783_IG07
;; size=4 bbWeight=100 PerfScore 100.00
-G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG12: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x24]
add w22, w22, #1
ldr w0, [x19, #0x08]
cmp w0, w22
- ble G_M19783_IG17
+ ble G_M19783_IG16
b G_M19783_IG05
;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21 x24]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -198,21 +196,17 @@ G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x2, [x2]
blr x2
; gcr arg pop 0
- mov w23, #1
- ldr w1, [x24, #0x44]
- cmp w25, w1
- beq G_M19783_IG06
- b G_M19783_IG19
- ;; size=64 bbWeight=0 PerfScore 0.00
-G_M19783_IG16: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+ b G_M19783_IG06
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
add w26, w27, #1
mov x2, xzr
; gcrRegs +[x2]
mov x4, xzr
mov w28, wzr
- b G_M19783_IG12
+ b G_M19783_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M19783_IG16: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x19 x24]
ldr x2, [x20, #0x08]
; gcrRegs +[x2]
@@ -226,7 +220,7 @@ G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
; gcrRegs -[x1 x20-x21]
; gcr arg pop 0
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG17: ; bbWeight=0, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -236,7 +230,7 @@ G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
add sp, sp, #224
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
@@ -247,7 +241,7 @@ G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 452, prolog size 40, PerfScore 5025.53, instruction count 113, allocated bytes for code 452 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 436, prolog size 40, PerfScore 5025.52, instruction count 109, allocated bytes for code 436 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -258,7 +252,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-44 (-3.06%) : 32953.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)
@@ -8,8 +8,8 @@
; 7 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T31] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
-; V01 arg1 [V01,T32] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V00 arg0 [V00,T30] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V01 arg1 [V01,T31] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
; V02 loc0 [V02,T28] ( 6, 6 ) long -> x19
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[uint]>
; V04 loc2 [V04,T29] ( 6, 6 ) long -> x21
@@ -23,8 +23,8 @@
;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]>
;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ptr
; V14 loc12 [V14,T05] ( 13, 39 ) int -> [fp+0x64] ptr
-; V15 loc13 [V15,T11] ( 8, 18 ) int -> [fp+0x60] spill-single-def ptr
-; V16 loc14 [V16,T18] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
+; V15 loc13 [V15,T11] ( 7, 18 ) int -> [fp+0x60] spill-single-def ptr
+; V16 loc14 [V16,T17] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
; V17 loc15 [V17,T03] ( 6, 60 ) long -> [fp+0x50] ptr
; V18 loc16 [V18,T10] ( 3, 22 ) int -> [fp+0x4C] ptr
; V19 loc17 [V19,T02] ( 13,114 ) long -> [fp+0x40] ptr
@@ -38,7 +38,7 @@
; V27 tmp5 [V27,T33] ( 3, 6 ) int -> x0 "Span.get_Item index"
; V28 tmp6 [V28,T63] ( 2, 2 ) int -> x0 "Span.get_Item index"
; V29 tmp7 [V29,T59] ( 5, 3 ) int -> x0
-; V30 tmp8 [V30,T24] ( 3, 8 ) int -> x7
+; V30 tmp8 [V30,T23] ( 3, 8 ) int -> x7
; V31 tmp9 [V31,T16] ( 5, 12 ) int -> x0
;* V32 tmp10 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[uint]>
;* V33 tmp11 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
@@ -64,8 +64,8 @@
;* V53 tmp31 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp33 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V56 tmp34 [V56,T19] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg"
-; V57 tmp35 [V57,T25] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
+; V56 tmp34 [V56,T18] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg"
+; V57 tmp35 [V57,T24] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V59 tmp37 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V60 tmp38 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -77,8 +77,8 @@
;* V66 tmp44 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V67 tmp45 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V69 tmp47 [V69,T17] ( 5, 12 ) int -> [fp+0x38] ptr "Inlining Arg"
-; V70 tmp48 [V70,T23] ( 3, 8 ) byref -> [fp+0x18] ptr "Inlining Arg"
+; V69 tmp47 [V69,T19] ( 3, 12 ) int -> [fp+0x38] spill-single-def ptr "Inlining Arg"
+; V70 tmp48 [V70,T25] ( 2, 8 ) byref -> [fp+0x18] spill-single-def ptr "Inlining Arg"
;* V71 tmp49 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V72 tmp50 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -92,7 +92,7 @@
; V81 tmp59 [V81,T48] ( 2, 4 ) long -> x0 "Inlining Arg"
; V82 tmp60 [V82,T49] ( 2, 4 ) long -> x1 "Inlining Arg"
; V83 tmp61 [V83,T14] ( 7, 15 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp62 [V84,T09] ( 15, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V84 tmp62 [V84,T09] ( 14, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
; V85 tmp63 [V85,T13] ( 6, 7 ) byref -> x21 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V86 tmp64 [V86,T08] ( 15, 21.50) int -> x22 "field V05._length (fldOffset=0x8)" P-INDEP
; V87 tmp65 [V87,T20] ( 7, 8 ) byref -> x23 single-def "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -132,7 +132,7 @@
; V121 tmp99 [V121,T43] ( 4, 4 ) long -> x2 "V01.[000..008)"
; V122 tmp100 [V122,T40] ( 5, 5 ) long -> x3 "V01.[008..016)"
; V123 GsCookie [V123 ] ( 1, 1 ) long -> [fp+0xB8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V124 cse0 [V124,T30] ( 4, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V124 cse0 [V124,T32] ( 3, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V125 cse1 [V125,T12] ( 4, 16 ) int -> [fp+0x34] spill-single-def "CSE - aggressive"
; V126 cse2 [V126,T26] ( 6, 7.50) int -> x3 multi-def "CSE - moderate"
; V127 cse3 [V127,T37] ( 3, 6 ) int -> x0 "CSE - moderate"
@@ -176,7 +176,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add w0, w1, w0
neg w0, w0, ASR #5
add w20, w0, #4
- tbnz w20, #31, G_M55503_IG48
+ tbnz w20, #31, G_M55503_IG46
add x21, fp, #152 // [V24 tmp2]
str w2, [x21]
lsr x0, x2, #32
@@ -193,13 +193,13 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add w0, w1, w0
neg w0, w0, ASR #5
add w22, w0, #4
- tbnz w22, #31, G_M55503_IG48
+ tbnz w22, #31, G_M55503_IG46
add x23, fp, #136 // [V25 tmp3]
stp xzr, xzr, [x23]
sub w0, w20, w22
add w24, w0, #1
cmp w24, #4
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
cmp w24, #0
cset x0, ge
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
@@ -278,7 +278,7 @@ G_M55503_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A80000 {x19
G_M55503_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
sxtw w5, w20
cmp w20, w22
- blt G_M55503_IG36
+ blt G_M55503_IG37
;; size=12 bbWeight=1 PerfScore 2.00
G_M55503_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
sub w6, w5, w22
@@ -383,11 +383,11 @@ G_M55503_IG25: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x2
bhi G_M55503_IG22
;; size=20 bbWeight=16 PerfScore 56.00
G_M55503_IG26: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
- cbz x13, G_M55503_IG31
+ cbz x13, G_M55503_IG32
;; size=4 bbWeight=8 PerfScore 8.00
G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w20
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
ubfiz x0, x6, #2, #32
add x9, x19, x0
; byrRegs +[x9]
@@ -402,7 +402,7 @@ G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21
str w5, [fp, #0x64] // [V14 loc12]
tbnz w1, #31, G_M55503_IG43
;; size=44 bbWeight=2 PerfScore 18.00
-G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000101000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; byrRegs -[x9]
mov x2, x21
; byrRegs +[x2]
@@ -417,60 +417,78 @@ G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57
blr x10
; byrRegs -[x0 x2]
; gcr arg pop 0
- ldr w4, [fp, #0x5C] // [V16 loc14]
- cmp w0, w4
+ ldr w2, [fp, #0x5C] // [V16 loc14]
+ cmp w0, w2
beq G_M55503_IG39
- add w1, w4, #1
+ add w1, w2, #1
cmp w0, w1
- bne G_M55503_IG44
+ beq G_M55503_IG29
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcr arg pop 0
+ ;; size=104 bbWeight=2 PerfScore 44.00
+G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr x0, [fp, #0x10] // [V124 cse0]
; byrRegs +[x0]
- ldr w5, [fp, #0x60] // [V15 loc13]
- sub w1, w20, w5
- tbnz w1, #31, G_M55503_IG38
- ;; size=76 bbWeight=2 PerfScore 38.00
-G_M55503_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V70 tmp48]
+ ; GC ptr vars +{V70}
+ ldr w4, [fp, #0x60] // [V15 loc13]
+ sub w1, w20, w4
+ str w1, [fp, #0x38] // [V69 tmp47]
+ tbnz w1, #31, G_M55503_IG44
+ ;; size=24 bbWeight=2 PerfScore 15.00
+G_M55503_IG30: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V70}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; GC ptr vars -{V124}
mov x2, x21
; byrRegs +[x2]
mov w3, w22
- movz x4, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #1 LSL #32
- ldr x4, [x4]
- blr x4
+ movz x5, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint
+ movk x5, #0xD1FFAB1E LSL #16
+ movk x5, #1 LSL #32
+ ldr x5, [x5]
+ ; GC ptr vars -{V70}
+ blr x5
; byrRegs -[x0 x2]
; gcr arg pop 0
ldr x2, [fp, #0x40] // [V19 loc17]
sub x2, x2, #1
cmp w0, #1
- bne G_M55503_IG47
+ bne G_M55503_IG45
;; size=44 bbWeight=2 PerfScore 21.00
-G_M55503_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
mov x13, x2
ldp w6, w5, [fp, #0x60] // [V15 loc13], [V14 loc12]
;; size=8 bbWeight=1 PerfScore 2.50
-G_M55503_IG31: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w24
- bhs G_M55503_IG33
+ bhs G_M55503_IG34
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG32: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str w13, [x23, w6, UXTW #2]
;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w5, w20
- bhs G_M55503_IG35
+ bhs G_M55503_IG36
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str wzr, [x19, w5, UXTW #2]
;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr w8, [fp, #0x34] // [V125 cse1]
sxtw w5, w8
cmp w5, w22
bge G_M55503_IG10
;; size=16 bbWeight=4 PerfScore 16.00
-G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x19 x21]
ldp w1, w0, [x23, #0x08]
orr x1, x1, x0, LSL #32
@@ -482,12 +500,12 @@ G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0xB8] // [V123 GsCookie]
cmp xip0, xip1
- beq G_M55503_IG37
+ beq G_M55503_IG38
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x23]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 14.50
-G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x27, x28, [sp, #0xD1FFAB1E]
ldp x25, x26, [sp, #0xF0]
ldp x23, x24, [sp, #0xE0]
@@ -496,19 +514,11 @@ G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0xD1FFAB1E
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
...
-8 (-1.33%) : 67213.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueImmutableDictionary():ubyte:this (Tier1-OSR)
@@ -13,70 +13,68 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
; V01 loc0 [V01,T06] ( 9, 799.92) ubyte -> x20
; V02 loc1 [V02,T11] ( 6, 299.97) ref -> x21 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T17] ( 3, 1.02) ref -> x22 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T14] ( 3, 100 ) ref -> x22 class-hnd exact <<unknown class>>
; V04 loc3 [V04,T05] ( 17,1300.89) int -> x19
; V05 loc4 [V05 ] ( 5, 400.96) ref -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x25 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x24 class-hnd exact "Inlining Arg" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
; V10 tmp4 [V10,T07] ( 8, 799.92) ubyte -> x0 "Inline return value spill temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
; V12 tmp6 [V12,T03] ( 6,2560.48) int -> x0 "Inline stloc first use temp"
-; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
+; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V15 tmp9 [V15,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V17 tmp11 [V17,T00] ( 14,4813.94) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V17 tmp11 [V17,T00] ( 14,4813.94) ref -> x25 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V08._root (fldOffset=0x0)" P-INDEP
;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref "field V08._comparers (fldOffset=0x8)" P-INDEP
-; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x26 "field V09._root (fldOffset=0x0)" P-INDEP
-; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x27 "field V09._comparers (fldOffset=0x8)" P-INDEP
+; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x25 "field V09._root (fldOffset=0x0)" P-INDEP
+; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x26 "field V09._comparers (fldOffset=0x8)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref "field V11._root (fldOffset=0x0)" P-INDEP
-; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x27 "field V11._comparers (fldOffset=0x8)" P-INDEP
+; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x26 "field V11._comparers (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T01] ( 3,3703.32) int -> x2 "CSE - aggressive"
; V25 cse1 [V25,T02] ( 3,3135.78) ref -> x4 "CSE - aggressive"
; V26 cse2 [V26,T15] ( 3, 37.41) int -> x2 "CSE - aggressive"
; V27 cse3 [V27,T16] ( 3, 31.67) ref -> x4 "CSE - aggressive"
; V28 cse4 [V28,T09] ( 7, 400.98) int -> x23 "CSE - aggressive"
-; V29 cse5 [V29,T14] ( 4, 101.00) byref -> x24 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M61968_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- stp x23, x24, [sp, #0x48]
- stp x25, x26, [sp, #0x58]
- str x27, [sp, #0x68]
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V13 tmp7], [V13 tmp7+0x08]
- str xzr, [fp, #0x20] // [V13 tmp7+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V13 tmp7], [V13 tmp7+0x08]
+ str xzr, [fp, #0x28] // [V13 tmp7+0x10]
ldr w20, [fp, #0xB4]
ldp x22, x21, [fp, #0xA0]
; gcrRegs +[x21-x22]
ldr w19, [fp, #0x9C]
- ;; size=48 bbWeight=0.01 PerfScore 0.15
+ ;; size=44 bbWeight=0.01 PerfScore 0.14
G_M61968_IG02: ; bbWeight=0.01, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w23, [x22, #0x08]
cmp w23, w19
ble G_M61968_IG22
tbnz w19, #31, G_M61968_IG11
- add x24, x22, #16
- ; byrRegs +[x24]
- ;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x22]
- ldr x25, [x24, w19, UXTW #3]
- ; gcrRegs +[x25]
+ ;; size=16 bbWeight=0.01 PerfScore 0.05
+G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
+ add x0, x22, #16
+ ; byrRegs +[x0]
+ ldr x24, [x0, w19, UXTW #3]
+ ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24
- ldp x26, x27, [x21, #0x08]
- ; gcrRegs +[x26-x27]
- ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24
+ ldp x25, x26, [x21, #0x08]
+ ; gcrRegs +[x25-x26]
+ ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0]
+ mov x1, x24
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
@@ -85,44 +83,44 @@ G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=100000
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- ldrsb wzr, [x26]
- ;; size=48 bbWeight=98.99 PerfScore 2276.77
-G_M61968_IG04: ; bbWeight=1267.44, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
- ldr x4, [x26, #0x08]
+ ldrsb wzr, [x25]
+ ;; size=52 bbWeight=98.99 PerfScore 2326.27
+G_M61968_IG04: ; bbWeight=1267.44, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
+ ldr x4, [x25, #0x08]
; gcrRegs +[x4]
cbz x4, G_M61968_IG20
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2
beq G_M61968_IG08
;; size=20 bbWeight=1267.44 PerfScore 10773.21
-G_M61968_IG05: ; bbWeight=1168.45, gcrefRegs=E200010 {x4 x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M61968_IG05: ; bbWeight=1168.45, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2
ble G_M61968_IG07
;; size=8 bbWeight=1168.45 PerfScore 1752.67
-G_M61968_IG06: ; bbWeight=567.54, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG06: ; bbWeight=567.54, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG04
;; size=8 bbWeight=567.54 PerfScore 2270.14
-G_M61968_IG07: ; bbWeight=600.91, gcrefRegs=A200010 {x4 x21 x25 x27}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x26] +[x4]
- mov x26, x4
- ; gcrRegs +[x26]
+G_M61968_IG07: ; bbWeight=600.91, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x25] +[x4]
+ mov x25, x4
+ ; gcrRegs +[x25]
b G_M61968_IG04
;; size=8 bbWeight=600.91 PerfScore 901.37
-G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, nogc
+G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x4]
- ldp x0, x2, [x26, #0x20]
- stp x0, x2, [fp, #0x10]
- ldr x0, [x26, #0x30]
- str x0, [fp, #0x20]
+ ldp x0, x2, [x25, #0x20]
+ stp x0, x2, [fp, #0x18]
+ ldr x0, [x25, #0x30]
+ str x0, [fp, #0x28]
;; size=16 bbWeight=395.96 PerfScore 3563.64
G_M61968_IG09: ; bbWeight=395.96, isz, extend
- add x0, fp, #16 // [V13 tmp7]
+ add x0, fp, #24 // [V13 tmp7]
add x4, fp, #144 // [V05 loc4]
- mov x2, x25
+ mov x2, x24
; gcrRegs +[x2]
- mov x3, x27
+ mov x3, x26
; gcrRegs +[x3]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -132,7 +130,7 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend
movk x5, #1 LSL #32
ldr x5, [x5]
blr x5
- ; gcrRegs -[x2-x3 x25-x27]
+ ; gcrRegs -[x2-x3 x24-x26]
; gcr arg pop 0
eor w0, w20, w0
uxtb w20, w0
@@ -140,25 +138,24 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend
cmp w23, w19
ble G_M61968_IG22
;; size=68 bbWeight=395.96 PerfScore 4751.53
-G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
b G_M61968_IG03
;; size=4 bbWeight=98.99 PerfScore 98.99
G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x22]
- ; byrRegs -[x24]
cmp w19, w23
bhs G_M61968_IG19
- add x24, x22, #16
- ; byrRegs +[x24]
- ldr x25, [x24, w19, UXTW #3]
- ; gcrRegs +[x25]
+ add x0, x22, #16
+ ; byrRegs +[x0]
+ ldr x24, [x0, w19, UXTW #3]
+ ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24
- ldp x26, x27, [x21, #0x08]
- ; gcrRegs +[x26-x27]
- ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24
+ ldp x25, x26, [x21, #0x08]
+ ; gcrRegs +[x25-x26]
+ ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0]
+ mov x1, x24
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
@@ -166,46 +163,45 @@ G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=000
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1]
- ; byrRegs -[x24]
; gcr arg pop 0
- ldrsb wzr, [x26]
+ ldrsb wzr, [x25]
;; size=60 bbWeight=1.00 PerfScore 25.00
-G_M61968_IG12: ; bbWeight=12.80, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x26, #0x08]
+G_M61968_IG12: ; bbWeight=12.80, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
+ ldr x4, [x25, #0x08]
; gcrRegs +[x4]
cbz x4, G_M61968_IG21
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2
beq G_M61968_IG16
;; size=20 bbWeight=12.80 PerfScore 108.82
-G_M61968_IG13: ; bbWeight=11.80, gcrefRegs=E600010 {x4 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M61968_IG13: ; bbWeight=11.80, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2
ble G_M61968_IG15
;; size=8 bbWeight=11.80 PerfScore 17.70
-G_M61968_IG14: ; bbWeight=5.73, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M61968_IG14: ; bbWeight=5.73, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG12
;; size=8 bbWeight=5.73 PerfScore 22.93
-G_M61968_IG15: ; bbWeight=6.07, gcrefRegs=A600010 {x4 x21 x22 x25 x27}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x26] +[x4]
- mov x26, x4
- ; gcrRegs +[x26]
+G_M61968_IG15: ; bbWeight=6.07, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x25] +[x4]
+ mov x25, x4
+ ; gcrRegs +[x25]
b G_M61968_IG12
...
+20 (+3.76%) : 79973.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T09] ( 4, 3.04) byref -> x22 single-def
; V03 arg3 [V03,T07] ( 4, 4.09) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.15) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.15) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=101.04 PerfScore 2323.81
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x0, x23, x28
lsl x0, x0, #1
@@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
sxtw w3, w0
;; size=28 bbWeight=0.52 PerfScore 3.39
G_M3489_IG12: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.04 PerfScore 1.04
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- sub w0, w27, #1
- and w0, w27, w0
- sub w1, w0, #1
- and w27, w0, w1
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- cbnz w27, G_M3489_IG09
- b G_M3489_IG05
- ;; size=28 bbWeight=0.01 PerfScore 0.04
-G_M3489_IG14: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22]
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
;; size=4 bbWeight=0.52 PerfScore 0.52
-G_M3489_IG15: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add w0, w23, w28
;; size=8 bbWeight=1.04 PerfScore 2.59
-G_M3489_IG16: ; bbWeight=1.04, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.04, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.04, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=1.04 PerfScore 9.84
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
+ sub w0, w27, #1
+ and w0, w27, w0
+ sub w1, w0, #1
+ and w27, w0, w1
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ cbnz w27, G_M3489_IG09
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG06
+ ;; size=48 bbWeight=0.01 PerfScore 0.08
+G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend
@@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3897.82, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3897.81, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -278,7 +285,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+3.76%) : 77650.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T09] ( 4, 3.02) byref -> x22 single-def
; V03 arg3 [V03,T07] ( 4, 4.03) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.04) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.04) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=101.01 PerfScore 2323.19
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x0, x23, x28
lsl x0, x0, #1
@@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
sxtw w3, w0
;; size=28 bbWeight=0.51 PerfScore 3.30
G_M3489_IG12: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.02 PerfScore 1.02
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- sub w0, w27, #1
- and w0, w27, w0
- sub w1, w0, #1
- and w27, w0, w1
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- cbnz w27, G_M3489_IG09
- b G_M3489_IG05
- ;; size=28 bbWeight=0.01 PerfScore 0.04
-G_M3489_IG14: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22]
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M3489_IG15: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add w0, w23, w28
;; size=8 bbWeight=1.01 PerfScore 2.52
-G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.01, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=1.01 PerfScore 9.58
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
+ sub w0, w27, #1
+ and w0, w27, w0
+ sub w1, w0, #1
+ and w27, w0, w1
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ cbnz w27, G_M3489_IG09
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG06
+ ;; size=48 bbWeight=0.01 PerfScore 0.08
+G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend
@@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3895.71, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3895.70, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -278,7 +285,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+3.82%) : 34540.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T09] ( 4, 2.83) byref -> x22 single-def
; V03 arg3 [V03,T08] ( 4, 3.65) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T01] ( 9, 602.92) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T01] ( 12, 602.92) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T06] ( 1, 100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T06] ( 2, 100.00) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -142,14 +142,14 @@ G_M3489_IG05: ; bbWeight=100.70, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=100.70 PerfScore 2316.11
-G_M3489_IG06: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG06: ; bbWeight=99.87, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.87 PerfScore 649.19
G_M3489_IG07: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -175,7 +175,7 @@ G_M3489_IG09: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x0, x23, x28
lsl x0, x0, #1
@@ -213,26 +213,17 @@ G_M3489_IG11: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
sxtw w3, w0
;; size=28 bbWeight=0.41 PerfScore 2.68
G_M3489_IG12: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=0.83 PerfScore 0.83
-G_M3489_IG13: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- sub w0, w27, #1
- and w0, w27, w0
- sub w1, w0, #1
- and w27, w0, w1
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- cbnz w27, G_M3489_IG09
- b G_M3489_IG06
- ;; size=28 bbWeight=0.13 PerfScore 0.63
-G_M3489_IG14: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22]
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
;; size=4 bbWeight=0.41 PerfScore 0.41
-G_M3489_IG15: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add w0, w23, w28
;; size=8 bbWeight=0.70 PerfScore 1.75
-G_M3489_IG16: ; bbWeight=0.70, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=0.70, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -244,7 +235,23 @@ G_M3489_IG16: ; bbWeight=0.70, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=0.70 PerfScore 6.65
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
+ sub w0, w27, #1
+ and w0, w27, w0
+ sub w1, w0, #1
+ and w27, w0, w1
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ cbnz w27, G_M3489_IG09
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG07
+ ;; size=48 bbWeight=0.13 PerfScore 1.31
+G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend
@@ -268,7 +275,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 524, prolog size 52, PerfScore 6997.93, instruction count 131, allocated bytes for code 524 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 544, prolog size 52, PerfScore 6997.81, instruction count 136, allocated bytes for code 544 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -279,7 +286,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
+ Function Length : 136 (0x00088) Actual length = 544 (0x000220)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.osx.arm64.checked.mch
+0 (0.00%) : 26637.dasm - System.Net.Security.SslStreamCertificateContext:Create(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,ubyte,System.Net.Security.SslCertificateTrust,ubyte):System.Net.Security.SslStreamCertificateContext (Tier1)
@@ -24,14 +24,14 @@
;* V13 loc8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V14 loc9 [V14,T36] ( 3, 5 ) int -> x22
; V15 loc10 [V15,T34] ( 3, 5 ) ref -> x0 class-hnd exact single-def <System.Security.Cryptography.X509Certificates.X509ChainStatus[]>
-; V16 loc11 [V16,T04] ( 5, 16.50) int -> x11
+; V16 loc11 [V16,T04] ( 5, 16.50) int -> x1
;* V17 loc12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Security.Cryptography.X509Certificates.X509ChainStatus>
; V18 loc13 [V18,T02] ( 6, 20.50) int -> x22
; V19 loc14 [V19,T03] ( 6, 17 ) int -> x20
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V21 tmp1 [V21,T30] ( 3, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V22 tmp2 [V22,T31] ( 3, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2]>
-; V23 tmp3 [V23,T18] ( 5, 10 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SslStreamCertificateContext>
+; V22 tmp2 [V22,T31] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2]>
+; V23 tmp3 [V23,T18] ( 5, 10 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SslStreamCertificateContext>
;* V24 tmp4 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V25 tmp5 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
@@ -91,10 +91,10 @@
;* V80 tmp60 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V81 tmp61 [V81,T46] ( 6, 2.50) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V82 tmp62 [V82 ] ( 0, 0 ) ref -> zero-ref "field V17._statusInformation (fldOffset=0x0)" P-INDEP
-; V83 tmp63 [V83,T25] ( 2, 8 ) int -> x2 "field V17.<Status>k__BackingField (fldOffset=0x8)" P-INDEP
+; V83 tmp63 [V83,T25] ( 2, 8 ) int -> x3 "field V17.<Status>k__BackingField (fldOffset=0x8)" P-INDEP
; V84 tmp64 [V84,T52] ( 2, 2 ) ref -> x24 single-def "argument with side effect"
; V85 tmp65 [V85,T54] ( 2, 2 ) int -> x1 "argument with side effect"
-; V86 tmp66 [V86,T12] ( 2, 16 ) int -> x2 "Enum:HasFlag this temp"
+; V86 tmp66 [V86,T12] ( 2, 16 ) int -> x3 "Enum:HasFlag this temp"
; V87 tmp67 [V87,T11] ( 2, 16 ) ref -> x2 "argument with side effect"
; V88 tmp68 [V88,T53] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V89 tmp69 [V89,T45] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
@@ -103,7 +103,7 @@
; V92 PSPSym [V92,T59] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V93 cse0 [V93,T55] ( 3, 1.50) ref -> x20 "CSE - moderate"
; V94 cse1 [V94,T17] ( 9, 10 ) long -> x20 multi-def "CSE - moderate"
-; V95 cse2 [V95,T38] ( 3, 5 ) int -> x1 "CSE - moderate"
+; V95 cse2 [V95,T38] ( 3, 5 ) int -> x2 "CSE - moderate"
; V96 cse3 [V96,T29] ( 4, 6 ) long -> x25 "CSE - moderate"
;
; Lcl frame size = 48
@@ -137,7 +137,7 @@ G_M52998_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M52998_IG36
+ cbz w0, G_M52998_IG38
movz x23, #0xD1FFAB1E
movk x23, #0xD1FFAB1E LSL #16
movk x23, #1 LSL #32
@@ -472,7 +472,7 @@ G_M52998_IG15: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byr
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
sub w20, w0, #1
- tbnz w20, #31, G_M52998_IG30
+ tbnz w20, #31, G_M52998_IG32
;; size=40 bbWeight=1 PerfScore 13.50
G_M52998_IG16: ; bbWeight=0.50, gcrefRegs=4A80000 {x19 x21 x23 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x24]
@@ -517,27 +517,29 @@ G_M52998_IG16: ; bbWeight=0.50, gcrefRegs=4A80000 {x19 x21 x23 x26}, byre
ldr x1, [x1]
blr x1
; gcr arg pop 0
- mov w11, wzr
- ldr w1, [x0, #0x08]
- cmp w1, #0
- ble G_M52998_IG18
+ mov w1, wzr
+ ldr w2, [x0, #0x08]
+ cmp w2, #0
+ ble G_M52998_IG19
;; size=140 bbWeight=0.50 PerfScore 21.25
G_M52998_IG17: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
- ubfiz x2, x11, #4, #32
- add x2, x2, #16
- add x2, x0, x2
- ; byrRegs +[x2]
- ldr w2, [x2, #0x08]
- ; byrRegs -[x2]
- tbnz w2, #16, G_M52998_IG28
- add w11, w11, #1
- cmp w1, w11
- bgt G_M52998_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M52998_IG18: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+ ubfiz x3, x1, #4, #32
+ add x3, x3, #16
+ add x3, x0, x3
+ ; byrRegs +[x3]
+ ldr w3, [x3, #0x08]
+ ; byrRegs -[x3]
+ tbz w3, #16, G_M52998_IG29
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M52998_IG18: ; bbWeight=0.50, gcrefRegs=4A80000 {x19 x21 x23 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x24]
+ add w20, w20, #1
+ mov x24, xzr
+ ; gcrRegs +[x24]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M52998_IG19: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
cmp w20, #0
- ble G_M52998_IG22
+ ble G_M52998_IG23
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
@@ -551,7 +553,7 @@ G_M52998_IG18: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26},
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w1, #1
- ble G_M52998_IG22
+ ble G_M52998_IG23
sxtw x1, w20
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
@@ -564,13 +566,13 @@ G_M52998_IG18: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26},
; gcrRegs +[x23]
mov w22, wzr
;; size=76 bbWeight=0.50 PerfScore 9.50
-G_M52998_IG19: ; bbWeight=4, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG20: ; bbWeight=4, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x26, #0x18]
; gcrRegs +[x0]
- cbnz x0, G_M52998_IG21
+ cbnz x0, G_M52998_IG22
;; size=8 bbWeight=4 PerfScore 16.00
-G_M52998_IG20: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+G_M52998_IG21: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
add x0, x25, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
@@ -605,7 +607,7 @@ G_M52998_IG20: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byr
mov x0, x27
; gcrRegs +[x0]
;; size=72 bbWeight=2 PerfScore 27.00
-G_M52998_IG21: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG22: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
add w1, w22, #1
movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
@@ -624,9 +626,9 @@ G_M52998_IG21: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26},
; gcr arg pop 0
add w22, w22, #1
cmp w22, w20
- blt G_M52998_IG19
+ blt G_M52998_IG20
;; size=56 bbWeight=4 PerfScore 64.00
-G_M52998_IG22: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG23: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
@@ -651,7 +653,7 @@ G_M52998_IG22: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26},
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- cbz x24, G_M52998_IG29
+ cbz x24, G_M52998_IG31
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
@@ -665,17 +667,17 @@ G_M52998_IG22: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26},
; gcrRegs -[x0]
sub w22, w0, #1
;; size=116 bbWeight=0.50 PerfScore 21.00
-G_M52998_IG23: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG24: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
add w20, w20, #1
cmp w20, w22
- bge G_M52998_IG30
+ bge G_M52998_IG32
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M52998_IG24: ; bbWeight=4, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG25: ; bbWeight=4, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x26, #0x18]
; gcrRegs +[x0]
- cbnz x0, G_M52998_IG26
+ cbnz x0, G_M52998_IG27
;; size=8 bbWeight=4 PerfScore 16.00
-G_M52998_IG25: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+G_M52998_IG26: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
add x0, x25, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
@@ -710,7 +712,7 @@ G_M52998_IG25: ; bbWeight=2, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byr
mov x0, x27
; gcrRegs +[x0]
;; size=72 bbWeight=2 PerfScore 27.00
-G_M52998_IG26: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG27: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
mov w1, w20
movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509ChainElementCollection:get_Item(int):System.Security.Cryptography.X509Certificates.X509ChainElement:this
@@ -730,19 +732,22 @@ G_M52998_IG26: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26},
; gcr arg pop 0
add w20, w20, #1
cmp w20, w22
- blt G_M52998_IG24
+ blt G_M52998_IG25
;; size=64 bbWeight=4 PerfScore 98.00
-G_M52998_IG27: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
- b G_M52998_IG30
+G_M52998_IG28: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+ b G_M52998_IG32
;; size=4 bbWeight=1 PerfScore 1.00
-G_M52998_IG28: ; bbWeight=0.50, gcrefRegs=4A80000 {x19 x21 x23 x26}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x24]
- add w20, w20, #1
- mov x24, xzr
- ; gcrRegs +[x24]
- b G_M52998_IG18
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M52998_IG29: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+G_M52998_IG29: ; bbWeight=4, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
+ add w1, w1, #1
+ cmp w2, w1
+ bgt G_M52998_IG17
+ ;; size=12 bbWeight=4 PerfScore 8.00
+G_M52998_IG30: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M52998_IG19
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M52998_IG31: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Chain:get_ChainElements():System.Security.Cryptography.X509Certificates.X509ChainElementCollection:this
@@ -753,9 +758,9 @@ G_M52998_IG29: ; bbWeight=0.50, gcrefRegs=5A80000 {x19 x21 x23 x24 x26},
; gcr arg pop 0
ldr x0, [x0, #0x08]
ldr w22, [x0, #0x08]
- b G_M52998_IG23
+ b G_M52998_IG24
;; size=36 bbWeight=0.50 PerfScore 6.50
-G_M52998_IG30: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M52998_IG32: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
add x0, x26, #16
; byrRegs +[x0]
@@ -765,9 +770,9 @@ G_M52998_IG30: ; bbWeight=1, gcrefRegs=5A80000 {x19 x21 x23 x24 x26}, byr
ldr x0, [x26, #0x20]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M52998_IG32
+ cbz x0, G_M52998_IG34
;; size=24 bbWeight=1 PerfScore 7.50
-G_M52998_IG31: ; bbWeight=0.50, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
+G_M52998_IG33: ; bbWeight=0.50, gcrefRegs=5A80001 {x0 x19 x21 x23 x24 x26}, byrefRegs=0000 {}, byref
str xzr, [x26, #0x20]
...
+0 (0.00%) : 41209.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
@@ -42,7 +42,7 @@
;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V32 tmp26 [V32,T36] ( 3, 6 ) int -> x26 "Inline return value spill temp"
; V33 tmp27 [V33,T37] ( 4, 8 ) int -> x0 "Inline stloc first use temp"
-; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
+; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x22 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp30 [V36,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -66,7 +66,7 @@
; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> x28 class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount>
;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount>
;* V57 tmp51 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 "Inlining Arg"
+; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V60 tmp54 [V60,T60] ( 2, 2 ) int -> x21 "Single return block return value"
; V61 tmp55 [V61,T25] ( 6, 13 ) int -> x20 "V01.[000..004)"
@@ -110,7 +110,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [fp, #0x38] // [V01 arg1]
ldrb w0, [x19, #0x4F]
- cbnz w0, G_M55237_IG91
+ cbnz w0, G_M55237_IG92
bl <unknown method>
; gcr arg pop 0
sxtw w21, w0
@@ -120,7 +120,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x44]
cmp w21, w0
- beq G_M55237_IG92
+ beq G_M55237_IG93
add x22, x19, #80
; byrRegs +[x22]
mov x0, x22
@@ -150,10 +150,10 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {
; gcr arg pop 0
ldr w1, [x0, #0x10]
cmp w1, #4
- blt G_M55237_IG93
+ blt G_M55237_IG94
ldr x0, [x0, #0x18]
ldr x0, [x0, #0x20]
- cbz x0, G_M55237_IG93
+ cbz x0, G_M55237_IG94
ldr x0, [x0]
; byrRegs +[x0]
add x23, x0, #16
@@ -241,7 +241,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=2080000 {x19 x25}, byrefRegs=C0
; gcrRegs +[x24]
ldr w0, [x24, #0x18]
cmp w0, #0
- bgt G_M55237_IG94
+ bgt G_M55237_IG95
ldr w1, [x19, #0x40]
cmp w21, w1
bne G_M55237_IG35
@@ -303,10 +303,10 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {
; gcr arg pop 0
ldr w1, [x0, #0x10]
cmp w1, #4
- blt G_M55237_IG95
+ blt G_M55237_IG96
ldr x0, [x0, #0x18]
ldr x0, [x0, #0x20]
- cbz x0, G_M55237_IG95
+ cbz x0, G_M55237_IG96
ldr x0, [x0]
; byrRegs +[x0]
add x23, x0, #16
@@ -528,7 +528,7 @@ G_M55237_IG36: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
ldr w0, [x19, #0x48]
mov w1, #0xD1FFAB1E
cmp w0, w1
- blo G_M55237_IG88
+ blo G_M55237_IG84
cmn w20, #1
beq G_M55237_IG38
;; size=24 bbWeight=4 PerfScore 26.00
@@ -546,11 +546,11 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
sub w0, w0, w1
cmp w0, w20
ccmp w0, #0, nc, lt
- blt G_M55237_IG84
+ blt G_M55237_IG85
sub w26, w20, w0
;; size=28 bbWeight=2 PerfScore 12.00
G_M55237_IG40: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
- cbz w26, G_M55237_IG84
+ cbz w26, G_M55237_IG85
;; size=4 bbWeight=2 PerfScore 2.00
G_M55237_IG41: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
cmp w25, #20
@@ -899,7 +899,7 @@ G_M55237_IG74: ; bbWeight=4, gcrefRegs=1080002 {x1 x19 x24}, byrefRegs=C0
; byrRegs -[x2]
; gcr arg pop 0
sxtw w21, w0
- cbz w21, G_M55237_IG86
+ cbz w21, G_M55237_IG87
ldr x0, [x24, #0x10]
ldr x26, [x19, #0x28]
cmp x0, x26
@@ -980,13 +980,55 @@ G_M55237_IG83: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
; gcrRegs -[x28]
b G_M55237_IG36
;; size=4 bbWeight=4 PerfScore 4.00
-G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19 x24]
+G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x23]
+ ldr w0, [x19, #0x48]
+ add w0, w0, #1
+ str w0, [x19, #0x48]
+ ldr w0, [x24, #0x18]
+ add w0, w0, #1
+ str w0, [x24, #0x18]
+ b G_M55237_IG89
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
+ ; gcrRegs -[x19 x24]
+ ldr w0, [x22]
+ cbnz w0, G_M55237_IG86
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 6.25
+G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+ stlr wzr, [x22]
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M55237_IG87: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x22]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M55237_IG88: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x80]
+ ldp x25, x26, [sp, #0x70]
+ ldp x23, x24, [sp, #0x60]
+ ldp x21, x22, [sp, #0x50]
+ ldp x19, x20, [sp, #0x40]
+ ldp fp, lr, [sp], #0x90
+ ret lr
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M55237_IG89: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ ; byrRegs +[x22]
mov x19, x22
; byrRegs +[x19]
ldr w0, [x19]
- cbnz w0, G_M55237_IG85
+ cbnz w0, G_M55237_IG90
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -1001,56 +1043,11 @@ G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}
; byrRegs -[x22]
; gcr arg pop 0
;; size=56 bbWeight=0.50 PerfScore 6.50
-G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- stlr wzr, [x19]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M55237_IG87: ; bbWeight=0.50, epilog, nogc, extend
- ldp x27, x28, [sp, #0x80]
- ldp x25, x26, [sp, #0x70]
- ldp x23, x24, [sp, #0x60]
- ldp x21, x22, [sp, #0x50]
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x90
- ret lr
- ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG88: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; gcrRegs +[x19 x24]
- ; byrRegs +[x22]
- ldr w0, [x19, #0x48]
- add w0, w0, #1
- str w0, [x19, #0x48]
- ldr w0, [x24, #0x18]
- add w0, w0, #1
- str w0, [x24, #0x18]
- mov x19, x22
- ; gcrRegs -[x19]
- ; byrRegs +[x19]
- ldr w0, [x19]
- cbnz w0, G_M55237_IG89
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x24]
- ; byrRegs -[x22]
- ; gcr arg pop 0
- ;; size=80 bbWeight=0.50 PerfScore 11.00
-G_M55237_IG89: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stlr wzr, [x19]
uxtb w0, w21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG91: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x80]
ldp x25, x26, [sp, #0x70]
ldp x23, x24, [sp, #0x60]
@@ -1059,7 +1056,7 @@ G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x90
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; byrRegs -[x19]
mov x0, x19
@@ -1073,7 +1070,7 @@ G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -1113,7 +1110,7 @@ G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=88 bbWeight=0 PerfScore 0.00
-G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M55237_IG94: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x19]
; byrRegs +[x22]
mov w0, #4
@@ -1124,7 +1121,7 @@ G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; byrRegs +[x23]
...
+0 (0.00%) : 10127.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -79,12 +79,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M44603_IG12
+ cbnz w0, G_M44603_IG10
;; size=24 bbWeight=2 PerfScore 13.00
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- b G_M44603_IG10
- ;; size=4 bbWeight=4 PerfScore 4.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ b G_M44603_IG12
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -110,7 +112,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-Total bytes of code 156, prolog size 16, PerfScore 67.25, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 156, prolog size 16, PerfScore 63.75, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 6780.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> x19 class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate>
; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [fp+0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V03 loc2 [V03,T21] ( 13, 43 ) ref -> [fp+0x38] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>>
@@ -21,7 +21,7 @@
; V10 loc9 [V10,T14] ( 9, 53 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain>
; V11 loc10 [V11,T11] ( 4, 72 ) ubyte -> x22
; V12 loc11 [V12,T23] ( 3, 40 ) int -> x21
-; V13 loc12 [V13,T02] ( 5,132 ) int -> x23
+; V13 loc12 [V13,T03] ( 5,132 ) int -> x23
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
; V15 loc14 [V15,T54] ( 3, 10 ) int -> x19
; V16 loc15 [V16,T25] ( 5, 33 ) int -> x20
@@ -33,7 +33,7 @@
;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp5 [V23,T44] ( 2, 16 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
; V24 tmp6 [V24,T12] ( 8, 64 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T37] ( 3, 24 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V27 tmp9 [V27,T38] ( 3, 24 ) ref -> x21 class-hnd exact "dup spill" <System.Object[]>
;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback>
@@ -144,10 +144,10 @@
;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 5,288 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V137 tmp119 [V137,T03] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String>
-; V138 tmp120 [V138,T01] ( 6,132 ) ref -> x25
-; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 5,320 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
+; V137 tmp119 [V137,T04] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V138 tmp120 [V138,T02] ( 6,148 ) ref -> x25
+; V139 tmp121 [V139,T01] ( 3,192 ) ref -> x25 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
@@ -165,8 +165,8 @@
;* V154 tmp136 [V154,T107] ( 0, 0 ) ref -> zero-ref
;* V155 tmp137 [V155 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V156 tmp138 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
-; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x25 class-hnd "Inlining Arg" <System.FormattableString>
-; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x24
+; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x24 class-hnd "Inlining Arg" <System.FormattableString>
+; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x25
; V159 tmp141 [V159,T31] ( 2, 32 ) ref -> x26
;* V160 tmp142 [V160 ] ( 0, 0 ) ref -> zero-ref
;* V161 tmp143 [V161 ] ( 0, 0 ) ref -> zero-ref
@@ -235,7 +235,7 @@
; V224 tmp206 [V224,T76] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V225 tmp207 [V225,T77] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V226 tmp208 [V226,T13] ( 6, 54 ) ref -> x1 "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> x0 "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> x0 "argument with side effect"
; V228 tmp210 [V228,T34] ( 2, 32 ) ref -> x0 "argument with side effect"
; V229 tmp211 [V229,T19] ( 3, 48 ) ref -> x0 "argument with side effect"
; V230 tmp212 [V230,T104] ( 2, 4 ) long -> x2 "argument with side effect"
@@ -247,13 +247,13 @@
; V236 cse1 [V236,T115] ( 3, 3 ) ref -> x1 "CSE - conservative"
; V237 cse2 [V237,T116] ( 3, 3 ) ref -> x1 "CSE - conservative"
; V238 cse3 [V238,T117] ( 3, 3 ) ref -> x1 "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
; V240 cse5 [V240,T118] ( 3, 3 ) ref -> x0 "CSE - conservative"
; V241 cse6 [V241,T82] ( 4, 4 ) ref -> x19 "CSE - conservative"
; V242 cse7 [V242,T80] ( 5, 5 ) ref -> x19 "CSE - conservative"
; V243 cse8 [V243,T119] ( 3, 3 ) int -> x21 "CSE - conservative"
; V244 cse9 [V244,T22] ( 6, 43 ) int -> x19 multi-def "CSE - moderate"
-; V245 cse10 [V245,T10] ( 3, 80 ) byref -> x24 "CSE - aggressive"
+; V245 cse10 [V245,T10] ( 3, 96 ) byref -> x24 "CSE - aggressive"
; V246 rat0 [V246,T79] ( 3, 6 ) ref -> x6 "delegate invoke call"
;
; Lcl frame size = 80
@@ -272,7 +272,7 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x48] // [V00 this]
; GC ptr vars +{V00}
;; size=44 bbWeight=1 PerfScore 10.00
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
stp xzr, xzr, [fp, #0x38] // [V03 loc2], [V02 loc1]
; GC ptr vars +{V02 V03}
@@ -418,7 +418,7 @@ G_M34773_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0xA0
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200020 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200040 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
; GC ptr vars +{V02 V03 V21 V41}
ldr x1, [x19, #0x30]
@@ -475,7 +475,7 @@ G_M34773_IG09: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}
str xzr, [fp, #0x28] // [V05 loc4]
; GC ptr vars +{V05}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200020 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200040 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V21 V41}
movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -494,7 +494,7 @@ G_M34773_IG10: ; bbWeight=1, gcVars=0000000000000000000000000000001000000
ldr w2, [x2]
tbnz w2, #0, G_M34773_IG12
;; size=52 bbWeight=1 PerfScore 17.00
-G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208020 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208040 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -686,7 +686,7 @@ G_M34773_IG16: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
;; size=24 bbWeight=1 PerfScore 6.00
G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -706,7 +706,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
@@ -729,7 +729,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
;; size=44 bbWeight=1 PerfScore 23.50
G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -749,12 +749,12 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -774,7 +774,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0 x19]
@@ -815,7 +815,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
; gcrRegs +[x19]
cbz x19, G_M34773_IG26
;; size=104 bbWeight=1 PerfScore 42.50
-G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000020 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000040 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
; GC ptr vars -{V03}
ldr x0, [x19]
@@ -910,7 +910,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x20, [x0]
; gcrRegs +[x20]
ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
@@ -924,7 +924,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x3
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=60 bbWeight=1 PerfScore 18.00
G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x48] // [V00 this]
@@ -932,7 +932,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x1, [x0, #0x38]
; gcrRegs +[x1]
ldr x1, [x1, #0x10]
- cbz x1, G_M34773_IG57
+ cbz x1, G_M34773_IG58
ldr x1, [x1, #0x08]
mov x0, x1
ldr x1, [x1]
@@ -943,7 +943,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this
@@ -969,7 +969,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [x0, #0x08]
cbnz w19, G_M34773_IG29
;; size=120 bbWeight=1 PerfScore 50.00
-G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208020 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208040 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov x19, x20
; gcrRegs +[x19]
@@ -1034,23 +1034,23 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
;; size=48 bbWeight=1 PerfScore 24.00
G_M34773_IG31: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x30] // [V04 loc3]
; gcrRegs +[x0]
- cbz x0, G_M34773_IG50
+ cbz x0, G_M34773_IG51
;; size=8 bbWeight=8 PerfScore 24.00
G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0x30] // [V04 loc3]
; gcrRegs +[x0]
ldr w19, [x0, #0x08]
- cbz w19, G_M34773_IG50
+ cbz w19, G_M34773_IG51
stp xzr, xzr, [fp, #0x18] // [V10 loc9], [V09 loc8]
; GC ptr vars +{V09 V10}
;; size=16 bbWeight=4 PerfScore 28.00
-G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
@@ -1074,7 +1074,7 @@ G_M34773_IG33: ; bbWeight=4, gcVars=0000000000000000000000000000000000000
; gcr arg pop 0
str x0, [fp, #0x20] // [V09 loc8]
...
+4 (+0.24%) : 4719.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan1[ushort],System.ReadOnlyMemory
1[ubyte]):this (Tier0-FullOpts)
@@ -583,12 +583,12 @@ G_M6729_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M6729_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x0]
- cbz x0, G_M6729_IG37
+ cbz x0, G_M6729_IG39
mov w19, wzr
ldr w0, [fp, #0x40] // [V10 loc7]
; gcrRegs -[x0]
cmp w0, #0
- ble G_M6729_IG34
+ ble G_M6729_IG37
ldr x0, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x0]
ldr w20, [x0, #0x08]
@@ -596,7 +596,7 @@ G_M6729_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M6729_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cmp w19, w20
- bhs G_M6729_IG35
+ bhs G_M6729_IG33
ldr x0, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x0]
ubfiz x1, x19, #6, #32
@@ -608,17 +608,30 @@ G_M6729_IG30: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x1, xzr
swpal x1, x21, [x0]
; gcrRegs +[x21]
- cbz x21, G_M6729_IG33
+ cbz x21, G_M6729_IG36
;; size=40 bbWeight=8 PerfScore 104.00
G_M6729_IG31: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0001 {x0}, byref, isz
ldr w1, [x0, #0x08]
lsr w22, w1, #31
- cbnz w22, G_M6729_IG32
- cbz w1, G_M6729_IG32
+ cbnz w22, G_M6729_IG35
+ cbz w1, G_M6729_IG35
ldr w0, [x21, #0x08]
; byrRegs -[x0]
cmp w0, w1
- blo G_M6729_IG36
+ bhs G_M6729_IG34
+ ;; size=28 bbWeight=4 PerfScore 42.00
+G_M6729_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x21]
+ ; GC ptr vars -{V06}
+ b G_M6729_IG38
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M6729_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M6729_IG34: ; bbWeight=4, gcVars=0000000000000080 {V06}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x21]
+ ; GC ptr vars +{V06 V07}
add x0, x21, #16
; byrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -628,8 +641,8 @@ G_M6729_IG31: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0001 {x0},
blr x2
; byrRegs -[x0]
; gcr arg pop 0
- ;; size=52 bbWeight=4 PerfScore 66.00
-G_M6729_IG32: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=4 PerfScore 24.00
+G_M6729_IG35: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
movz x23, #0xD1FFAB1E
movk x23, #0xD1FFAB1E LSL #16
movk x23, #1 LSL #32
@@ -646,13 +659,13 @@ G_M6729_IG32: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, by
; gcrRegs -[x0-x1 x21]
; gcr arg pop 0
;; size=44 bbWeight=4 PerfScore 44.00
-G_M6729_IG33: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6729_IG36: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w19, w19, #1
ldr w0, [fp, #0x40] // [V10 loc7]
cmp w19, w0
blt G_M6729_IG30
;; size=16 bbWeight=8 PerfScore 32.00
-G_M6729_IG34: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #1 LSL #32
@@ -673,17 +686,13 @@ G_M6729_IG34: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x3, #1 LSL #32
ldr x3, [x3]
ldr wzr, [x0]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V06 V07}
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M6729_IG37
+ b G_M6729_IG39
;; size=76 bbWeight=1 PerfScore 20.00
-G_M6729_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M6729_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -692,7 +701,7 @@ G_M6729_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6729_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #1 LSL #32
@@ -751,7 +760,7 @@ G_M6729_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=168 bbWeight=1 PerfScore 51.00
-G_M6729_IG38: ; bbWeight=1, funclet epilog, nogc, extend
+G_M6729_IG40: ; bbWeight=1, funclet epilog, nogc, extend
ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
@@ -760,7 +769,7 @@ G_M6729_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 12.50
-Total bytes of code 1700, prolog size 68, PerfScore 734.50, instruction count 425, allocated bytes for code 1700 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
+Total bytes of code 1704, prolog size 68, PerfScore 734.50, instruction count 426, allocated bytes for code 1704 (MethodHash=c8f3e5b6) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Decrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlyMemory`1[ubyte]):this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -815,7 +824,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
+ Function Length : 167 (0x000a7) Actual length = 668 (0x00029c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+20 (+3.94%) : 43524.dasm - System.String:Concat(System.String[]):System.String (Tier1)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -33,10 +33,10 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value"
; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG23
- cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25
+ cbz w21, G_M46295_IG19
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG17
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG14
- cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16
+ cbnz x23, G_M46295_IG12
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08]
sub w0, w0, w24
cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12
; byrRegs +[x2]
sbfiz x0, x24, #1, #32
@@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -244,7 +255,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=40 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -254,7 +265,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 508, prolog size 32, PerfScore 659.00, instruction count 127, allocated bytes for code 508 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 528, prolog size 32, PerfScore 671.00, instruction count 132, allocated bytes for code 528 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -265,7 +276,7 @@ Unwind Info:
E bit : 0
...
coreclr_tests.run.osx.arm64.checked.mch
-28 (-2.82%) : 239946.dasm - Test_arrayDim:TestEntryPoint() (FullOpts)
@@ -16,7 +16,7 @@
; V05 tmp2 [V05,T01] ( 11, 94.65) ref -> x25 class-hnd exact "Inlining Arg" <System.String>
; V06 tmp3 [V06,T06] ( 8, 30.35) int -> x27 "Inline stloc first use temp"
; V07 tmp4 [V07,T14] ( 6, 22.76) int -> x0 "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 12, 38.08) ref -> [fp+0x18] class-hnd exact "Inline stloc first use temp" <System.String>
+; V08 tmp5 [V08,T04] ( 12, 38.08) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.String>
;* V09 tmp6 [V09,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -25,20 +25,20 @@
;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp14 [V17,T07] ( 4, 30.35) byref -> registers "Inlining Arg"
-; V18 tmp15 [V18,T08] ( 4, 30.35) byref -> registers "Inlining Arg"
+; V17 tmp14 [V17,T07] ( 4, 30.35) byref -> x0 "Inlining Arg"
+; V18 tmp15 [V18,T08] ( 4, 30.35) byref -> x1 "Inlining Arg"
; V19 tmp16 [V19,T11] ( 4, 30.35) long -> x26 "Inlining Arg"
;* V20 tmp17 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V24 tmp21 [V24,T09] ( 4, 30.35) byref -> x25 "Inlining Arg"
-; V25 tmp22 [V25,T10] ( 4, 30.35) byref -> x28 "Inlining Arg"
+; V24 tmp21 [V24,T09] ( 4, 30.35) byref -> registers "Inlining Arg"
+; V25 tmp22 [V25,T10] ( 4, 30.35) byref -> x25 "Inlining Arg"
; V26 tmp23 [V26,T17] ( 2, 16 ) ref -> x1 "argument with side effect"
; V27 cse0 [V27,T02] ( 18, 68.28) ref -> x1 multi-def "CSE - aggressive"
; V28 cse1 [V28,T05] ( 5, 37.40) int -> x26 "CSE - aggressive"
-; V29 cse2 [V29,T16] ( 3, 22.53) int -> x28 "CSE - aggressive"
-; V30 cse3 [V30,T15] ( 3, 22.53) byref -> [fp+0x10] spill-single-def "CSE - aggressive"
+; V29 cse2 [V29,T16] ( 3, 22.53) int -> x23 "CSE - aggressive"
+; V30 cse3 [V30,T15] ( 3, 22.53) byref -> [fp+0x18] spill-single-def "CSE - aggressive"
; V31 cse4 [V31,T20] ( 2, 5 ) ref -> x20 hoist "CSE - aggressive"
; V32 cse5 [V32,T21] ( 2, 5 ) long -> x21 hoist "CSE - aggressive"
; V33 cse6 [V33,T18] ( 4, 10.16) int -> x23 "CSE - aggressive"
@@ -130,36 +130,37 @@ G_M49663_IG07: ; bbWeight=7.51, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
sxtw w27, w26
add w0, w27, #1
tbnz w0, #31, G_M49663_IG27
+ bl <unknown method>
+ ; gcrRegs +[x0]
+ mov x28, x0
+ ; gcrRegs +[x28]
+ cbnz x28, G_M49663_IG10
b G_M49663_IG09
- ;; size=16 bbWeight=7.51 PerfScore 22.53
+ ;; size=28 bbWeight=7.51 PerfScore 41.31
G_M49663_IG08: ; bbWeight=7.92, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x0 x25 x28]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
b G_M49663_IG13
;; size=16 bbWeight=7.92 PerfScore 19.80
-G_M49663_IG09: ; bbWeight=7.51, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x25]
- bl <unknown method>
- ; gcrRegs +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
- cbnz x23, G_M49663_IG10
+G_M49663_IG09: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x25 x28]
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
- ;; size=48 bbWeight=7.51 PerfScore 75.10
-G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- ldr w28, [x23, #0x08]
- cmp w28, w26
+ ;; size=36 bbWeight=7.51 PerfScore 56.33
+G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz
+ ldr w23, [x28, #0x08]
+ cmp w23, w26
bge G_M49663_IG11
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
@@ -173,10 +174,10 @@ G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre
blr x2
; gcrRegs -[x0]
;; size=48 bbWeight=7.51 PerfScore 90.13
-G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- add x3, x23, #12
+G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz
+ add x3, x28, #12
; byrRegs +[x3]
- str x3, [fp, #0x10] // [V30 cse3]
+ str x3, [fp, #0x18] // [V30 cse3]
; GC ptr vars +{V30}
mov x0, x3
; byrRegs +[x0]
@@ -191,7 +192,7 @@ G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre
blr x4
; gcrRegs -[x25]
; byrRegs -[x0-x1 x3]
- sub w0, w28, w27
+ sub w0, w23, w27
cmp w0, #0
bgt G_M49663_IG12
movz x1, #8
@@ -206,22 +207,24 @@ G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre
blr x2
; gcrRegs -[x0]
;; size=92 bbWeight=7.51 PerfScore 142.70
-G_M49663_IG12: ; bbWeight=7.51, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
+G_M49663_IG12: ; bbWeight=7.51, gcrefRegs=10500000 {x20 x22 x28}, byrefRegs=0000 {}, byref
sbfiz x0, x27, #1, #32
- ldr x25, [fp, #0x10] // [V30 cse3]
+ ldr x25, [fp, #0x18] // [V30 cse3]
; byrRegs +[x25]
- add x25, x25, x0
- movz x28, #0xD1FFAB1E
- movk x28, #0xD1FFAB1E LSL #16
- movk x28, #1 LSL #32
- ldrh w0, [x28]
- strh w0, [x25]
- mov x0, x23
+ add x23, x25, x0
+ ; byrRegs +[x23]
+ movz x25, #0xD1FFAB1E
+ ; byrRegs -[x25]
+ movk x25, #0xD1FFAB1E LSL #16
+ movk x25, #1 LSL #32
+ ldrh w0, [x25]
+ strh w0, [x23]
+ mov x0, x28
; gcrRegs +[x0]
;; size=36 bbWeight=7.51 PerfScore 71.35
G_M49663_IG13: ; bbWeight=15.84, gcVars=0000000000000000 {}, gcrefRegs=500001 {x0 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x23]
- ; byrRegs -[x25]
+ ; gcrRegs -[x28]
+ ; byrRegs -[x23]
; GC ptr vars -{V30}
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -263,111 +266,97 @@ G_M49663_IG17: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
ldr w27, [x25, #0x08]
add w0, w27, #1
tbnz w0, #31, G_M49663_IG27
+ bl <unknown method>
+ ; gcrRegs +[x0]
+ mov x28, x0
+ ; gcrRegs +[x28]
+ cbnz x28, G_M49663_IG20
b G_M49663_IG19
- ;; size=16 bbWeight=0.08 PerfScore 0.42
+ ;; size=28 bbWeight=0.08 PerfScore 0.61
G_M49663_IG18: ; bbWeight=0.08, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x0 x25 x28]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
b G_M49663_IG23
;; size=16 bbWeight=0.08 PerfScore 0.20
-G_M49663_IG19: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x25]
- bl <unknown method>
- ; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V08 tmp5]
- ; GC ptr vars +{V08}
- cbnz x0, G_M49663_IG20
+G_M49663_IG19: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x25 x28]
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
- ;; size=48 bbWeight=0.08 PerfScore 0.80
-G_M49663_IG20: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ldr w1, [x25, #0x08]
- ldr x0, [fp, #0x18] // [V08 tmp5]
- ; gcrRegs +[x0]
- ldr w2, [x0, #0x08]
- cmp w1, w2
+ ;; size=36 bbWeight=0.08 PerfScore 0.57
+G_M49663_IG20: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x25, #0x08]
+ ldr w1, [x28, #0x08]
+ cmp w0, w1
ble G_M49663_IG21
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
- ;; size=56 bbWeight=0.08 PerfScore 1.29
-G_M49663_IG21: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V08 tmp5]
- ; gcrRegs +[x0]
- add x2, x0, #12
- ; byrRegs +[x2]
- mov x1, x2
+ ;; size=52 bbWeight=0.08 PerfScore 1.14
+G_M49663_IG21: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz
+ add x0, x28, #12
+ ; byrRegs +[x0]
+ add x1, x25, #12
; byrRegs +[x1]
- add x2, x25, #12
- mov x3, x2
- ; byrRegs +[x3]
ldr w26, [x25, #0x08]
lsl x2, x26, #1
- ; byrRegs -[x2]
- mov x0, x1
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- mov x1, x3
movz x3, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x3]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
; gcrRegs -[x25]
; byrRegs -[x0-x1]
- ldr x0, [fp, #0x18] // [V08 tmp5]
- ; gcrRegs +[x0]
- ldr w1, [x0, #0x08]
- sub w1, w1, w27
- cmp w1, #0
+ ldr w0, [x28, #0x08]
+ sub w0, w0, w27
+ cmp w0, #0
bgt G_M49663_IG22
...
-8 (-2.22%) : 504858.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
@@ -38,12 +38,12 @@ G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp w20, w21, [fp, #0x58]
;; size=36 bbWeight=1 PerfScore 12.50
G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG11
+ b G_M3612_IG09
;; size=4 bbWeight=1 PerfScore 1.00
G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
cmp w23, w0
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x19, #16
; byrRegs +[x0]
ldr x22, [x0, w23, UXTW #3]
@@ -59,12 +59,12 @@ G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000
G_M3612_IG05: ; bbWeight=10.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
cmp w20, w0
- bhs G_M3612_IG18
+ bhs G_M3612_IG17
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -96,28 +96,15 @@ G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000
G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
sub w21, w0, #2
- tbz w21, #31, G_M3612_IG10
+ tbnz w21, #31, G_M3612_IG13
;; size=12 bbWeight=0.52 PerfScore 2.33
-G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22]
- add w23, w23, #1
- ldr w0, [x19, #0x08]
- cmp w0, w23
- ble G_M3612_IG16
- b G_M3612_IG03
- ;; size=20 bbWeight=0.52 PerfScore 3.11
-G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr wzr, [x19, #0x08]
- b G_M3612_IG08
- ;; size=8 bbWeight=0.49 PerfScore 1.97
-G_M3612_IG10: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x22]
+G_M3612_IG08: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
sub w20, w21, #1
;; size=4 bbWeight=9.68 PerfScore 4.84
-G_M3612_IG11: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M3612_IG13
+G_M3612_IG09: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w20, #31, G_M3612_IG11
;; size=4 bbWeight=9.68 PerfScore 9.68
-G_M3612_IG12: ; bbWeight=90.32, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG10: ; bbWeight=90.32, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
mov w1, w20
@@ -129,24 +116,31 @@ G_M3612_IG12: ; bbWeight=90.32, gcrefRegs=480000 {x19 x22}, byrefRegs=000
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M3612_IG17
+ cbnz w0, G_M3612_IG16
sub w20, w20, #1
- tbz w20, #31, G_M3612_IG12
+ tbz w20, #31, G_M3612_IG10
;; size=44 bbWeight=90.32 PerfScore 858.01
-G_M3612_IG13: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG11: ; bbWeight=9.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1
- tbz w21, #31, G_M3612_IG10
+ tbz w21, #31, G_M3612_IG08
;; size=8 bbWeight=9.68 PerfScore 14.53
-G_M3612_IG14: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3612_IG12: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M3612_IG09
- ;; size=4 bbWeight=0.49 PerfScore 0.49
-G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr wzr, [x19, #0x08]
+ ;; size=4 bbWeight=0.49 PerfScore 1.48
+G_M3612_IG13: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ add w23, w23, #1
+ ldr w0, [x19, #0x08]
+ cmp w0, w23
+ ble G_M3612_IG15
+ b G_M3612_IG03
+ ;; size=20 bbWeight=0.52 PerfScore 3.11
+G_M3612_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -154,7 +148,7 @@ G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, sp, #64
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M3612_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x22]
mov x0, x22
; gcrRegs +[x0]
@@ -167,9 +161,9 @@ G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M3612_IG13
+ b G_M3612_IG11
;; size=36 bbWeight=0 PerfScore 0.00
-G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3612_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
@@ -180,7 +174,7 @@ G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 360, prolog size 36, PerfScore 1272.10, instruction count 90, allocated bytes for code 360 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
+Total bytes of code 352, prolog size 36, PerfScore 1271.11, instruction count 88, allocated bytes for code 352 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -191,7 +185,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-1.43%) : 473217.dasm - System.Diagnostics.Process:CreateEnvp(System.Diagnostics.ProcessStartInfo):System.String
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T19] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Diagnostics.ProcessStartInfo>
; V01 loc0 [V01,T11] ( 6, 138.00) ref -> x21 class-hnd exact single-def <System.String[]>
; V02 loc1 [V02,T12] ( 5, 137.00) int -> registers
-; V03 loc2 [V03,T08] ( 18, 209.39) ref -> [fp+0x10] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]>
+; V03 loc2 [V03,T08] ( 18, 209.39) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]>
;* V04 loc3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T20] ( 4, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Collections.Generic.IDictionary`2[System.String,System.String]>
@@ -32,51 +32,50 @@
; V20 tmp15 [V20,T22] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <<unknown class>>
; V21 tmp16 [V21,T18] ( 6, 12 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
; V22 tmp17 [V22,T23] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V23 tmp18 [V23,T24] ( 3, 6 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V23 tmp18 [V23,T24] ( 3, 6 ) struct (40) [fp+0x20] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V25 tmp20 [V25,T00] ( 20,1102 ) byref -> x19 "Inlining Arg"
-; V26 tmp21 [V26,T04] ( 8, 272.00) int -> x3 "Inline stloc first use temp"
-; V27 tmp22 [V27,T02] ( 6, 408.00) ref -> x22 class-hnd exact "impAppendStmt" <<unknown class>>
-; V28 tmp23 [V28,T03] ( 8, 272.00) byref -> x24 "Inline stloc first use temp"
+; V26 tmp21 [V26,T04] ( 8, 272.00) int -> x14 "Inline stloc first use temp"
+; V27 tmp22 [V27,T02] ( 6, 408.00) ref -> x12 class-hnd exact "impAppendStmt" <<unknown class>>
+; V28 tmp23 [V28,T03] ( 8, 272.00) byref -> x22 "Inline stloc first use temp"
;* V29 tmp24 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
; V30 tmp25 [V30,T06] ( 4, 272.00) ref -> x15 class-hnd "Inlining Arg" <System.__Canon>
-; V31 tmp26 [V31,T07] ( 4, 272.00) ref -> x25 class-hnd "Inlining Arg" <System.__Canon>
+; V31 tmp26 [V31,T07] ( 4, 272.00) ref -> x24 class-hnd "Inlining Arg" <System.__Canon>
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V33 tmp28 [V33 ] ( 0, 0 ) ref -> zero-ref "field V04.key (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) ref -> zero-ref "field V04.value (fldOffset=0x8)" P-INDEP
; V35 tmp30 [V35,T13] ( 5, 136.00) ref -> registers "field V15.key (fldOffset=0x0)" P-INDEP
; V36 tmp31 [V36,T14] ( 5, 136.00) ref -> x2 "field V15.value (fldOffset=0x8)" P-INDEP
; V37 tmp32 [V37,T15] ( 4, 136.00) ref -> x15 "field V29.key (fldOffset=0x0)" P-INDEP
-; V38 tmp33 [V38,T16] ( 4, 136.00) ref -> x25 "field V29.value (fldOffset=0x8)" P-INDEP
+; V38 tmp33 [V38,T16] ( 4, 136.00) ref -> x24 "field V29.value (fldOffset=0x8)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) ref -> zero-ref single-def "V23.[000..008)"
; V40 tmp35 [V40,T30] ( 2, 2 ) int -> x2 "V23.[008..012)"
;* V41 tmp36 [V41 ] ( 0, 0 ) int -> zero-ref "V23.[012..016)"
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref "V23.[016..020)"
-; V43 PSPSym [V43,T31] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V44 cse0 [V44,T10] ( 3, 203.94) int -> x3 "CSE - aggressive"
-; V45 cse1 [V45,T27] ( 3, 2.06) int -> x3 "CSE - moderate"
+; V43 PSPSym [V43,T31] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V44 cse0 [V44,T10] ( 3, 203.94) int -> x14 "CSE - aggressive"
+; V45 cse1 [V45,T27] ( 3, 2.06) int -> x14 "CSE - moderate"
; V46 cse2 [V46,T25] ( 9, 5.70) long -> x23 hoist multi-def "CSE - moderate"
-; V47 cse3 [V47,T09] ( 4, 204.93) ref -> x14 "CSE - aggressive"
-; V48 cse4 [V48,T26] ( 4, 2.07) ref -> x14 "CSE - moderate"
+; V47 cse3 [V47,T09] ( 4, 204.93) ref -> x15 "CSE - aggressive"
+; V48 cse4 [V48,T26] ( 4, 2.07) ref -> x15 "CSE - moderate"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M28356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- stp x23, x24, [sp, #0x68]
- str x25, [sp, #0x78]
+ stp x19, x20, [sp, #0x50]
+ stp x21, x22, [sp, #0x60]
+ stp x23, x24, [sp, #0x70]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #32
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
add x1, sp, #128
- str x1, [fp, #0x40] // [V43 PSPSym]
+ str x1, [fp, #0x48] // [V43 PSPSym]
mov x19, x0
; gcrRegs +[x19]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=48 bbWeight=1 PerfScore 9.50
G_M28356_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -139,12 +138,12 @@ G_M28356_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x14, [x22, #0x08]
; gcrRegs +[x14]
ldr w2, [x14, #0x44]
- stp xzr, xzr, [fp, #0x30]
- str x14, [fp, #0x18] // [V23 tmp18]
+ stp xzr, xzr, [fp, #0x38]
+ str x14, [fp, #0x20] // [V23 tmp18]
add x14, x0, #8
; gcrRegs -[x14]
; byrRegs +[x14]
- add x13, fp, #24 // [V23 tmp18]
+ add x13, fp, #32 // [V23 tmp18]
; byrRegs +[x13]
bl CORINFO_HELP_ASSIGN_BYREF
; gcrRegs -[x22]
@@ -159,7 +158,7 @@ G_M28356_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=156 bbWeight=1 PerfScore 39.00
G_M28356_IG04: ; bbWeight=1, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x13]
- str x0, [fp, #0x10] // [V03 loc2]
+ str x0, [fp, #0x18] // [V03 loc2]
; GC ptr vars +{V03}
;; size=4 bbWeight=1 PerfScore 1.00
G_M28356_IG05: ; bbWeight=1, gcVars=0000000000000100 {V03}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz
@@ -173,20 +172,21 @@ G_M28356_IG05: ; bbWeight=1, gcVars=0000000000000100 {V03}, gcrefRegs=200
b G_M28356_IG07
;; size=32 bbWeight=1 PerfScore 8.00
G_M28356_IG06: ; bbWeight=67.32, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz
- ldp x4, x2, [x0, #0x20]
- ; gcrRegs +[x2 x4]
+ ldp x3, x2, [x0, #0x20]
+ ; gcrRegs +[x2-x3]
add w1, w20, #1
- sxtw w25, w1
- mov x0, x4
+ sxtw w19, w1
+ mov x0, x3
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
movz x3, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x3]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x2 x4]
+ ; gcrRegs -[x2]
; gcr arg pop 0
ldr w14, [x21, #0x08]
cmp w20, w14
@@ -199,8 +199,8 @@ G_M28356_IG06: ; bbWeight=67.32, gcrefRegs=200001 {x0 x21}, byrefRegs=000
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov w20, w25
- ldr x0, [fp, #0x10] // [V03 loc2]
+ mov w20, w19
+ ldr x0, [fp, #0x18] // [V03 loc2]
; gcrRegs +[x0]
;; size=84 bbWeight=67.32 PerfScore 1514.70
G_M28356_IG07: ; bbWeight=68.31, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz
@@ -215,43 +215,44 @@ G_M28356_IG07: ; bbWeight=68.31, gcrefRegs=200001 {x0 x21}, byrefRegs=000
bne G_M28356_IG11
;; size=24 bbWeight=68.31 PerfScore 751.41
G_M28356_IG08: ; bbWeight=68.31, gcrefRegs=200001 {x0 x21}, byrefRegs=80000 {x19}, byref, isz
- ldr w3, [x19, #0x0C]
- ldr x14, [x19]
- ; gcrRegs +[x14]
- ldr w15, [x14, #0x38]
- cmp w3, w15
+ ldr w14, [x19, #0x0C]
+ ldr x15, [x19]
+ ; gcrRegs +[x15]
+ ldr w12, [x15, #0x38]
+ cmp w14, w12
bhs G_M28356_IG20
;; size=20 bbWeight=68.31 PerfScore 717.25
-G_M28356_IG09: ; bbWeight=67.32, gcrefRegs=204001 {x0 x14 x21}, byrefRegs=80000 {x19}, byref, isz
- ldr x22, [x14, #0x10]
- ; gcrRegs +[x22]
- add w14, w3, #1
- ; gcrRegs -[x14]
- str w14, [x19, #0x0C]
- ldr w14, [x22, #0x08]
- cmp w3, w14
+G_M28356_IG09: ; bbWeight=67.32, gcrefRegs=208001 {x0 x15 x21}, byrefRegs=80000 {x19}, byref, isz
+ ldr x12, [x15, #0x10]
+ ; gcrRegs +[x12]
+ add w15, w14, #1
+ ; gcrRegs -[x15]
+ str w15, [x19, #0x0C]
+ ldr w15, [x12, #0x08]
+ cmp w14, w15
bhs G_M28356_IG10
- mov w14, #24
- mov x15, #16
- umaddl x14, w3, w14, x15
- add x24, x22, x14
- ; byrRegs +[x24]
- ldr w14, [x24, #0x14]
- cmn w14, #1
+ mov w15, #24
+ mov xip0, #16
+ umaddl x14, w14, w15, xip0
+ add x22, x12, x14
+ ; byrRegs +[x22]
+ ldr w12, [x22, #0x14]
+ ; gcrRegs -[x12]
+ cmn w12, #1
blt G_M28356_IG08
- ldp x15, x25, [x24]
- ; gcrRegs +[x15 x25]
+ ldp x15, x24, [x22]
+ ; gcrRegs +[x15 x24]
add x14, x19, #24
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x15 x22]
- ; byrRegs -[x14 x24]
+ ; gcrRegs -[x15]
+ ; byrRegs -[x14 x22]
add x14, x19, #32
; byrRegs +[x14]
- mov x15, x25
+ mov x15, x24
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x15 x25]
+ ; gcrRegs -[x15 x24]
; byrRegs -[x14 x19]
b G_M28356_IG06
;; size=80 bbWeight=67.32 PerfScore 1918.62
@@ -271,7 +272,7 @@ G_M28356_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=24 bbWeight=0 PerfScore 0.00
G_M28356_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x21]
- ldr x0, [fp, #0x10] // [V03 loc2]
+ ldr x0, [fp, #0x18] // [V03 loc2]
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
@@ -282,12 +283,12 @@ G_M28356_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov x2, x1
; gcrRegs +[x2]
- mov x4, x0
- ; gcrRegs +[x4]
+ mov x3, x0
+ ; gcrRegs +[x3]
b G_M28356_IG15
;; size=36 bbWeight=0 PerfScore 0.00
G_M28356_IG13: ; bbWeight=0.01, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1-x2 x4]
+ ; gcrRegs -[x1-x3]
ldr xzr, [x0]
movz x23, #0xD1FFAB1E
movk x23, #0xD1FFAB1E LSL #16
@@ -295,24 +296,25 @@ G_M28356_IG13: ; bbWeight=0.01, gcrefRegs=200001 {x0 x21}, byrefRegs=0000
b G_M28356_IG16
;; size=20 bbWeight=0.01 PerfScore 0.06
G_M28356_IG14: ; bbWeight=0.68, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
- ldp x4, x2, [x0, #0x20]
- ; gcrRegs +[x2 x4]
+ ldp x3, x2, [x0, #0x20]
+ ; gcrRegs +[x2-x3]
;; size=4 bbWeight=0.68 PerfScore 2.72
-G_M28356_IG15: ; bbWeight=0.68, gcrefRegs=200014 {x2 x4 x21}, byrefRegs=0000 {}, byref, isz
+G_M28356_IG15: ; bbWeight=0.68, gcrefRegs=20000C {x2 x3 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
...
+8 (+5.26%) : 565812.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -46,13 +46,13 @@ G_M44603_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M44603_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M44603_IG07
+ cbz x19, G_M44603_IG06
;; size=4 bbWeight=1 PerfScore 1.00
G_M44603_IG03: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w20, wzr
ldr w21, [x19, #0x08]
cmp w21, #0
- ble G_M44603_IG07
+ ble G_M44603_IG06
;; size=16 bbWeight=0.98 PerfScore 4.91
G_M44603_IG04: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x0, x19, #12
@@ -60,7 +60,7 @@ G_M44603_IG04: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldrh w0, [x0, w20, UXTW #2]
; byrRegs -[x0]
cmp w0, #0xD1FFAB1E
- blo G_M44603_IG09
+ blo G_M44603_IG08
;; size=16 bbWeight=0.96 PerfScore 4.81
G_M44603_IG05: ; bbWeight=0.92, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
@@ -69,43 +69,47 @@ G_M44603_IG05: ; bbWeight=0.92, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M44603_IG10
- ;; size=24 bbWeight=0.92 PerfScore 6.01
-G_M44603_IG06: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- add w20, w20, #1
- cmp w21, w20
- bgt G_M44603_IG04
- ;; size=12 bbWeight=0.98 PerfScore 1.96
-G_M44603_IG07: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M44603_IG09
+ b G_M44603_IG11
+ ;; size=28 bbWeight=0.92 PerfScore 6.93
+G_M44603_IG06: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov w0, #1
- ;; size=4 bbWeight=0.06 PerfScore 0.03
-G_M44603_IG08: ; bbWeight=0.06, epilog, nogc, extend
+ ;; size=4 bbWeight=0.02 PerfScore 0.01
+G_M44603_IG07: ; bbWeight=0.02, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.06 PerfScore 0.28
-G_M44603_IG09: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.02 PerfScore 0.09
+G_M44603_IG08: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M44603_IG06
+ tbz w0, #7, G_M44603_IG11
;; size=20 bbWeight=0.92 PerfScore 5.08
-G_M44603_IG10: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44603_IG09: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ add w20, w20, #1
+ cmp w21, w20
+ bgt G_M44603_IG04
+ ;; size=12 bbWeight=0.98 PerfScore 1.96
+G_M44603_IG10: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ b G_M44603_IG06
+ ;; size=4 bbWeight=0.06 PerfScore 0.06
+G_M44603_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.92 PerfScore 0.46
-G_M44603_IG11: ; bbWeight=0.92, epilog, nogc, extend
+G_M44603_IG12: ; bbWeight=0.92, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.92 PerfScore 4.62
-Total bytes of code 152, prolog size 20, PerfScore 33.17, instruction count 38, allocated bytes for code 152 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 160, prolog size 20, PerfScore 33.94, instruction count 40, allocated bytes for code 160 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -116,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 150409.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
@@ -8,46 +8,59 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M984_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M984_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M984_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01]
- mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq
- cinc w0, wzr, eq
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M984_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M984_IG05
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M984_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [fp, #0x1D] // [V01 arg1+0x01]
+ cmp w0, #255
+ bne G_M984_IG05
+ mov w0, #1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M984_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M984_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M984_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=d746fc27) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=d746fc27) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+36.36%) : 150432.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
@@ -8,46 +8,59 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M34680_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34680_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M34680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01]
- mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq
- cinc w0, wzr, eq
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M34680_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M34680_IG05
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M34680_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [fp, #0x1D] // [V01 arg1+0x01]
+ cmp w0, #255
+ bne G_M34680_IG05
+ mov w0, #1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M34680_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M34680_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M34680_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=3eac7887) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=3eac7887) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.osx.arm64.checked.mch
+0 (0.00%) : 890.dasm - Program:Main(System.String[]):int (FullOpts)
@@ -1587,7 +1587,7 @@ G_M58511_IG17: ; bbWeight=1, gcVars=00000000000000000000000000000000 {},
mov w23, wzr
;; size=164 bbWeight=1 PerfScore 47.00
G_M58511_IG18: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M58511_IG26
+ b G_M58511_IG35
;; size=4 bbWeight=1 PerfScore 1.00
G_M58511_IG19: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w11, [x19, #0x08]
@@ -1697,38 +1697,12 @@ G_M58511_IG25: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
ldr w0, [fp, #0xD1FFAB1E] // [V11 loc10]
ldr w11, [fp, #0xD1FFAB1E] // [V03 loc2]
cmp w0, w11
- bne G_M58511_IG27
- mov x0, x22
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- mov x11, #0xD1FFAB1E
- cmp x0, x11
- bgt G_M58511_IG35
- mov w0, #5
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14]
- add w0, w0, #1
- str w0, [fp, #0xD1FFAB1E] // [V15 loc14]
- ;; size=80 bbWeight=4 PerfScore 88.00
-G_M58511_IG26: ; bbWeight=8, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w11, [fp, #0xD1FFAB1E] // [V15 loc14]
- cmp w11, #40
- bge G_M58511_IG48
- b G_M58511_IG19
- ;; size=16 bbWeight=8 PerfScore 36.00
-G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ beq G_M58511_IG34
+ ;; size=16 bbWeight=4 PerfScore 22.00
+G_M58511_IG26: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14]
cmp w0, #2
- bge G_M58511_IG30
+ bge G_M58511_IG36
stp xzr, xzr, [fp, #0x30]
stp xzr, xzr, [fp, #0x40]
str xzr, [fp, #0x50]
@@ -1741,13 +1715,13 @@ G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
blr x3
; gcr arg pop 0
;; size=52 bbWeight=1 PerfScore 13.00
-G_M58511_IG28: ; bbWeight=1, nogc, extend
+G_M58511_IG27: ; bbWeight=1, nogc, extend
ldp q16, q17, [fp, #0x30]
stp q16, q17, [fp, #0xD1FFAB1E]
ldr x0, [fp, #0x50]
str x0, [fp, #0xD1FFAB1E]
;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG29: ; bbWeight=1, extend
+G_M58511_IG28: ; bbWeight=1, extend
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
@@ -1813,535 +1787,18 @@ G_M58511_IG29: ; bbWeight=1, extend
; gcr arg pop 0
ldr w0, [fp, #0xD1FFAB1E] // [V03 loc2]
str w0, [fp, #0xD1FFAB1E] // [V11 loc10]
- b G_M58511_IG34
- ;; size=204 bbWeight=1 PerfScore 67.00
-G_M58511_IG30: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x58]
- stp xzr, xzr, [fp, #0x68]
- str xzr, [fp, #0x78]
- add x0, fp, #88 // [V55 tmp28]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, #53
- mov w2, #3
- ldr x3, [x11]
- blr x3
- ; gcr arg pop 0
- ;; size=40 bbWeight=1 PerfScore 9.50
-G_M58511_IG31: ; bbWeight=1, nogc, extend
- sub x0, fp, #200
- ldp q16, q17, [x0, #0xD1FFAB1E]
- stp q16, q17, [fp, #0xD1FFAB1E]
- ldr x1, [x0, #0xD1FFAB1E]
- str x1, [fp, #0xD1FFAB1E]
- ;; size=20 bbWeight=1 PerfScore 8.50
-G_M58511_IG32: ; bbWeight=1, extend
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V11 loc10]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V03 loc2]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=216 bbWeight=1 PerfScore 72.50
-G_M58511_IG33: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=1 PerfScore 10.50
-G_M58511_IG34: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=200 bbWeight=1 PerfScore 66.00
+G_M58511_IG29: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov w23, #1
- b G_M58511_IG48
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M58511_IG35: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x80]
- stp xzr, xzr, [fp, #0x90]
- str xzr, [fp, #0xA0]
- add x0, fp, #128 // [V54 tmp27]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, #72
- mov w2, #2
- ldr x3, [x11]
- blr x3
- ; gcr arg pop 0
- ;; size=40 bbWeight=1 PerfScore 9.50
-G_M58511_IG36: ; bbWeight=1, nogc, extend
- ldp q16, q17, [fp, #0x80]
- stp q16, q17, [fp, #0xD1FFAB1E]
- ldr x0, [fp, #0xA0]
- str x0, [fp, #0xD1FFAB1E]
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG37: ; bbWeight=1, isz, extend
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- mov x0, x22
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14]
- add w1, w1, #1
- sxtw x1, w1
- cmp x1, #0
- beq G_M58511_IG40
- cmn x1, #1
- bne G_M58511_IG38
- cmp x0, #1
- bvs G_M58511_IG39
- ;; size=92 bbWeight=1 PerfScore 25.50
-G_M58511_IG38: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- sdiv x1, x0, x1
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
...
libraries.pmi.osx.arm64.checked.mch
-40 (-27.03%) : 167158.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-1.65%) : 248176.dasm - Microsoft.Build.BackEnd.RequestBuilder+d__61:MoveNext():this (FullOpts)
@@ -8,21 +8,21 @@
; 0 inlinees with PGO data; 27 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 25, 23 ) byref -> [fp+0x10] this EH-live single-def
+; V00 this [V00,T02] ( 25, 23 ) byref -> [fp+0x18] this EH-live single-def
; V01 loc0 [V01,T41] ( 2, 2 ) int -> x1 single-def
; V02 loc1 [V02,T04] ( 16, 16 ) ref -> x19 class-hnd single-def <Microsoft.Build.BackEnd.RequestBuilder>
; V03 loc2 [V03,T36] ( 2, 2 ) ref -> x22 class-hnd single-def <<unknown class>>
; V04 loc3 [V04,T20] ( 4, 4 ) ubyte -> x20
-; V05 loc4 [V05,T17] ( 5, 5 ) ref -> registers class-hnd <<unknown class>>
+; V05 loc4 [V05,T17] ( 5, 5 ) ref -> x20 class-hnd <<unknown class>>
; V06 loc5 [V06,T29] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Build.BackEnd.FullyQualifiedBuildRequest[]>
; V07 loc6 [V07,T01] ( 5, 33 ) int -> x2
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Threading.WaitHandle[]>
-; V09 loc8 [V09,T18] ( 5, 5 ) int -> x20
-; V10 loc9 [V10 ] ( 7, 7 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[int]>
+; V09 loc8 [V09,T18] ( 5, 5 ) int -> registers
+; V10 loc9 [V10 ] ( 7, 7 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[int]>
;* V11 loc10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V14 tmp2 [V14,T07] ( 6, 12 ) ref -> x22 class-hnd exact single-def "dup spill" <System.Threading.WaitHandle[]>
+; V14 tmp2 [V14,T07] ( 6, 12 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Threading.WaitHandle[]>
; V15 tmp3 [V15,T21] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>>
; V16 tmp4 [V16,T22] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>>
;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
@@ -42,7 +42,7 @@
;* V31 tmp19 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V32 tmp20 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp22 [V34,T14] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
+; V34 tmp22 [V34,T14] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
; V35 tmp23 [V35,T15] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
;* V36 tmp24 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp25 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Threading.WaitHandle]>
@@ -53,12 +53,12 @@
;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V43 tmp31 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <<unknown class>>
;* V44 tmp32 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V45 tmp33 [V45,T05] ( 7, 14 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
-; V46 tmp34 [V46,T08] ( 6, 12 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
+; V45 tmp33 [V45,T05] ( 7, 14 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V46 tmp34 [V46,T08] ( 6, 12 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V47 tmp35 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp36 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V49 tmp37 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-; V50 tmp38 [V50,T27] ( 2, 4 ) int -> x19 "Inlining Arg"
+; V50 tmp38 [V50,T27] ( 2, 4 ) int -> x20 "Inlining Arg"
;* V51 tmp39 [V51,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V52 tmp40 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V53 tmp41 [V53,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
@@ -69,36 +69,35 @@
; V58 tmp46 [V58,T00] ( 6, 41 ) int -> x14 "Inline stloc first use temp"
; V59 tmp47 [V59,T03] ( 3, 24 ) int -> x12 "Inline stloc first use temp"
; V60 tmp48 [V60,T31] ( 3, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V61 tmp49 [V61 ] ( 7, 7 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10.m_task (fldOffset=0x0)" P-DEP
+; V61 tmp49 [V61 ] ( 7, 7 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10.m_task (fldOffset=0x0)" P-DEP
; V62 tmp50 [V62,T38] ( 2, 2 ) ref -> x0 single-def "field V26.m_task (fldOffset=0x0)" P-INDEP
; V63 tmp51 [V63,T39] ( 2, 2 ) byref -> x0 "field V37._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp52 [V64,T44] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V65 tmp53 [V65 ] ( 0, 0 ) ref -> zero-ref "field V42._source (fldOffset=0x0)" P-INDEP
; V66 tmp54 [V66,T25] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
; V67 tmp55 [V67,T26] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V68 PSPSym [V68,T45] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V69 cse0 [V69,T32] ( 3, 3 ) ref -> x20 "CSE - moderate"
+; V68 PSPSym [V68,T45] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V69 cse0 [V69,T32] ( 3, 3 ) ref -> x19 "CSE - moderate"
; V70 cse1 [V70,T35] ( 3, 3 ) int -> x1 "CSE - moderate"
; V71 cse2 [V71,T06] ( 7, 14 ) byref -> x0 "CSE - aggressive"
; V72 cse3 [V72,T10] ( 2, 9 ) byref -> x1 hoist "CSE - aggressive"
; V73 cse4 [V73,T09] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V74 cse5 [V74,T33] ( 3, 3 ) ref -> x23 "CSE - moderate"
+; V74 cse5 [V74,T33] ( 3, 3 ) ref -> x21 "CSE - moderate"
; V75 cse6 [V75,T40] ( 2, 2 ) ref -> x1 "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M54417_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- str x23, [sp, #0x48]
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
mov fp, sp
- str xzr, [fp, #0x18] // [V10 loc9]
+ str xzr, [fp, #0x20] // [V10 loc9]
add x1, sp, #80
- str x1, [fp, #0x20] // [V68 PSPSym]
- str x0, [fp, #0x10] // [V00 this]
+ str x1, [fp, #0x28] // [V68 PSPSym]
+ str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M54417_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; byrRegs +[x0]
ldr w1, [x0, #0x20]
@@ -106,36 +105,36 @@ G_M54417_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000
; gcrRegs +[x19]
;; size=8 bbWeight=1 PerfScore 6.00
G_M54417_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- cbz w1, G_M54417_IG13
+ cbz w1, G_M54417_IG15
mov w20, wzr
ldr x1, [x0]
; gcrRegs +[x1]
mov w2, wzr
ldr w3, [x1, #0x08]
cmp w3, #0
- ble G_M54417_IG05
+ ble G_M54417_IG06
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
;; size=32 bbWeight=1 PerfScore 10.00
-G_M54417_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0003 {x0 x1}, byref, isz
+G_M54417_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
+ ; byrRegs -[x0]
ldr x4, [x1, w2, UXTW #3]
; gcrRegs +[x4]
ldrb w4, [x4, #0x1C]
; gcrRegs -[x4]
- cbnz w4, G_M54417_IG11
- add w2, w2, #1
- cmp w3, w2
- bgt G_M54417_IG04
- ;; size=24 bbWeight=8 PerfScore 72.00
-G_M54417_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+ cbz w4, G_M54417_IG12
+ ;; size=12 bbWeight=8 PerfScore 56.00
+G_M54417_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
+ mov w20, #1
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M54417_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w1, #1
str w1, [x19, #0x80]
- cbz w20, G_M54417_IG06
+ cbz w20, G_M54417_IG07
mov x0, x19
; gcrRegs +[x0]
- ; byrRegs -[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.Build.BackEnd.RequestBuilder:SaveOperatingEnvironment():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -144,26 +143,27 @@ G_M54417_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=1 PerfScore 8.50
-G_M54417_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x21, [fp, #0x10] // [V00 this]
- ; byrRegs +[x21]
- ldr x2, [x21]
+G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; byrRegs +[x0]
+ ldr x2, [x0]
; gcrRegs +[x2]
ldr x3, [x19, #0x60]
; gcrRegs +[x3]
- cbz x3, G_M54417_IG07
+ cbz x3, G_M54417_IG08
ldr x1, [x19, #0x38]
; gcrRegs +[x1]
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
+ ; byrRegs -[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 19.00
-G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- cbz w20, G_M54417_IG18
+G_M54417_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz w20, G_M54417_IG20
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -171,18 +171,18 @@ G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
bl CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[x0]
; gcr arg pop 0
- mov x22, x0
- ; gcrRegs +[x22]
+ mov x20, x0
+ ; gcrRegs +[x20]
ldr x15, [x19, #0x08]
; gcrRegs +[x15]
- add x14, x22, #16
+ add x14, x20, #16
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
ldr x15, [x19, #0x10]
; gcrRegs +[x15]
- add x14, x22, #24
+ add x14, x20, #24
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
@@ -196,7 +196,7 @@ G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M54417_IG12
+ cbz w0, G_M54417_IG14
ldr x0, [x19, #0x40]
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -212,21 +212,20 @@ G_M54417_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
ldr x3, [x3, #0x50]
ldr w3, [x3, #0x40]
; gcrRegs -[x3]
- mov x0, x22
+ mov x0, x20
mov w1, #1
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #1 LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x0 x2 x22]
+ ; gcrRegs -[x0 x2 x20]
; gcr arg pop 0
- sxtw w20, w0
+ sxtw w21, w0
;; size=152 bbWeight=1 PerfScore 49.00
-G_M54417_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x21]
- cmp w20, #1
- bne G_M54417_IG09
+G_M54417_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w21, #1
+ bne G_M54417_IG10
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.Build.BackEnd.RequestBuilder:RestoreOperatingEnvironment():this
@@ -246,38 +245,37 @@ G_M54417_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs -[x0]
; gcr arg pop 0
;; size=56 bbWeight=1 PerfScore 13.50
-G_M54417_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- cmp w20, #1
+G_M54417_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
...
-44 (-1.51%) : 130133.dasm - Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser:ParseFields(int,int):Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo:this (FullOpts)
@@ -9,8 +9,8 @@
; Final local variable assignments
;
; V00 this [V00,T04] ( 10, 22 ) ref -> [fp+0xD8] this class-hnd single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser>
-; V01 arg1 [V01,T37] ( 4, 8 ) int -> x21 single-def
-; V02 arg2 [V02,T34] ( 6, 9 ) int -> x20 single-def
+; V01 arg1 [V01,T38] ( 4, 8 ) int -> x21 single-def
+; V02 arg2 [V02,T35] ( 6, 9 ) int -> x20 single-def
; V03 loc0 [V03,T08] ( 10, 21 ) ushort -> x23
; V04 loc1 [V04,T05] ( 9, 24 ) ref -> [fp+0xD0] class-hnd exact spill-single-def <<unknown class>>
; V05 loc2 [V05,T03] ( 11, 28 ) ref -> [fp+0xC8] class-hnd exact spill-single-def <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch]>
@@ -28,11 +28,11 @@
; V17 loc14 [V17,T21] ( 6, 12 ) long -> [fp+0x120] spill-single-def
;* V18 loc15 [V18 ] ( 0, 0 ) long -> zero-ref
;* V19 loc16 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 loc17 [V20,T42] ( 4, 8 ) ref -> [fp+0xB0] class-hnd exact spill-single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser+<>c__DisplayClass2_0>
+; V20 loc17 [V20,T43] ( 4, 8 ) ref -> [fp+0xB0] class-hnd exact spill-single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser+<>c__DisplayClass2_0>
;* V21 loc18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Func`1[System.Collections.Generic.IDictionary`2[long,System.String]]>
-; V22 loc19 [V22,T47] ( 4, 8 ) ushort -> x23
-; V23 loc20 [V23,T48] ( 4, 8 ) ushort -> x27
-; V24 loc21 [V24,T36] ( 5, 10 ) ushort -> [fp+0x11C]
+; V22 loc19 [V22,T48] ( 4, 8 ) ushort -> x23
+; V23 loc20 [V23,T49] ( 4, 8 ) ushort -> x27
+; V24 loc21 [V24,T37] ( 5, 10 ) ushort -> [fp+0x11C]
; V25 loc22 [V25,T22] ( 6, 12 ) int -> x23
;# V26 OutArgs [V26 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V27 tmp1 [V27,T59] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -46,21 +46,21 @@
; V35 tmp9 [V35,T56] ( 7, 7 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>>
; V36 tmp10 [V36,T82] ( 3, 3 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
; V37 tmp11 [V37,T83] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V38 tmp12 [V38,T43] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
+; V38 tmp12 [V38,T44] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
; V39 tmp13 [V39,T06] ( 3, 24 ) ref -> x1 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Regex>
;* V40 tmp14 [V40 ] ( 0, 0 ) ref -> zero-ref
;* V41 tmp15 [V41 ] ( 0, 0 ) ref -> zero-ref
;* V42 tmp16 [V42 ] ( 0, 0 ) ref -> zero-ref
;* V43 tmp17 [V43 ] ( 0, 0 ) int -> zero-ref
; V44 tmp18 [V44,T02] ( 10, 36 ) ref -> [fp+0xA8] spill-single-def
-; V45 tmp19 [V45,T38] ( 3, 10 ) ref -> x28
+; V45 tmp19 [V45,T25] ( 3, 12 ) ref -> x28
;* V46 tmp20 [V46,T78] ( 0, 0 ) ref -> zero-ref
;* V47 tmp21 [V47,T81] ( 0, 0 ) int -> zero-ref
-; V48 tmp22 [V48,T51] ( 3, 8 ) int -> [fp+0x118]
+; V48 tmp22 [V48,T42] ( 3, 10 ) int -> [fp+0x118]
; V49 tmp23 [V49,T16] ( 2, 16 ) ref -> x3 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
; V50 tmp24 [V50,T07] ( 8, 22 ) ref -> [fp+0xA0]
-; V51 tmp25 [V51,T25] ( 3, 12 ) ref -> [fp+0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
-; V52 tmp26 [V52,T26] ( 3, 12 ) byref -> [fp+0x90] spill-single-def "finalizable newobj spill"
+; V51 tmp25 [V51,T26] ( 3, 12 ) ref -> [fp+0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
+; V52 tmp26 [V52,T27] ( 3, 12 ) byref -> [fp+0x90] spill-single-def "finalizable newobj spill"
; V53 tmp27 [V53,T52] ( 2, 8 ) ref -> x3 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
;* V54 tmp28 [V54 ] ( 0, 0 ) ref -> zero-ref
;* V55 tmp29 [V55 ] ( 0, 0 ) ref -> zero-ref
@@ -70,25 +70,25 @@
;* V59 tmp33 [V59 ] ( 0, 0 ) ref -> zero-ref
;* V60 tmp34 [V60 ] ( 0, 0 ) long -> zero-ref
;* V61 tmp35 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
-; V62 tmp36 [V62,T49] ( 4, 8 ) long -> x0 "Inline stloc first use temp"
+; V62 tmp36 [V62,T50] ( 4, 8 ) long -> x0 "Inline stloc first use temp"
;* V63 tmp37 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
;* V64 tmp38 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
; V65 tmp39 [V65,T12] ( 6, 18 ) ref -> [fp+0x88] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V66 tmp40 [V66,T32] ( 2, 12 ) int -> [fp+0x114] spill-single-def "Inlining Arg"
-; V67 tmp41 [V67,T30] ( 2, 12 ) ref -> [fp+0x80] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
-; V68 tmp42 [V68,T33] ( 2, 12 ) int -> [fp+0x110] spill-single-def "Inlining Arg"
-; V69 tmp43 [V69,T31] ( 2, 12 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V66 tmp40 [V66,T33] ( 2, 12 ) int -> [fp+0x114] spill-single-def "Inlining Arg"
+; V67 tmp41 [V67,T31] ( 2, 12 ) ref -> [fp+0x80] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V68 tmp42 [V68,T34] ( 2, 12 ) int -> [fp+0x110] spill-single-def "Inlining Arg"
+; V69 tmp43 [V69,T32] ( 2, 12 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
;* V70 tmp44 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V71 tmp45 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V72 tmp46 [V72,T50] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
+; V72 tmp46 [V72,T51] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
; V73 tmp47 [V73,T18] ( 5, 14 ) long -> [fp+0x108] spill-single-def "Inline stloc first use temp"
;* V74 tmp48 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement>
; V75 tmp49 [V75,T61] ( 3, 6 ) ref -> x9 class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
;* V76 tmp50 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement>
;* V77 tmp51 [V77 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V78 tmp52 [V78,T27] ( 3, 12 ) ref -> [fp+0x70] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
+; V78 tmp52 [V78,T28] ( 3, 12 ) ref -> [fp+0x70] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
; V79 tmp53 [V79,T53] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Object>
-; V80 tmp54 [V80,T44] ( 4, 8 ) ref -> x0
+; V80 tmp54 [V80,T45] ( 4, 8 ) ref -> x0
;* V81 tmp55 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexReplacement>
; V82 tmp56 [V82,T20] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V83 tmp57 [V83,T00] ( 7, 56 ) ref -> [fp+0x68] class-hnd exact spill-single-def "Inlining Arg" <System.String>
@@ -109,7 +109,7 @@
; V98 tmp72 [V98,T40] ( 3, 10 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>>
; V99 tmp73 [V99,T24] ( 4, 12 ) int -> x15 "Inline stloc first use temp"
; V100 tmp74 [V100,T65] ( 2, 4 ) ref -> x0 single-def "Single return block return value"
-; V101 FramesRoot [V101,T35] ( 6, 10 ) long -> x22 "Pinvoke FrameListRoot"
+; V101 FramesRoot [V101,T36] ( 6, 10 ) long -> x22 "Pinvoke FrameListRoot"
; V102 PInvokeFrame[V102 ] ( 8, 12 ) struct (72) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V103 tmp77 [V103 ] ( 7, 18 ) ref -> [fp+0x138] do-not-enreg[X] addr-exposed "field V08.Type (fldOffset=0x0)" P-DEP
; V104 tmp78 [V104 ] ( 8, 20 ) ref -> [fp+0x140] do-not-enreg[X] addr-exposed "field V08.info (fldOffset=0x8)" P-DEP
@@ -140,15 +140,15 @@
; V129 tmp103 [V129,T76] ( 2, 4 ) ushort -> [fp+0xE8] spill-single-def "V94.[016..018)"
; V130 tmp104 [V130,T77] ( 2, 4 ) ushort -> [fp+0xE4] spill-single-def "V94.[018..020)"
; V131 tmp105 [V131,T10] ( 5, 20 ) byref -> x13 "Spilling address for field-by-field copy"
-; V132 tmp106 [V132,T28] ( 3, 12 ) ref -> x0 "arr expr"
+; V132 tmp106 [V132,T29] ( 3, 12 ) ref -> x0 "arr expr"
;* V133 tmp107 [V133,T79] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V134 tmp108 [V134,T80] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V135 cse0 [V135,T45] ( 4, 8 ) byref -> x0 "CSE - moderate"
-; V136 cse1 [V136,T46] ( 2, 4 ) ref -> x0 "CSE - moderate"
+; V135 cse0 [V135,T46] ( 4, 8 ) byref -> x0 "CSE - moderate"
+; V136 cse1 [V136,T47] ( 2, 4 ) ref -> x0 "CSE - moderate"
; V137 cse2 [V137,T62] ( 3, 6 ) int -> x0 "CSE - moderate"
; V138 cse3 [V138,T63] ( 3, 6 ) int -> x0 "CSE - moderate"
; V139 cse4 [V139,T19] ( 5, 14 ) int -> x0 "CSE - moderate"
-; V140 cse5 [V140,T29] ( 3, 12 ) int -> x2 "CSE - moderate"
+; V140 cse5 [V140,T30] ( 3, 12 ) int -> x2 "CSE - moderate"
; V141 cse6 [V141,T64] ( 3, 6 ) int -> x0 "CSE - moderate"
;
; Lcl frame size = 320
@@ -246,7 +246,7 @@ G_M4868_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000028 {V04
mov x1, x0
; gcrRegs +[x1]
ldrsb wzr, [x1]
- cbz x28, G_M4868_IG67
+ cbz x28, G_M4868_IG65
str x1, [fp, #0xA8] // [V44 tmp18]
; GC ptr vars +{V44}
ldr w0, [x1, #0x40]
@@ -255,22 +255,22 @@ G_M4868_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000028 {V04
;; size=96 bbWeight=4 PerfScore 136.00
G_M4868_IG04: ; bbWeight=2, gcVars=0000000000000000000000000000002C {V04 V05 V44}, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
mov w2, wzr
+ str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
b G_M4868_IG07
- ;; size=8 bbWeight=2 PerfScore 3.00
+ ;; size=12 bbWeight=2 PerfScore 5.00
G_M4868_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000028 {V04 V05}, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1 x19 x28]
; GC ptr vars -{V44}
ldr x25, [fp, #0xC8] // [V05 loc2]
; gcrRegs +[x25]
- b G_M4868_IG60
+ b G_M4868_IG58
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M4868_IG06: ; bbWeight=2, gcVars=0000000000000000000000000000002C {V04 V05 V44}, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M4868_IG06: ; bbWeight=4, gcVars=0000000000000000000000000000002C {V04 V05 V44}, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x25] +[x1 x19 x28]
; GC ptr vars +{V02 V44}
ldr w2, [x28, #0x08]
str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
- ldr w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
- ;; size=12 bbWeight=2 PerfScore 12.00
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M4868_IG07: ; bbWeight=4, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, byref, isz
ldr x3, [x1, #0x30]
; gcrRegs +[x3]
@@ -278,7 +278,6 @@ G_M4868_IG07: ; bbWeight=4, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefReg
;; size=8 bbWeight=4 PerfScore 16.00
G_M4868_IG08: ; bbWeight=2, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
- str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
add x3, x1, #48
; byrRegs +[x3]
str x3, [fp, #0x90] // [V52 tmp26]
@@ -304,14 +303,14 @@ G_M4868_IG08: ; bbWeight=2, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefReg
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- ;; size=76 bbWeight=2 PerfScore 31.00
+ ;; size=72 bbWeight=2 PerfScore 29.00
G_M4868_IG09: ; bbWeight=2, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, byref, isz
ldr x1, [fp, #0x98] // [V51 tmp25]
; gcrRegs +[x1]
str x0, [x1, #0x08]
ldr x0, [fp, #0x90] // [V52 tmp26]
; byrRegs +[x0]
- cbz x0, G_M4868_IG68
+ cbz x0, G_M4868_IG66
mov x2, xzr
; GC ptr vars -{V51 V52}
bl <unknown method>
@@ -327,11 +326,9 @@ G_M4868_IG09: ; bbWeight=2, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0
ldr x1, [x2, #0x30]
mov x3, x1
mov x1, x2
- ldr w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
- ; gcrRegs -[x2]
- ;; size=56 bbWeight=2 PerfScore 35.00
+ ;; size=52 bbWeight=2 PerfScore 31.00
G_M4868_IG10: ; bbWeight=4, gcrefRegs=1108000A {x1 x3 x19 x24 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
ldr x4, [x1, #0x18]
; gcrRegs +[x4]
str x4, [fp, #0x80] // [V67 tmp41]
@@ -350,7 +347,7 @@ G_M4868_IG10: ; bbWeight=4, gcrefRegs=1108000A {x1 x3 x19 x24 x28}, byref
str x8, [fp, #0xD1FFAB1E] // [V73 tmp47]
cbnz x8, G_M4868_IG13
;; size=48 bbWeight=4 PerfScore 78.00
-G_M4868_IG11: ; bbWeight=2, gcVars=000000000000000000000000C00000AC {V04 V05 V44 V50 V67 V69}, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M4868_IG11: ; bbWeight=2, gcVars=000000000000000000000001800000AC {V04 V05 V44 V50 V67 V69}, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1 x3-x4 x7]
ldr x4, [fp, #0x80] // [V67 tmp41]
; gcrRegs +[x4]
@@ -368,10 +365,9 @@ G_M4868_IG12: ; bbWeight=1, gcVars=0000000000000000000000000000002C {V04
mov x3, x1
; gcrRegs +[x3]
ldr x1, [fp, #0xA8] // [V44 tmp18]
- ldr w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
b G_M4868_IG10
- ;; size=16 bbWeight=1 PerfScore 5.50
-G_M4868_IG13: ; bbWeight=2, gcVars=000000000000000000000000C00000AC {V04 V05 V44 V50 V67 V69}, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M4868_IG13: ; bbWeight=2, gcVars=000000000000000000000001800000AC {V04 V05 V44 V50 V67 V69}, gcrefRegs=11080000 {x19 x24 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x1 x3]
; GC ptr vars +{V07 V50 V67 V69}
ldr x4, [fp, #0x80] // [V67 tmp41]
@@ -382,7 +378,6 @@ G_M4868_IG13: ; bbWeight=2, gcVars=000000000000000000000000C00000AC {V04
; gcrRegs +[x7]
and w0, w8, #2
cbz w0, G_M4868_IG15
- str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
cmp w0, #0
cset x0, ne
movz x9, #0xD1FFAB1E // code for <unknown method>
@@ -412,7 +407,7 @@ G_M4868_IG13: ; bbWeight=2, gcVars=000000000000000000000000C00000AC {V04
ldr x1, [x1]
; GC ptr vars -{V78}
blr x1
- ;; size=112 bbWeight=2 PerfScore 69.00
+ ;; size=108 bbWeight=2 PerfScore 67.00
G_M4868_IG14: ; bbWeight=2, gcrefRegs=11080001 {x0 x19 x24 x28}, byrefRegs=0000 {}, byref
mov x9, x0
; gcrRegs +[x9]
@@ -420,19 +415,17 @@ G_M4868_IG14: ; bbWeight=2, gcrefRegs=11080001 {x0 x19 x24 x28}, byrefReg
;; size=8 bbWeight=2 PerfScore 3.00
G_M4868_IG15: ; bbWeight=2, gcrefRegs=11080090 {x4 x7 x19 x24 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x9] +[x4 x7]
- str w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
ldr x8, [fp, #0xD1FFAB1E] // [V73 tmp47]
mov x0, x8
bl <unknown method>
; gcrRegs -[x4 x7] +[x0]
mov x9, x0
; gcrRegs +[x9]
- ;; size=20 bbWeight=2 PerfScore 10.00
+ ;; size=16 bbWeight=2 PerfScore 8.00
G_M4868_IG16: ; bbWeight=2, gcrefRegs=11080200 {x9 x19 x24 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x6, x9
; gcrRegs +[x6]
- ldr w2, [fp, #0xD1FFAB1E] // [V48 tmp22]
...
+20 (+3.97%) : 3289.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T08] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T13] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T14] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T12] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T02] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T06] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -28,8 +28,8 @@
;* V17 tmp7 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V18 tmp8 [V18,T18] ( 4, 5 ) ref -> x0 "Single return block return value"
; V19 tmp9 [V19,T16] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V20 cse0 [V20,T07] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V21 cse1 [V21,T03] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V20 cse0 [V20,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V21 cse1 [V21,T07] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V22 cse2 [V22,T05] ( 5, 40 ) int -> x27 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -46,37 +46,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG20
+ cbz x19, G_M46295_IG22
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG14
+ ble G_M46295_IG16
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG21
- cbz w21, G_M46295_IG15
+ bgt G_M46295_IG23
+ cbz w21, G_M46295_IG17
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -85,20 +90,26 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG15
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG10
+ cbz x26, G_M46295_IG12
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG10
+ cbz w27, G_M46295_IG12
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG12
+ blt G_M46295_IG14
cmp x23, #0
cset x0, ne
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -144,21 +155,21 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=160 bbWeight=8 PerfScore 312.00
-G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG11: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG13
+ b G_M46295_IG15
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG12: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG18
+ beq G_M46295_IG20
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -172,28 +183,28 @@ G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG16
+ cbz w20, G_M46295_IG18
cmp w20, #0
- bls G_M46295_IG19
+ bls G_M46295_IG21
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG17
+ cbnz x0, G_M46295_IG19
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- b G_M46295_IG17
+ b G_M46295_IG19
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -203,18 +214,18 @@ G_M46295_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG17
+ b G_M46295_IG19
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -230,7 +241,7 @@ G_M46295_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=40 bbWeight=0 PerfScore 0.00
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -240,7 +251,7 @@ G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 504, prolog size 32, PerfScore 671.00, instruction count 126, allocated bytes for code 504 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 524, prolog size 32, PerfScore 683.00, instruction count 131, allocated bytes for code 524 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -251,7 +262,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 126 (0x0007e) Actual length = 504 (0x0001f8)
+ Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+32 (+3.98%) : 199470.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75
-G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00
+G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M3645_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M3645_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M3645_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #1 LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M3645_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M3645_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #1 LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M3645_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M3645_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M3645_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M3645_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M3645_IG17
...
+32 (+3.98%) : 50239.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75
-G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00
+G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M3645_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M3645_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M3645_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #1 LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M3645_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M3645_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #1 LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M3645_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M3645_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M3645_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M3645_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M3645_IG17
...
libraries_tests.run.osx.arm64.Release.mch
-40 (-27.03%) : 341952.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,13 +8,13 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 673
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 3.53) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 4.56) int -> x1 single-def
-; V02 loc0 [V02,T02] ( 11, 3.16) int -> x3
-; V03 loc1 [V03,T04] ( 6, 1.58) ushort -> x5
+; V00 arg0 [V00,T01] ( 4, 3.52) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 6, 4.04) int -> x1 single-def
+; V02 loc0 [V02,T02] ( 7, 3.68) int -> x3
+; V03 loc1 [V03,T04] ( 3, 1.58) ushort -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.53) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 1.05) byref -> x4 hoist multi-def "CSE - moderate"
+; V05 cse0 [V05,T03] ( 5, 3.05) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 1.05) byref -> x4 hoist "CSE - moderate"
;
; Lcl frame size = 0
@@ -36,62 +36,46 @@ G_M3357_IG04: ; bbWeight=0.48, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.48 PerfScore 0.96
-G_M3357_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG07
add x4, x0, #12
; byrRegs +[x4]
- ;; size=12 bbWeight=0.52 PerfScore 1.04
-G_M3357_IG06: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M3357_IG06: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG08
- add w3, w3, #1
- cmp w2, w3
- ble G_M3357_IG11
- b G_M3357_IG06
- ;; size=32 bbWeight=0.52 PerfScore 4.18
-G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs -[x4]
cmp w3, w2
- bhs G_M3357_IG10
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG08
+ bhs G_M3357_IG09
+ ldrh w0, [x4, w3, UXTW #2]
+ cmp w0, #32
+ ccmp w0, #9, z, ne
+ bne G_M3357_IG07
add w3, w3, #1
cmp w2, w3
- ble G_M3357_IG11
- b G_M3357_IG07
- ;; size=44 bbWeight=0.01 PerfScore 0.05
-G_M3357_IG08: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ ble G_M3357_IG10
+ b G_M3357_IG06
+ ;; size=40 bbWeight=0.53 PerfScore 5.01
+G_M3357_IG07: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w0, w3, w1
;; size=4 bbWeight=0.52 PerfScore 0.26
-G_M3357_IG09: ; bbWeight=0.52, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.52, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.52 PerfScore 1.04
-G_M3357_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w2, w1
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 13.77, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 14.03, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -102,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-11.90%) : 341951.dasm - System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
@@ -9,16 +9,16 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 9, 4.03) ref -> x19 class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 8, 5.56) int -> x1 single-def
+; V00 arg0 [V00,T01] ( 8, 4.03) ref -> x19 class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 7, 5.04) int -> x1 single-def
; V02 arg2 [V02,T05] ( 3, 2 ) ubyte -> x20 single-def
; V03 arg3 [V03,T02] ( 4, 3 ) byref -> x3 single-def
; V04 loc0 [V04,T04] ( 18, 4.00) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T07] ( 4, 2 ) int -> x2 "Inline return value spill temp"
-; V07 tmp2 [V07,T06] ( 11, 3.16) int -> x4 "Inline stloc first use temp"
-; V08 tmp3 [V08,T08] ( 6, 1.58) ushort -> x0 "Inline stloc first use temp"
-; V09 cse0 [V09,T03] ( 10, 4.03) int -> x21 "CSE - aggressive"
+; V07 tmp2 [V07,T06] ( 7, 3.68) int -> x4 "Inline stloc first use temp"
+; V08 tmp3 [V08,T08] ( 3, 1.58) ushort -> x0 "Inline stloc first use temp"
+; V09 cse0 [V09,T03] ( 9, 4.56) int -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -40,70 +40,56 @@ G_M52160_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3},
;; size=16 bbWeight=1 PerfScore 5.50
G_M52160_IG03: ; bbWeight=0.48, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
mov w2, wzr
- b G_M52160_IG08
+ b G_M52160_IG07
;; size=8 bbWeight=0.48 PerfScore 0.72
-G_M52160_IG04: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG04: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
sxtw w4, w1
- tbnz w1, #31, G_M52160_IG06
- ;; size=8 bbWeight=0.52 PerfScore 0.78
-G_M52160_IG05: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ ;; size=4 bbWeight=0.52 PerfScore 0.26
+G_M52160_IG05: ; bbWeight=0.53, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ cmp w4, w21
+ bhs G_M52160_IG14
add x2, x19, #12
; byrRegs +[x2]
ldrh w0, [x2, w4, UXTW #2]
cmp w0, #32
ccmp w0, #9, z, ne
- bne G_M52160_IG07
+ bne G_M52160_IG06
add w4, w4, #1
cmp w21, w4
- ble G_M52160_IG16
+ ble G_M52160_IG15
b G_M52160_IG05
- ;; size=36 bbWeight=0.52 PerfScore 4.44
-G_M52160_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+ ;; size=44 bbWeight=0.53 PerfScore 5.27
+G_M52160_IG06: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
; byrRegs -[x2]
- cmp w4, w21
- bhs G_M52160_IG15
- add x0, x19, #12
- ; byrRegs +[x0]
- ldrh w0, [x0, w4, UXTW #2]
- ; byrRegs -[x0]
- cmp w0, #32
- ccmp w0, #9, z, ne
- bne G_M52160_IG07
- add w4, w4, #1
- cmp w21, w4
- ble G_M52160_IG16
- b G_M52160_IG06
- ;; size=44 bbWeight=0.01 PerfScore 0.05
-G_M52160_IG07: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
sub w2, w4, w1
;; size=4 bbWeight=0.52 PerfScore 0.26
-G_M52160_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
add w22, w1, w2
cmp w21, w22
- beq G_M52160_IG10
+ beq G_M52160_IG09
;; size=12 bbWeight=1 PerfScore 2.00
-G_M52160_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
+G_M52160_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref, isz
cmp w22, w21
- bhs G_M52160_IG15
+ bhs G_M52160_IG14
add x0, x19, #12
; byrRegs +[x0]
ldrh w0, [x0, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #44
- beq G_M52160_IG12
+ beq G_M52160_IG11
;; size=24 bbWeight=0.50 PerfScore 3.26
-G_M52160_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52160_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x3]
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M52160_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M52160_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M52160_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, gcvars, byref, isz
+G_M52160_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, gcvars, byref, isz
; gcrRegs +[x19]
; byrRegs +[x3]
mov w0, #1
@@ -122,10 +108,10 @@ G_M52160_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
add w22, w0, w22
tst w20, #255
- beq G_M52160_IG10
- b G_M52160_IG14
+ beq G_M52160_IG09
+ b G_M52160_IG13
;; size=56 bbWeight=0 PerfScore 0.00
-G_M52160_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M52160_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #1
mov x0, x19
; gcrRegs +[x0]
@@ -139,32 +125,32 @@ G_M52160_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
add w22, w0, w22
;; size=36 bbWeight=0 PerfScore 0.00
-G_M52160_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M52160_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w22
- ble G_M52160_IG10
+ ble G_M52160_IG09
cmp w22, w21
- bhs G_M52160_IG15
+ bhs G_M52160_IG14
add x0, x19, #12
; byrRegs +[x0]
ldrh w0, [x0, w22, UXTW #2]
; byrRegs -[x0]
cmp w0, #44
- beq G_M52160_IG13
- b G_M52160_IG10
+ beq G_M52160_IG12
+ b G_M52160_IG09
;; size=36 bbWeight=0 PerfScore 0.00
-G_M52160_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52160_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M52160_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
+G_M52160_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0008 {x3}, byref
; gcrRegs +[x19]
; byrRegs +[x3]
sub w2, w21, w1
- b G_M52160_IG08
+ b G_M52160_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 336, prolog size 24, PerfScore 26.01, instruction count 84, allocated bytes for code 336 (MethodHash=17d3343f) for method System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
+Total bytes of code 296, prolog size 24, PerfScore 26.27, instruction count 74, allocated bytes for code 296 (MethodHash=17d3343f) for method System.Net.Http.Headers.HeaderUtilities:GetNextNonEmptyOrWhitespaceIndex(System.String,int,ubyte,byref):int (Tier1)
; ============================================================
Unwind Info:
@@ -175,7 +161,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-4.72%) : 296629.dasm - System.Linq.Parallel.SortHelper2[int,System.Linq.Parallel.Pair
2[int,int]]:Dispose():this (Tier1)
@@ -13,9 +13,9 @@
; V01 loc0 [V01,T08] ( 8, 8.01) int -> x20
; V02 loc1 [V02,T04] ( 6, 15.39) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 13, 36.82) ref -> x24 class-hnd "dup spill" <System.Threading.Barrier>
+; V04 tmp1 [V04,T00] ( 12, 43.81) ref -> x24 class-hnd "dup spill" <System.Threading.Barrier>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref
-; V06 tmp3 [V06,T10] ( 3, 0 ) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V06 tmp3 [V06,T10] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Barrier>
; V08 tmp5 [V08,T05] ( 4, 14.44) ref -> x22 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
; V09 tmp6 [V09,T06] ( 4, 14.44) ref -> x22 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim>
@@ -64,7 +64,7 @@ G_M38639_IG05: ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x22]
ldr w0, [x22, #0x08]
cmp w20, w0
- bhs G_M38639_IG13
+ bhs G_M38639_IG14
add x0, x22, #16
; byrRegs +[x0]
ubfiz x23, x20, #3, #32
@@ -82,7 +82,7 @@ G_M38639_IG06: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M38639_IG13
+ bhs G_M38639_IG14
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -91,7 +91,7 @@ G_M38639_IG06: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; byrRegs -[x0]
ldr w1, [x0, #0x08]
cmp w21, w1
- bhs G_M38639_IG13
+ bhs G_M38639_IG14
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -102,18 +102,18 @@ G_M38639_IG06: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M38639_IG07: ; bbWeight=1.75, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr w0, [x24, #0x3C]
- cbnz w0, G_M38639_IG14
+ cbnz w0, G_M38639_IG15
+ ;; size=8 bbWeight=1.75 PerfScore 6.99
+G_M38639_IG08: ; bbWeight=1.75, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M38639_IG15
- ;; size=32 bbWeight=1.75 PerfScore 17.47
-G_M38639_IG08: ; bbWeight=1.75, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
+ bne G_M38639_IG13
ldrb w0, [x24, #0x40]
cbnz w0, G_M38639_IG10
- ;; size=8 bbWeight=1.75 PerfScore 6.99
+ ;; size=32 bbWeight=1.75 PerfScore 17.47
G_M38639_IG09: ; bbWeight=1.80, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
ldr x22, [x24, #0x08]
; gcrRegs +[x22]
@@ -163,7 +163,7 @@ G_M38639_IG11: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x22]
ldr w0, [x22, #0x08]
cmp w20, w0
- bhs G_M38639_IG13
+ bhs G_M38639_IG14
add x0, x22, #16
; byrRegs +[x0]
ldr x0, [x0, x23]
@@ -185,26 +185,8 @@ G_M38639_IG12: ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
bgt G_M38639_IG05
b G_M38639_IG03
;; size=24 bbWeight=0.38 PerfScore 3.38
-G_M38639_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M38639_IG14: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19 x24]
- bl <unknown method>
- ; gcr arg pop 0
- ldr w1, [x24, #0x3C]
- cmp w0, w1
- beq G_M38639_IG16
- ldr x0, [x24]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
- beq G_M38639_IG08
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M38639_IG15: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
+G_M38639_IG13: ; bbWeight=1.75, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x24]
mov x0, x24
; gcrRegs +[x0]
mov w1, #1
@@ -215,17 +197,27 @@ G_M38639_IG15: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000
; gcrRegs -[x0]
; gcr arg pop 0
b G_M38639_IG10
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38639_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=1.75 PerfScore 20.97
+G_M38639_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x24]
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M38639_IG15: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x19 x24]
+ bl <unknown method>
+ ; gcr arg pop 0
+ ldr w1, [x24, #0x3C]
+ cmp w0, w1
+ bne G_M38639_IG08
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
+ ; gcrRegs -[x19 x24] +[x0]
; gcr arg pop 0
- mov x24, x0
- ; gcrRegs +[x24]
+ mov x19, x0
+ ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method>
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -236,7 +228,7 @@ G_M38639_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -244,15 +236,15 @@ G_M38639_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- mov x0, x24
+ mov x0, x19
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x24]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
brk_unix #0
- ;; size=80 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
-Total bytes of code 508, prolog size 24, PerfScore 218.62, instruction count 127, allocated bytes for code 508 (MethodHash=cbf96910) for method System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:Dispose():this (Tier1)
+Total bytes of code 484, prolog size 24, PerfScore 239.59, instruction count 121, allocated bytes for code 484 (MethodHash=cbf96910) for method System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:Dispose():this (Tier1)
; ============================================================
Unwind Info:
@@ -263,7 +255,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 127 (0x0007f) Actual length = 508 (0x0001fc)
+ Function Length : 121 (0x00079) Actual length = 484 (0x0001e4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+4.52%) : 280952.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -23,22 +23,23 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp"
; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M10785_IG13
cmp x20, x19
@@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov w0, #1
;; size=16 bbWeight=1 PerfScore 3.00
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19, #0x30]
cmn x0, #1
@@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x1, [x19, #0x18]
cmp x0, x1
bne G_M10785_IG13
+ ldr x0, [x20, #0x20]
+ ldr x1, [x19, #0x20]
+ cmp x0, x1
+ cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
@@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2, #0x10]
;; size=40 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x0, [x20, #0x28]
@@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- cset x0, eq
- uxtb w0, w0
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ uxtb w0, w21
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20]
ldr x1, [x19]
cmp x0, x1
@@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M10785_IG02
;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -273,7 +280,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -296,10 +303,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+36 (+4.55%) : 628841.dasm - System.Collections.Generic.GenericArraySortHelper1[uint]:IntroSort(System.Span
1[uint],int) (Tier1)
@@ -5,16 +5,16 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 13
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 13
; 8 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
; V01 arg1 [V01,T02] ( 7, 7.69) int -> x19
-; V02 loc0 [V02,T01] ( 15, 14.23) int -> x22
+; V02 loc0 [V02,T01] ( 16, 15.15) int -> x22
; V03 loc1 [V03,T09] ( 3, 3.77) int -> x23
; V04 loc2 [V04,T17] ( 9, 0 ) byref -> x20 single-def
-; V05 loc3 [V05,T18] ( 9, 0 ) byref -> x19 single-def
+; V05 loc3 [V05,T18] ( 9, 0 ) byref -> x22 single-def
;* V06 loc4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def
; V07 loc5 [V07,T10] ( 4, 3.69) int -> x0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -72,7 +72,7 @@
; V60 tmp52 [V60,T13] ( 2, 1.85) int -> x1 "field V36._length (fldOffset=0x8)" P-INDEP
; V61 tmp53 [V61,T07] ( 2, 3.85) byref -> x0 "field V41._reference (fldOffset=0x0)" P-INDEP
; V62 tmp54 [V62,T08] ( 2, 3.85) int -> x1 "field V41._length (fldOffset=0x8)" P-INDEP
-; V63 cse0 [V63,T00] ( 12, 19.85) ref -> x1 multi-def "CSE - aggressive"
+; V63 cse0 [V63,T00] ( 15, 30.92) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -118,17 +118,68 @@ G_M26918_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
G_M26918_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
sxtw w22, w20
cmp w20, #1
- ble G_M26918_IG14
+ ble G_M26918_IG17
;; size=12 bbWeight=1 PerfScore 2.00
G_M26918_IG05: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w22, #16
- ble G_M26918_IG10
+ bgt G_M26918_IG09
;; size=8 bbWeight=1.92 PerfScore 2.88
-G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- cbz w19, G_M26918_IG20
+G_M26918_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ cmp w22, #2
+ beq G_M26918_IG15
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M26918_IG07: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ cmp w22, #3
+ beq G_M26918_IG19
+ cmp w22, w20
+ bhi G_M26918_IG23
+ tbz w22, #31, G_M26918_IG08
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ mov x0, x1
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ ;; size=56 bbWeight=0.92 PerfScore 10.62
+G_M26918_IG08: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ mov x0, x21
+ ; byrRegs +[x0]
+ mov w1, w22
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; byrRegs -[x0 x21]
+ b G_M26918_IG17
+ ;; size=32 bbWeight=0.92 PerfScore 6.92
+G_M26918_IG09: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
+ cbz w19, G_M26918_IG22
sub w19, w19, #1
cmp w22, w20
- bhi G_M26918_IG21
+ bhi G_M26918_IG23
+ tbz w22, #31, G_M26918_IG11
+ ;; size=20 bbWeight=0.92 PerfScore 3.69
+G_M26918_IG10: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ mov x0, x1
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=3.69 PerfScore 27.69
+G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
sxtw w1, w22
mov x0, x21
; byrRegs +[x0]
@@ -145,13 +196,13 @@ G_M26918_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}
add x1, x1, w22, UXTW
mov w2, w20
cmp x1, x2
- bhi G_M26918_IG21
+ bhi G_M26918_IG23
ubfiz x0, x0, #2, #32
add x24, x21, x0
; byrRegs +[x24]
- tbz w22, #31, G_M26918_IG08
- ;; size=88 bbWeight=0.92 PerfScore 15.69
-G_M26918_IG07: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 x24}, byref
+ tbz w22, #31, G_M26918_IG13
+ ;; size=72 bbWeight=0.92 PerfScore 12.92
+G_M26918_IG12: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 x24}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -164,7 +215,7 @@ G_M26918_IG07: ; bbWeight=3.69, gcrefRegs=0000 {}, byrefRegs=1200000 {x21
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=3.69 PerfScore 27.69
-G_M26918_IG08: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 x24}, byref, isz
+G_M26918_IG13: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=1200000 {x21 x24}, byref, isz
mov x0, x24
; byrRegs +[x0]
sxtw w1, w22
@@ -177,67 +228,21 @@ G_M26918_IG08: ; bbWeight=1.92, gcrefRegs=0000 {}, byrefRegs=1200000 {x21
; byrRegs -[x0 x24]
sxtw w22, w23
cmp w22, #1
- bgt G_M26918_IG05
+ ble G_M26918_IG17
;; size=44 bbWeight=1.92 PerfScore 17.31
-G_M26918_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21]
- b G_M26918_IG14
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M26918_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- ; byrRegs +[x21]
- cmp w22, #2
- beq G_M26918_IG13
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M26918_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- cmp w22, #3
- beq G_M26918_IG17
- cmp w22, w20
- bhi G_M26918_IG21
- tbz w22, #31, G_M26918_IG12
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- mov x0, x1
- ; gcrRegs +[x0]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0]
- ;; size=56 bbWeight=0.92 PerfScore 10.62
-G_M26918_IG12: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- mov x0, x21
- ; byrRegs +[x0]
- mov w1, w22
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; byrRegs -[x0 x21]
- b G_M26918_IG14
- ;; size=32 bbWeight=0.92 PerfScore 6.92
-G_M26918_IG13: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- ; byrRegs +[x21]
+G_M26918_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ b G_M26918_IG05
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M26918_IG15: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
add x22, x21, #4
; byrRegs +[x22]
ldr wzr, [x21]
ldr w0, [x21]
ldr w1, [x22]
cmp w0, w1
- bhi G_M26918_IG15
+ bls G_M26918_IG17
;; size=24 bbWeight=0.08 PerfScore 0.85
-G_M26918_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x21-x22]
- ldp x23, x24, [sp, #0x30]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M26918_IG15: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, gcvars, byref
- ; byrRegs +[x21-x22]
+G_M26918_IG16: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
cmp x21, x22
cset x0, ne
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
@@ -249,26 +254,32 @@ G_M26918_IG15: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x22]
str w1, [x21]
str w0, [x22]
- b G_M26918_IG14
- ;; size=48 bbWeight=0.04 PerfScore 0.65
-G_M26918_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=44 bbWeight=0.04 PerfScore 0.61
+G_M26918_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21-x22]
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=1 PerfScore 5.00
+G_M26918_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M26918_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M26918_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
; byrRegs +[x21]
cmp w20, #2
- bls G_M26918_IG16
+ bls G_M26918_IG18
add x20, x21, #8
; byrRegs +[x20]
- add x19, x21, #4
- ; byrRegs +[x19]
+ add x22, x21, #4
+ ; byrRegs +[x22]
ldr wzr, [x21]
ldr w0, [x21]
- ldr w1, [x19]
+ ldr w1, [x22]
cmp w0, w1
- bls G_M26918_IG18
- cmp x21, x19
+ bls G_M26918_IG20
+ cmp x21, x22
cset x0, ne
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
movk x1, #0xD1FFAB1E LSL #16
@@ -276,15 +287,15 @@ G_M26918_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
ldr x1, [x1]
...
+28 (+4.64%) : 395309.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -21,24 +21,25 @@
; V09 tmp5 [V09,T07] ( 3, 0 ) ubyte -> x1 "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V12 tmp8 [V12,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V12 tmp8 [V12,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V13 tmp9 [V13,T11] ( 2, 0 ) int -> x0 "argument with side effect"
; V14 tmp10 [V14,T08] ( 2, 0 ) ref -> x19 single-def "arg temp"
; V15 tmp11 [V15,T03] ( 3, 0 ) ref -> x0 "argument with side effect"
; V16 tmp12 [V16,T12] ( 2, 0 ) int -> x0 "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M10785_IG12
cmp x20, x19
@@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov w0, #1
;; size=16 bbWeight=1 PerfScore 3.00
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19, #0x30]
cmn x0, #1
@@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x1, [x19, #0x18]
cmp x0, x1
bne G_M10785_IG12
+ ldr x0, [x20, #0x20]
+ ldr x1, [x19, #0x20]
+ cmp x0, x1
+ cset x21, eq
b G_M10785_IG14
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
@@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2, #0x10]
;; size=40 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -126,10 +134,11 @@ G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2]
;; size=84 bbWeight=0 PerfScore 0.00
G_M10785_IG10: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x0, [x20, #0x28]
@@ -148,24 +157,22 @@ G_M10785_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG13: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- cset x0, eq
- uxtb w0, w0
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M10785_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ uxtb w0, w21
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG15: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20]
ldr x1, [x19]
cmp x0, x1
@@ -254,7 +261,7 @@ G_M10785_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M10785_IG02
;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 604, prolog size 12, PerfScore 9.50, instruction count 151, allocated bytes for code 604 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 632, prolog size 16, PerfScore 12.50, instruction count 158, allocated bytes for code 632 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -265,7 +272,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
+ Function Length : 158 (0x0009e) Actual length = 632 (0x000278)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -288,10 +295,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-40 (-27.03%) : 19575.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-27.03%) : 145484.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-3.65%) : 82007.dasm - System.ComponentModel.Composition.CompositionResultOfTTest:ValueSingleValueAsErrorsArgumentShouldThrowComposition():this (FullOpts)
@@ -10,43 +10,41 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.ComponentModel.Composition.CompositionResultOfTTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.ComponentModel.Composition.Expectations+<GetEnumValues>d__24`1[int]>
-; V02 loc1 [V02,T11] ( 7, 10 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
-; V03 loc2 [V03,T09] ( 3, 12 ) int -> x22
-; V04 loc3 [V04,T03] ( 4, 16 ) ref -> x23 class-hnd exact <System.ComponentModel.Composition.CompositionResultOfTTest+<>c__DisplayClass32_0>
+; V02 loc1 [V02,T10] ( 7, 10 ) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V03 loc2 [V03,T08] ( 3, 12 ) int -> x21
+; V04 loc3 [V04,T03] ( 4, 16 ) ref -> x22 class-hnd exact <System.ComponentModel.Composition.CompositionResultOfTTest+<>c__DisplayClass32_0>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ComponentModel.Composition.CompositionResultOfTTest+<>c__DisplayClass32_0>
-; V07 tmp2 [V07,T02] ( 3, 24 ) ref -> x24 class-hnd exact "dup spill" <int[]>
-; V08 tmp3 [V08,T01] ( 4, 32 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Action>
-; V09 tmp4 [V09,T12] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.Expectations+<GetEnumValues>d__24`1[int]>
-; V10 tmp5 [V10,T06] ( 2, 16 ) ref -> x2 class-hnd "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T01] ( 3, 24 ) ref -> x23 class-hnd exact "dup spill" <int[]>
+; V08 tmp3 [V08,T00] ( 4, 32 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Action>
+; V09 tmp4 [V09,T11] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.Expectations+<GetEnumValues>d__24`1[int]>
+; V10 tmp5 [V10,T04] ( 2, 16 ) ref -> x2 class-hnd "dup spill" <<unknown class>>
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref
-; V12 tmp7 [V12,T04] ( 4, 16 ) ref -> x2
+; V12 tmp7 [V12,T06] ( 4, 14 ) ref -> x2
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ComponentModel.Composition.CompositionResult`1[System.String]>
-; V14 tmp9 [V14,T00] ( 5, 40 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V15 tmp10 [V15,T07] ( 2, 16 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
+; V14 tmp9 [V14,T02] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V15 tmp10 [V15,T12] ( 2, 8 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.String>
-; V17 tmp12 [V17,T08] ( 2, 16 ) ref -> x15 class-hnd "Inlining Arg" <<unknown class>>
+; V17 tmp12 [V17,T05] ( 2, 16 ) ref -> x15 class-hnd "Inlining Arg" <<unknown class>>
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V19 tmp14 [V19,T13] ( 2, 8 ) ref -> x15 "field V13._errors (fldOffset=0x0)" P-INDEP
-;* V20 tmp15 [V20,T16] ( 0, 0 ) ref -> zero-ref "field V13._value (fldOffset=0x8)" P-INDEP
-; V21 PSPSym [V21,T17] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V22 cse0 [V22,T10] ( 7, 11 ) long -> x19 multi-def "CSE - aggressive"
+;* V20 tmp15 [V20,T15] ( 0, 0 ) ref -> zero-ref "field V13._value (fldOffset=0x8)" P-INDEP
+; V21 PSPSym [V21,T16] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V22 cse0 [V22,T09] ( 7, 11 ) long -> x19 multi-def "CSE - aggressive"
; V23 cse1 [V23,T14] ( 2, 5 ) long -> x20 hoist "CSE - aggressive"
-; V24 cse2 [V24,T15] ( 2, 5 ) long -> x21 hoist "CSE - aggressive"
-; V25 cse3 [V25,T05] ( 4, 16 ) long -> x25 "CSE - aggressive"
+; V24 cse2 [V24,T07] ( 4, 12 ) long -> x24 "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M16899_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- stp x23, x24, [sp, #0x48]
- str x25, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
mov fp, sp
- add x1, sp, #96
- str x1, [fp, #0x20] // [V21 PSPSym]
- ;; size=32 bbWeight=1 PerfScore 7.00
+ add x1, sp, #80
+ str x1, [fp, #0x18] // [V21 PSPSym]
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M16899_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -71,10 +69,10 @@ G_M16899_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x1
; gcrRegs -[x19]
; gcr arg pop 0
- str x0, [fp, #0x18] // [V02 loc1]
+ str x0, [fp, #0x10] // [V02 loc1]
; GC ptr vars +{V02}
;; size=64 bbWeight=1 PerfScore 13.50
-G_M16899_IG03: ; bbWeight=1, gcVars=0000000000000800 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16899_IG03: ; bbWeight=1, gcVars=0000000000000400 {V02}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x19, #0xD1FFAB1E
movk x19, #0xD1FFAB1E LSL #16
movk x19, #1 LSL #32
@@ -83,54 +81,55 @@ G_M16899_IG03: ; bbWeight=1, gcVars=0000000000000800 {V02}, gcrefRegs=000
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M16899_IG06
+ cbz w0, G_M16899_IG07
movz x20, #0xD1FFAB1E
movk x20, #0xD1FFAB1E LSL #16
movk x20, #1 LSL #32
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- ;; size=52 bbWeight=1 PerfScore 10.00
+ ;; size=40 bbWeight=1 PerfScore 8.50
G_M16899_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V02 loc1]
+ ldr x0, [fp, #0x10] // [V02 loc1]
; gcrRegs +[x0]
add x11, x19, #8
ldr x1, [x11]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- sxtw w22, w0
+ sxtw w21, w0
mov x0, x20
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
- mov x0, x21
- ; gcrRegs -[x0]
- mov x1, #1
- bl CORINFO_HELP_NEWARR_1_VC
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- mov x24, x0
- ; gcrRegs +[x24]
- str w22, [x24, #0x10]
- movz x25, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x25, #0xD1FFAB1E LSL #16
- movk x25, #1 LSL #32
- ldr x2, [x25]
- ; gcrRegs +[x2]
- cbnz x2, G_M16899_IG05
+ mov x22, x0
+ ; gcrRegs +[x22]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
+ mov x1, #1
+ bl CORINFO_HELP_NEWARR_1_VC
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ mov x23, x0
+ ; gcrRegs +[x23]
+ str w21, [x23, #0x10]
+ movz x24, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x24, #0xD1FFAB1E LSL #16
+ movk x24, #1 LSL #32
+ ldr x2, [x24]
+ ; gcrRegs +[x2]
+ cbnz x2, G_M16899_IG06
+ ;; size=80 bbWeight=4 PerfScore 76.00
+G_M16899_IG05: ; bbWeight=2, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x2] +[x0]
+ ; gcrRegs +[x0]
; gcr arg pop 0
mov x2, x0
; gcrRegs +[x2]
- ldr x15, [x25, #-0x08]
+ ldr x15, [x24, #-0x08]
; gcrRegs +[x15]
add x14, x2, #8
; byrRegs +[x14]
@@ -141,14 +140,14 @@ G_M16899_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x14, #0xD1FFAB1E LSL #16
movk x14, #1 LSL #32
str x14, [x2, #0x18]
- mov x14, x25
+ mov x14, x24
mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=132 bbWeight=4 PerfScore 120.00
-G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=0000 {}, byref, isz
- mov x1, x24
+ ;; size=60 bbWeight=2 PerfScore 24.00
+G_M16899_IG06: ; bbWeight=4, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=0000 {}, byref, isz
+ mov x1, x23
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -158,16 +157,16 @@ G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=00
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x1-x2 x24] +[x0]
+ ; gcrRegs -[x1-x2 x23] +[x0]
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- add x14, x23, #8
+ add x14, x22, #8
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- str xzr, [x23, #0x10]
+ str xzr, [x22, #0x10]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -178,16 +177,16 @@ G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=00
; gcrRegs +[x1]
add x14, x1, #8
; byrRegs +[x14]
- mov x15, x23
+ mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x23]
+ ; gcrRegs -[x0 x15 x22]
; byrRegs -[x14]
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
str x0, [x1, #0x18]
- mov w0, w22
+ mov w0, w21
movz x2, #0xD1FFAB1E // code for System.UnitTesting.CompositionAssert:ThrowsError(int,System.Action)
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -195,7 +194,7 @@ G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=00
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V02 loc1]
+ ldr x0, [fp, #0x10] // [V02 loc1]
; gcrRegs +[x0]
mov x11, x19
ldr x1, [x11]
@@ -204,8 +203,8 @@ G_M16899_IG05: ; bbWeight=4, gcrefRegs=1800004 {x2 x23 x24}, byrefRegs=00
; gcr arg pop 0
cbnz w0, G_M16899_IG04
;; size=144 bbWeight=4 PerfScore 126.00
-G_M16899_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V02 loc1]
+G_M16899_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x10] // [V02 loc1]
; gcrRegs +[x0]
add x11, x19, #16
ldr x1, [x11]
@@ -214,59 +213,56 @@ G_M16899_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; gcr arg pop 0
;; size=16 bbWeight=1 PerfScore 6.50
-G_M16899_IG07: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x58]
- ldp x23, x24, [sp, #0x48]
- ldp x21, x22, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
...
+40 (+3.65%) : 35913.dasm - System.Collections.Generic.GenericArraySortHelper1[DryIoc.ServiceRegistrationInfo]:IntroSort(System.Span
1[DryIoc.ServiceRegistrationInfo],int) (FullOpts)
@@ -9,8 +9,8 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[DryIoc.ServiceRegistrationInfo]>
-; V01 arg1 [V01,T03] ( 7, 19 ) int -> x20
-; V02 loc0 [V02,T01] ( 15, 29 ) int -> x22
+; V01 arg1 [V01,T04] ( 7, 19 ) int -> x20
+; V02 loc0 [V02,T00] ( 16, 33 ) int -> x22
; V03 loc1 [V03,T07] ( 3, 12 ) int -> x23
; V04 loc2 [V04,T14] ( 13, 6.50) byref -> x21 single-def
; V05 loc3 [V05,T15] ( 13, 6.50) byref -> x22 single-def
@@ -72,7 +72,7 @@
;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V62 tmp54 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V64 tmp56 [V64,T00] ( 4, 32 ) int -> x22 "Inlining Arg"
+; V64 tmp56 [V64,T01] ( 4, 32 ) int -> x22 "Inlining Arg"
;* V65 tmp57 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[DryIoc.ServiceRegistrationInfo]>
; V66 tmp58 [V66,T05] ( 2, 16 ) byref -> x24 "Inlining Arg"
;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -131,7 +131,7 @@
; V120 tmp112 [V120,T11] ( 2, 8 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP
; V121 tmp113 [V121,T10] ( 2, 8 ) byref -> x0 "field V65._reference (fldOffset=0x0)" P-INDEP
; V122 tmp114 [V122,T12] ( 2, 8 ) int -> x1 "field V65._length (fldOffset=0x8)" P-INDEP
-; V123 cse0 [V123,T04] ( 24, 16.50) ref -> x1 multi-def "CSE - aggressive"
+; V123 cse0 [V123,T03] ( 27, 22.50) ref -> x1 multi-def "CSE - aggressive"
; V124 cse1 [V124,T09] ( 3, 12 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -182,15 +182,31 @@ G_M32486_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
G_M32486_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w22, w21
cmp w21, #1
- ble G_M32486_IG22
+ ble G_M32486_IG24
;; size=12 bbWeight=1 PerfScore 2.00
G_M32486_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, #16
- ble G_M32486_IG11
- cbz w20, G_M32486_IG21
+ ble G_M32486_IG13
+ cbz w20, G_M32486_IG23
sub w20, w20, #1
cmp w22, w21
- bhi G_M32486_IG24
+ bhi G_M32486_IG26
+ tbz w22, #31, G_M32486_IG09
+ ;; size=28 bbWeight=4 PerfScore 22.00
+G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ movz x1, #8
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ mov x0, x1
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=2 PerfScore 15.00
+G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w1, w22
mov x0, x19
; byrRegs +[x0]
@@ -207,14 +223,14 @@ G_M32486_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
add x1, x0, w22, UXTW
mov w2, w21
cmp x1, x2
- bhi G_M32486_IG24
+ bhi G_M32486_IG26
mov x1, #24
mul x0, x0, x1
add x24, x19, x0
; byrRegs +[x24]
- tbz w22, #31, G_M32486_IG09
- ;; size=100 bbWeight=4 PerfScore 80.00
-G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ tbz w22, #31, G_M32486_IG11
+ ;; size=76 bbWeight=4 PerfScore 62.00
+G_M32486_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -227,7 +243,7 @@ G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=2 PerfScore 15.00
-G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M32486_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
mov x0, x24
; byrRegs +[x0]
sxtw w1, w22
@@ -242,14 +258,14 @@ G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2
cmp w22, #1
bgt G_M32486_IG07
;; size=44 bbWeight=4 PerfScore 36.00
-G_M32486_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32486_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
cmp w22, #2
- bne G_M32486_IG13
+ bne G_M32486_IG15
add x22, x19, #24
; byrRegs +[x22]
ldrsb wzr, [x19]
@@ -263,9 +279,9 @@ G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
; gcrRegs -[x0]
sub w0, w1, w0
cmp w0, #0
- ble G_M32486_IG22
+ ble G_M32486_IG24
cmp x19, x22
- bne G_M32486_IG12
+ bne G_M32486_IG14
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -278,7 +294,7 @@ G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
blr x2
; gcrRegs -[x0]
;; size=88 bbWeight=0.50 PerfScore 14.00
-G_M32486_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
+G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
ldp x0, x1, [x19]
; gcrRegs +[x0-x1]
ldr x2, [x19, #0x10]
@@ -311,14 +327,14 @@ G_M32486_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x2 x15]
; byrRegs -[x14 x22]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
cmp w22, #3
- bne G_M32486_IG19
+ bne G_M32486_IG21
cmp w21, #2
- bls G_M32486_IG23
+ bls G_M32486_IG25
add x21, x19, #48
; byrRegs +[x21]
add x22, x19, #24
@@ -334,9 +350,9 @@ G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
; gcrRegs -[x0]
sub w0, w1, w0
cmp w0, #0
- ble G_M32486_IG15
+ ble G_M32486_IG17
cmp x19, x22
- bne G_M32486_IG14
+ bne G_M32486_IG16
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -349,7 +365,7 @@ G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
blr x2
; gcrRegs -[x0]
;; size=100 bbWeight=0.50 PerfScore 15.00
-G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp x0, x1, [x19]
; gcrRegs +[x0-x1]
ldr x2, [x19, #0x10]
@@ -382,7 +398,7 @@ G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
; gcrRegs -[x2 x15]
; byrRegs -[x14]
;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
+G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
ldr x0, [x21]
; gcrRegs +[x0]
ldr x1, [x19]
@@ -393,9 +409,9 @@ G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
; gcrRegs -[x0]
sub w0, w1, w0
cmp w0, #0
- ble G_M32486_IG17
+ ble G_M32486_IG19
cmp x19, x21
- bne G_M32486_IG16
+ bne G_M32486_IG18
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -408,7 +424,7 @@ G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
blr x2
; gcrRegs -[x0]
;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp x0, x1, [x19]
; gcrRegs +[x0-x1]
ldr x2, [x19, #0x10]
@@ -442,7 +458,7 @@ G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
; gcrRegs -[x2 x15]
; byrRegs -[x14]
;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M32486_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
ldr x0, [x21]
; gcrRegs +[x0]
ldr x1, [x22]
@@ -453,9 +469,9 @@ G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21
; gcrRegs -[x0]
sub w0, w1, w0
cmp w0, #0
- ble G_M32486_IG22
+ ble G_M32486_IG24
cmp x22, x21
- bne G_M32486_IG18
+ bne G_M32486_IG20
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -468,7 +484,7 @@ G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21
blr x2
; gcrRegs -[x0]
;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
+G_M32486_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
ldp x0, x1, [x22]
; gcrRegs +[x0-x1]
ldr x2, [x22, #0x10]
@@ -501,13 +517,13 @@ G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x2 x15]
; byrRegs -[x14 x21]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M32486_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
cmp w22, w21
- bhi G_M32486_IG24
- tbz w22, #31, G_M32486_IG20
+ bhi G_M32486_IG26
+ tbz w22, #31, G_M32486_IG22
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
...
+32 (+4.08%) : 10107.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -97,95 +97,73 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=84 bbWeight=0.50 PerfScore 12.25
-G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=88 bbWeight=0.50 PerfScore 12.50
+G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M10501_IG11
+ ble G_M10501_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M10501_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M10501_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M10501_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M10501_IG10
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M10501_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M10501_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M10501_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M10501_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M10501_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M10501_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #1 LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -198,28 +176,32 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M10501_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M10501_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #1 LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -229,22 +211,38 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M10501_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M10501_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M10501_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M10501_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M10501_IG17
...
+36 (+4.64%) : 97812.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
@@ -12,41 +12,43 @@
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V02 loc1 [V02,T03] ( 3, 9 ) ref -> x19 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03 ] ( 8, 14 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x21 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
+; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x23 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T01] ( 7, 14 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp2 [V07,T07] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp5 [V10,T09] ( 4, 3.50) ref -> x2
+; V10 tmp5 [V10,T11] ( 4, 3.50) ref -> x2
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
; V12 tmp7 [V12,T00] ( 4, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V13 tmp8 [V13,T05] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T12] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V18 tmp13 [V18,T08] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V19 tmp14 [V19,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V18 tmp13 [V18,T10] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V19 tmp14 [V19,T15] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "V18.[000..008)"
-; V22 tmp17 [V22,T13] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
+; V22 tmp17 [V22,T14] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "V18.[012..016)"
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "V18.[016..020)"
;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V27 tmp22 [V27,T15] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V28 tmp23 [V28,T16] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V29 cse0 [V29,T04] ( 3, 6 ) long -> x20 "CSE - aggressive"
-; V30 cse1 [V30,T10] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
-; V31 cse2 [V31,T11] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V27 tmp22 [V27,T16] ( 2, 0 ) ref -> x0 "argument with side effect"
+; V28 tmp23 [V28,T17] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V29 cse0 [V29,T07] ( 2, 5 ) long -> x21 hoist "CSE - aggressive"
+; V30 cse1 [V30,T08] ( 2, 5 ) long -> x22 hoist "CSE - aggressive"
+; V31 cse2 [V31,T04] ( 3, 6 ) long -> x20 "CSE - aggressive"
+; V32 cse3 [V32,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
;
; Lcl frame size = 88
G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x68]
- str x21, [sp, #0x78]
+ stp x21, x22, [sp, #0x78]
+ str x23, [sp, #0x88]
mov fp, sp
add x9, fp, #24
movi v16.16b, #0
@@ -55,7 +57,7 @@ G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, xzr, [x9, #0x40]
mov x19, x0
; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M64326_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -139,10 +141,10 @@ G_M64326_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 3.75
G_M64326_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- ldr x2, [x21]
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ ldr x2, [x0]
; gcrRegs +[x2]
cbnz x2, G_M64326_IG08
;; size=20 bbWeight=1 PerfScore 5.50
@@ -155,7 +157,10 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]
- ldr x15, [x21, #-0x68]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #1 LSL #32
+ ldr x15, [x14]
; gcrRegs +[x15]
add x14, x2, #8
; byrRegs +[x14]
@@ -166,12 +171,14 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x14, #0xD1FFAB1E LSL #16
movk x14, #1 LSL #32
str x14, [x2, #0x18]
- mov x14, x21
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #1 LSL #32
mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=80 bbWeight=0.50 PerfScore 7.25
G_M64326_IG08: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
@@ -213,34 +220,36 @@ G_M64326_IG10: ; bbWeight=1, isz, extend
ldr x2, [x2]
blr x2
cbz w0, G_M64326_IG12
- ;; size=60 bbWeight=1 PerfScore 12.50
+ movz x21, #0xD1FFAB1E
+ movk x21, #0xD1FFAB1E LSL #16
+ movk x21, #1 LSL #32
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #1 LSL #32
+ ;; size=84 bbWeight=1 PerfScore 15.50
G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ mov x0, x21
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #8
+ mov x23, x0
+ ; gcrRegs +[x23]
+ add x14, x23, #8
; byrRegs +[x14]
add x13, fp, #88 // [V03 loc2+0x18]
; byrRegs +[x13]
bl CORINFO_HELP_ASSIGN_BYREF
; gcrRegs -[x0]
bl CORINFO_HELP_ASSIGN_BYREF
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ mov x0, x22
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; byrRegs -[x13-x14]
add x14, x0, #8
; byrRegs +[x14]
- mov x15, x21
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x21]
+ ; gcrRegs -[x15 x23]
; byrRegs -[x14]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -273,14 +282,15 @@ G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x2]
blr x2
cbnz w0, G_M64326_IG11
- ;; size=168 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 116.00
G_M64326_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
- ldr x21, [sp, #0x78]
+ ldr x23, [sp, #0x88]
+ ldp x21, x22, [sp, #0x78]
ldp x19, x20, [sp, #0x68]
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -318,7 +328,7 @@ G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=104 bbWeight=0 PerfScore 0.00
-Total bytes of code 776, prolog size 36, PerfScore 223.00, instruction count 194, allocated bytes for code 776 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
+Total bytes of code 812, prolog size 40, PerfScore 221.25, instruction count 203, allocated bytes for code 812 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
; ============================================================
Unwind Info:
@@ -329,7 +339,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 194 (0x000c2) Actual length = 776 (0x000308)
+ Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -337,9 +347,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ D1 11 save_reg X#4 Z#17 (0x11); str x23, [sp, #136]
+ E6 save_next
C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
- E4 end
+ 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
E4 end
realworld.run.osx.arm64.checked.mch
-8 (-0.77%) : 19300.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)
@@ -74,7 +74,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cmp w1, #1
beq G_M39186_IG23
mov w19, wzr
- b G_M39186_IG35
+ b G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
@@ -290,7 +290,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
mov w21, wzr
ldr w11, [x0, #0x30]
cmp w11, #0
- ble G_M39186_IG29
+ ble G_M39186_IG37
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -300,11 +300,11 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x11]
ldr w1, [x11, #0x10]
cmp w21, w1
- bhs G_M39186_IG30
+ bhs G_M39186_IG27
ldr x11, [x11, #0x08]
ldr w1, [x11, #0x08]
cmp w21, w1
- bhs G_M39186_IG31
+ bhs G_M39186_IG26
add x11, x11, #16
; gcrRegs -[x11]
; byrRegs +[x11]
@@ -320,10 +320,40 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M39186_IG34
- cbnz x20, G_M39186_IG27
- ;; size=80 bbWeight=4 PerfScore 116.00
-G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M39186_IG28
+ ;; size=76 bbWeight=4 PerfScore 112.00
+G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20 x22]
+ mov w19, wzr
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ movz x1, #0xD1FFAB1E // code for <unknown method>
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ b G_M39186_IG38
+ ;; size=32 bbWeight=0.50 PerfScore 4.50
+G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M39186_IG28: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20 x22]
+ cbnz x20, G_M39186_IG33
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M39186_IG29: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
@@ -331,10 +361,22 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
ldr x2, [x1, #0x38]
ldr x2, [x2]
ldr x2, [x2, #0x38]
- cbz x2, G_M39186_IG32
+ cbz x2, G_M39186_IG31
;; size=24 bbWeight=2 PerfScore 30.00
-G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ b G_M39186_IG32
+ ;; size=4 bbWeight=1.60 PerfScore 1.60
+G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov x2, x0
+ ;; size=24 bbWeight=0.40 PerfScore 1.40
+G_M39186_IG32: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x2
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -345,7 +387,7 @@ G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
mov x20, x0
; gcrRegs +[x20]
;; size=20 bbWeight=2 PerfScore 14.00
-G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -353,9 +395,20 @@ G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x11, [x1, #0x30]
- cbz x11, G_M39186_IG33
+ cbz x11, G_M39186_IG35
;; size=24 bbWeight=4 PerfScore 60.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ b G_M39186_IG36
+ ;; size=4 bbWeight=3.20 PerfScore 3.20
+G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov x11, x0
+ ;; size=20 bbWeight=0.80 PerfScore 2.40
+G_M39186_IG36: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
ldr x1, [x11]
@@ -374,7 +427,7 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00
cmp w21, w14
blt G_M39186_IG24
;; size=44 bbWeight=4 PerfScore 48.00
-G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -390,68 +443,17 @@ G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
sxtw w20, w0
mov w19, w20
; gcrRegs -[x19]
- b G_M39186_IG35
- ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M39186_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- brk_unix #0
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M39186_IG32: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x22]
- mov x0, x1
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov x2, x0
- b G_M39186_IG26
- ;; size=28 bbWeight=0.40 PerfScore 1.80
-G_M39186_IG33: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov x11, x0
- b G_M39186_IG28
- ;; size=24 bbWeight=0.80 PerfScore 3.20
-G_M39186_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20 x22]
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- mov w20, wzr
- mov x0, x19
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0 x19]
- ; gcr arg pop 0
- mov w19, w20
- ;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M39186_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.25
+G_M39186_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w19
;; size=4 bbWeight=1 PerfScore 0.50
-G_M39186_IG36: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x50
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V03 V24}
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
@@ -459,10 +461,10 @@ G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs
add x3, fp, #80
str x3, [sp, #0x18]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V03 loc2]
; gcrRegs +[x0]
- cbz x0, G_M39186_IG39
+ cbz x0, G_M39186_IG42
movz x19, #0xD1FFAB1E
movk x19, #0xD1FFAB1E LSL #16
movk x19, #1 LSL #32
@@ -473,20 +475,20 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
add x3, fp, #80
str x3, [sp, #0x18]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG44: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
-4 (-0.15%) : 2215.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -23,24 +23,24 @@
; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1
;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt"
;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg"
;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -67,13 +67,13 @@
;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
-; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg"
-; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
+; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]>
; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg"
; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]>
@@ -90,14 +90,14 @@
;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
-; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
+; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP
;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
@@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x40] // [V100 tmp78]
cmp w1, w2
bhi G_M4730_IG74
- cmp w1, #0
- cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w3, [x1, #0x08]
cmp w3, w0
bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x27]
add x1, x1, #16
@@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {},
beq G_M4730_IG67
b G_M4730_IG27
;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89}
str w1, [fp, #0x60] // [V10 loc6]
mov w28, w2
@@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; GC ptr vars +{V89}
ldr w28, [fp, #0x68] // [V07 loc3]
;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3]
; GC ptr vars -{V57}
cmp w25, w26
@@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}
; GC ptr vars +{V13}
cbz x24, G_M4730_IG39
;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26]
ldr w26, [fp, #0x44] // [V90 tmp68]
cbz w26, G_M4730_IG32
@@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
str w0, [x19, #0x18]
b G_M4730_IG41
;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27]
; GC ptr vars +{V13 V16 V89}
b G_M4730_IG42
@@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; gcrRegs -[x26]
b G_M4730_IG47
;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26]
; GC ptr vars +{V13 V16 V89}
ldr x2, [fp, #0x30] // [V13 loc9]
@@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcr arg pop 0
b G_M4730_IG06
;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27]
; GC ptr vars +{V13 V16 V89}
ldr x1, [fp, #0x30] // [V13 loc9]
@@ -1212,7 +1211,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2688, prolog size 48, PerfScore 6977.50, instruction count 672, allocated bytes for code 2688 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2684, prolog size 48, PerfScore 6975.50, instruction count 671, allocated bytes for code 2684 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1223,7 +1222,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 672 (0x002a0) Actual length = 2688 (0x000a80)
+ Function Length : 671 (0x0029f) Actual length = 2684 (0x000a7c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.13%) : 16555.dasm - Microsoft.CodeAnalysis.CommonReferenceManager2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager
2+BoundInputAssembly[System.Canon,System.Canon][],System.Canon[],System.Collections.Immutable.ImmutableArray`1[System.Canon],int):this (FullOpts)
@@ -17,7 +17,7 @@
; V06 loc1 [V06,T15] ( 16, 610 ) ref -> [fp+0x70] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc2 [V07,T65] ( 8, 28 ) int -> x26 single-def
; V08 loc3 [V08,T64] ( 8, 31 ) int -> x27
-; V09 loc4 [V09,T66] ( 6, 28 ) ref -> [fp+0x68] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V09 loc4 [V09,T66] ( 6, 44 ) ref -> [fp+0x68] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V10 loc5 [V10,T71] ( 2, 16 ) ref -> [fp+0x60] class-hnd spill-single-def <System.__Canon>
; V11 loc6 [V11,T37] ( 4, 112 ) ubyte -> [fp+0xDC]
;* V12 loc7 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
@@ -66,8 +66,8 @@
; V55 tmp33 [V55,T02] ( 6, 768 ) byref -> x7 "Inlining Arg"
; V56 tmp34 [V56,T16] ( 8, 512 ) int -> registers "Inline stloc first use temp"
;* V57 tmp35 [V57 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
-; V58 tmp36 [V58,T48] ( 3, 48 ) byref -> x14 "Inlining Arg"
-; V59 tmp37 [V59,T62] ( 4, 32 ) int -> x15 "Inline stloc first use temp"
+; V58 tmp36 [V58,T48] ( 3, 48 ) byref -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T62] ( 4, 32 ) int -> x6 "Inline stloc first use temp"
; V60 tmp38 [V60,T84] ( 3, 4 ) ref -> x22 single-def "field V03.array (fldOffset=0x0)" P-INDEP
; V61 tmp39 [V61,T29] ( 6, 192 ) ref -> [fp+0x40] "field V12.AssemblySymbol (fldOffset=0x0)" P-INDEP
; V62 tmp40 [V62,T23] ( 8, 256 ) int -> [fp+0xC4] "field V12.DefinitionIndex (fldOffset=0x8)" P-INDEP
@@ -101,7 +101,7 @@
; V90 tmp68 [V90,T51] ( 3, 48 ) ref -> x6 "argument with side effect"
; V91 tmp69 [V91,T52] ( 3, 48 ) ref -> x14 "arr expr"
; V92 tmp70 [V92,T55] ( 3, 48 ) int -> x15 "index expr"
-; V93 tmp71 [V93,T53] ( 3, 48 ) byref -> x1 "BlockOp address local"
+; V93 tmp71 [V93,T53] ( 3, 48 ) byref -> x6 "BlockOp address local"
; V94 tmp72 [V94,T106] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V95 tmp73 [V95,T107] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V96 tmp74 [V96,T93] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
@@ -123,7 +123,7 @@
; V112 cse13 [V112,T69] ( 3, 24 ) int -> x1 "CSE - moderate"
; V113 cse14 [V113,T67] ( 3, 24 ) ref -> x1 "CSE - moderate"
; V114 cse15 [V114,T70] ( 3, 24 ) int -> x1 "CSE - moderate"
-; V115 cse16 [V115,T68] ( 3, 24 ) ref -> x11 "CSE - moderate"
+; V115 cse16 [V115,T68] ( 3, 24 ) ref -> x1 "CSE - moderate"
; V116 cse17 [V116,T88] ( 4, 5.12) long -> [fp+0x98] spill-single-def "CSE - moderate"
; V117 cse18 [V117,T85] ( 3, 6 ) long -> [fp+0x90] spill-single-def "CSE - moderate"
; V118 cse19 [V118,T97] ( 3, 3.84) int -> x1 "CSE - conservative"
@@ -320,7 +320,7 @@ G_M32652_IG12: ; bbWeight=0.40, gcVars=00000000000000000000000010048002 {
;; size=28 bbWeight=0.40 PerfScore 2.00
G_M32652_IG13: ; bbWeight=2, gcVars=00000000000000040000000010048002 {V00 V05 V06 V09 V122}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref
; GC ptr vars -{V18} +{V09 V66}
- b G_M32652_IG23
+ b G_M32652_IG58
;; size=4 bbWeight=2 PerfScore 2.00
G_M32652_IG14: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
ldr x0, [x23, #0x38]
@@ -386,7 +386,7 @@ G_M32652_IG17: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=10
ldr w4, [x4, #0x08]
; gcrRegs -[x4]
cmp w1, w4
- bne G_M32652_IG25
+ bne G_M32652_IG28
add w1, w1, #1
movz x4, #0xD1FFAB1E // code for System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]:Grow(int):this
movk x4, #0xD1FFAB1E LSL #16
@@ -409,7 +409,7 @@ G_M32652_IG18: ; bbWeight=8, gcrefRegs=580009 {x0 x3 x19 x20 x22}, byrefR
ldr w15, [x0, #0x14]
ldr w12, [x14, #0x08]
cmp w15, w12
- bhs G_M32652_IG27
+ bhs G_M32652_IG29
ubfiz x15, x15, #4, #32
add x15, x15, #16
add x4, x14, x15
@@ -457,41 +457,64 @@ G_M32652_IG21: ; bbWeight=64, gcrefRegs=580001 {x0 x19 x20 x22}, byrefReg
cbz w1, G_M32652_IG22
ldr w3, [x0, #0x18]
cmp w3, #0
- bgt G_M32652_IG28
+ bgt G_M32652_IG31
;; size=20 bbWeight=64 PerfScore 480.00
G_M32652_IG22: ; bbWeight=8, gcVars=00000000000000040000000010048002 {V00 V05 V06 V09 V122}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref, isz
; GC ptr vars -{V123}
ldr w1, [fp, #0xDC] // [V11 loc6]
- cbnz w1, G_M32652_IG55
+ cbz w1, G_M32652_IG58
;; size=8 bbWeight=8 PerfScore 24.00
-G_M32652_IG23: ; bbWeight=16, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M32652_IG23: ; bbWeight=2, gcVars=00000000000000040000000010008002 {V00 V05 V06 V09}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x0, [fp, #0x68] // [V09 loc4]
- ; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E // code for <unknown method>
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #1 LSL #32
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- cbnz w0, G_M32652_IG14
- ;; size=28 bbWeight=16 PerfScore 136.00
-G_M32652_IG24: ; bbWeight=2, gcVars=00000000000000040000000010008002 {V00 V05 V06 V09}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref
; GC ptr vars -{V122}
+ ldr w1, [fp, #0x8C] // [V125 cse26]
+ mov w11, wzr
+ cmp w26, #0
+ ble G_M32652_IG63
+ cmp w1, w26
+ ccmp w28, w26, nc, ge
+ blt G_M32652_IG60
+ ;; size=28 bbWeight=2 PerfScore 12.00
+G_M32652_IG24: ; bbWeight=15.84, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+ add x14, x19, #16
+ ; byrRegs +[x14]
+ ldr x15, [x14, w11, UXTW #3]
+ ; gcrRegs +[x15]
+ cbz x15, G_M32652_IG26
+ ;; size=12 bbWeight=15.84 PerfScore 71.28
+G_M32652_IG25: ; bbWeight=7.92, gcrefRegs=588000 {x15 x19 x20 x22}, byrefRegs=1000000 {x24}, byref
+ ; byrRegs -[x14]
+ ubfiz x14, x11, #4, #32
+ add x14, x14, #16
+ add x14, x20, x14
+ ; byrRegs +[x14]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15]
+ ; byrRegs -[x14]
+ ;; size=16 bbWeight=7.92 PerfScore 23.76
+G_M32652_IG26: ; bbWeight=15.84, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+ add w11, w11, #1
+ cmp w11, w26
+ blt G_M32652_IG24
+ ;; size=12 bbWeight=15.84 PerfScore 31.68
+G_M32652_IG27: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=1000000 {x24}, byref
b G_M32652_IG63
;; size=4 bbWeight=2 PerfScore 2.00
-G_M32652_IG25: ; bbWeight=4, gcVars=00000000000001040000000010048002 {V00 V05 V06 V09 V63 V122}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref
+G_M32652_IG28: ; bbWeight=4, gcVars=00000000000001040000000010048002 {V00 V05 V06 V09 V63 V122}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref
; gcrRegs +[x0]
; GC ptr vars +{V18 V63 V122}
ldr x3, [fp, #0x38] // [V63 tmp41]
; gcrRegs +[x3]
b G_M32652_IG18
;; size=8 bbWeight=4 PerfScore 12.00
-G_M32652_IG26: ; bbWeight=0, gcVars=00000000000000040000000010008002 {V00 V05 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32652_IG29: ; bbWeight=0, gcVars=00000000000000040000000010008002 {V00 V05 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x3 x19-x20 x22]
; byrRegs -[x24]
; GC ptr vars -{V18 V63 V122}
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M32652_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -500,11 +523,7 @@ G_M32652_IG26: ; bbWeight=0, gcVars=00000000000000040000000010008002 {V00
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M32652_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32652_IG28: ; bbWeight=32, gcVars=00000000000000040000000810048002 {V00 V05 V06 V09 V122 V123}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref, isz
+G_M32652_IG31: ; bbWeight=32, gcVars=00000000000000040000000810048002 {V00 V05 V06 V09 V122 V123}, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=1000000 {x24}, gcvars, byref, isz
; gcrRegs +[x0 x19-x20 x22]
; byrRegs +[x24]
; GC ptr vars +{V18 V122 V123}
@@ -518,17 +537,17 @@ G_M32652_IG28: ; bbWeight=32, gcVars=00000000000000040000000810048002 {V0
; gcrRegs +[x2]
mov w3, w1
cmp w3, w28
- bhs G_M32652_IG27
+ bhs G_M32652_IG29
ubfiz x0, x3, #4, #32
; gcrRegs -[x0]
add x4, x0, #16
str x4, [fp, #0xA8] // [V108 cse9]
ldr x0, [x20, x4]
; gcrRegs +[x0]
- cbnz x0, G_M32652_IG29
+ cbnz x0, G_M32652_IG32
ldr w5, [fp, #0x8C] // [V125 cse26]
cmp w3, w5
- bhs G_M32652_IG27
+ bhs G_M32652_IG29
add x0, x19, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -538,14 +557,14 @@ G_M32652_IG28: ; bbWeight=32, gcVars=00000000000000040000000810048002 {V0
; byrRegs -[x0]
ldr w3, [fp, #0xC4] // [V62 tmp40]
;; size=84 bbWeight=32 PerfScore 784.00
-G_M32652_IG29: ; bbWeight=32, gcrefRegs=580005 {x0 x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
- cbz x0, G_M32652_IG30
+G_M32652_IG32: ; bbWeight=32, gcrefRegs=580005 {x0 x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+ cbz x0, G_M32652_IG33
cmp x0, x2
ldr x0, [fp, #0x78] // [V05 loc0]
beq G_M32652_IG21
- b G_M32652_IG23
+ b G_M32652_IG58
;; size=20 bbWeight=32 PerfScore 176.00
-G_M32652_IG30: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M32652_IG33: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
; gcrRegs -[x0]
str w3, [fp, #0xC4] // [V62 tmp40]
ldr x0, [fp, #0x80] // [V00 this]
@@ -564,7 +583,7 @@ G_M32652_IG30: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefReg
str w0, [fp, #0x14] // [TEMP_01]
ldr w1, [fp, #0xC4] // [V62 tmp40]
cmp w1, w25
- bhs G_M32652_IG27
+ bhs G_M32652_IG29
ldr x2, [fp, #0x20] // [V122 cse23]
; byrRegs +[x2]
str w1, [fp, #0xC4] // [V62 tmp40]
@@ -582,7 +601,7 @@ G_M32652_IG30: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefReg
; gcr arg pop 0
ldr w1, [fp, #0x14] // [TEMP_01]
cmp w1, w0
- bne G_M32652_IG23
+ bne G_M32652_IG58
ldr w1, [fp, #0xC4] // [V62 tmp40]
ldr x4, [fp, #0x40] // [V61 tmp39]
; gcrRegs +[x4]
@@ -630,73 +649,73 @@ G_M32652_IG30: ; bbWeight=32, gcrefRegs=580004 {x2 x19 x20 x22}, byrefReg
str w3, [fp, #0xD8] // [V16 loc11]
mov w4, wzr
cmp w3, #0
- ble G_M32652_IG50
+ ble G_M32652_IG53
ldr x5, [fp, #0x58] // [V15 loc10]
; gcrRegs +[x5]
- cbz x5, G_M32652_IG41
+ cbz x5, G_M32652_IG44
ldr w0, [x5, #0x08]
cmp w0, w3
- blt G_M32652_IG34
+ blt G_M32652_IG37
;; size=232 bbWeight=32 PerfScore 2848.00
-G_M32652_IG31: ; bbWeight=253.44, gcrefRegs=580024 {x2 x5 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M32652_IG34: ; bbWeight=253.44, gcrefRegs=580024 {x2 x5 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
mov w0, w4
lsl x1, x0, #4
add x1, x1, #16
add x1, x5, x1
; byrRegs +[x1]
ldr w6, [x1, #0x08]
- tbz w6, #31, G_M32652_IG35
+ tbz w6, #31, G_M32652_IG38
;; size=24 bbWeight=253.44 PerfScore 1647.36
-G_M32652_IG32: ; bbWeight=126.72, gcrefRegs=580004 {x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M32652_IG35: ; bbWeight=126.72, gcrefRegs=580004 {x2 x19 x20 x22}, byrefRegs=1000000 {x24}, byref, isz
; gcrRegs -[x5]
; byrRegs -[x1]
ldr w6, [x2, #0x10]
cmp w4, w6
...
+36 (+0.97%) : 19540.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
@@ -16,26 +16,26 @@
; V05 loc0 [V05,T35] ( 3, 5 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V06 loc1 [V06,T07] ( 6, 13.50) ubyte -> x25
; V07 loc2 [V07,T17] ( 5, 7.50) ubyte -> x26
-; V08 loc3 [V08 ] ( 13, 6.50) ref -> [fp+0x188] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V08 loc3 [V08 ] ( 13, 6.50) ref -> [fp+0x198] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V09 loc4 [V09,T25] ( 5, 6 ) ref -> x27 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V10 loc5 [V10,T30] ( 4, 5.50) ubyte -> [fp+0x184] spill-single-def
-; V11 loc6 [V11,T16] ( 5, 7.50) ref -> [fp+0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V12 loc7 [V12,T31] ( 6, 5 ) ubyte -> [fp+0x180]
-; V13 loc8 [V13,T20] ( 11, 6.50) ref -> [fp+0x30] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V14 loc9 [V14 ] ( 12, 18.50) struct (32) [fp+0x160] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V15 loc10 [V15,T64] ( 4, 2 ) ubyte -> x24
-; V16 loc11 [V16,T57] ( 5, 2.50) ref -> x26 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V17 loc12 [V17,T00] ( 17, 45.50) ref -> [fp+0x28] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V10 loc5 [V10,T30] ( 4, 5.50) ubyte -> [fp+0x194] spill-single-def
+; V11 loc6 [V11,T16] ( 5, 7.50) ref -> [fp+0x48] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V12 loc7 [V12,T31] ( 6, 5 ) ubyte -> [fp+0x190]
+; V13 loc8 [V13,T20] ( 11, 6.50) ref -> [fp+0x40] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
+; V14 loc9 [V14 ] ( 12, 18.50) struct (32) [fp+0x170] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V15 loc10 [V15,T64] ( 4, 2 ) ubyte -> [fp+0x16C]
+; V16 loc11 [V16,T57] ( 5, 2.50) ref -> [fp+0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V17 loc12 [V17,T00] ( 17, 45.50) ref -> [fp+0x30] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V18 loc13 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <Roslyn.Utilities.MultiDictionary`2+ValueSet[Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol]>
-; V19 loc14 [V19,T12] ( 3, 12 ) ubyte -> [fp+0x15C] spill-single-def
-; V20 loc15 [V20,T26] ( 3, 6 ) ref -> [fp+0x20] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V21 loc16 [V21 ] ( 2, 4.50) ref -> [fp+0x150] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V19 loc14 [V19,T12] ( 3, 12 ) ubyte -> [fp+0x168] spill-single-def
+; V20 loc15 [V20,T26] ( 3, 6 ) ref -> [fp+0x28] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V21 loc16 [V21 ] ( 2, 4.50) ref -> [fp+0x160] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V22 loc17 [V22,T38] ( 3, 4.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V23 loc18 [V23 ] ( 3, 4.50) ref -> [fp+0x148] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V24 loc19 [V24 ] ( 2, 4 ) ref -> [fp+0x140] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V23 loc18 [V23 ] ( 3, 4.50) ref -> [fp+0x158] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V24 loc19 [V24 ] ( 2, 4 ) ref -> [fp+0x150] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V25 loc20 [V25,T89] ( 3, 1.50) ubyte -> x27
-; V26 loc21 [V26 ] ( 6, 3 ) struct (32) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V27 loc22 [V27,T58] ( 5, 2.50) ref -> x22 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V26 loc21 [V26 ] ( 6, 3 ) struct (32) [fp+0x130] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V27 loc22 [V27,T58] ( 5, 2.50) ref -> x25 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V28 loc23 [V28,T90] ( 3, 1.50) int -> x28 single-def
;* V29 loc24 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
;* V30 loc25 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
@@ -46,16 +46,16 @@
; V35 tmp4 [V35,T14] ( 3, 8 ) int -> registers
; V36 tmp5 [V36,T15] ( 2, 8 ) ref -> x0 "CASTCLASS eval op1"
; V37 tmp6 [V37,T05] ( 5, 15 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V38 tmp7 [V38,T43] ( 3, 3 ) ref -> x25 class-hnd exact "dup spill" <System.Object[]>
+; V38 tmp7 [V38,T43] ( 3, 3 ) ref -> x23 class-hnd exact "dup spill" <System.Object[]>
; V39 tmp8 [V39,T70] ( 2, 2 ) ref -> x20 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.Location>
;* V40 tmp9 [V40 ] ( 0, 0 ) ref -> zero-ref single-def
;* V41 tmp10 [V41 ] ( 0, 0 ) ref -> zero-ref
-; V42 tmp11 [V42,T84] ( 3, 1.50) ref -> x22
-; V43 tmp12 [V43,T82] ( 2, 2 ) struct (32) [fp+0x100] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V44 tmp13 [V44,T91] ( 3, 1.50) struct (32) [fp+0xE0] do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V42 tmp11 [V42,T84] ( 3, 1.50) ref -> x25
+; V43 tmp12 [V43,T82] ( 2, 2 ) struct (32) [fp+0x110] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V44 tmp13 [V44,T91] ( 3, 1.50) struct (32) [fp+0xF0] do-not-enreg[S] must-init <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
;* V45 tmp14 [V45 ] ( 0, 0 ) ref -> zero-ref
;* V46 tmp15 [V46 ] ( 0, 0 ) ref -> zero-ref single-def
-; V47 tmp16 [V47,T85] ( 3, 1.50) ref -> x22
+; V47 tmp16 [V47,T85] ( 3, 1.50) ref -> x23
; V48 tmp17 [V48,T44] ( 3, 3 ) ref -> x0 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
;* V49 tmp18 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
;* V50 tmp19 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
@@ -67,7 +67,7 @@
; V56 tmp25 [V56,T45] ( 3, 3 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSharpRequiredLanguageVersion>
; V57 tmp26 [V57,T32] ( 5, 5 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Object[]>
; V58 tmp27 [V58,T73] ( 2, 2 ) ref -> x27 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Location>
-; V59 tmp28 [V59,T74] ( 2, 2 ) ref -> [fp+0x18] class-hnd spill-single-def "bubbling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V59 tmp28 [V59,T74] ( 2, 2 ) ref -> [fp+0x20] class-hnd spill-single-def "bubbling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbol>
; V60 tmp29 [V60,T60] ( 3, 2.25) long -> x1 "fgMakeTemp is creating a new local variable"
; V61 tmp30 [V61,T59] ( 2, 2 ) ref -> x0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
;* V62 tmp31 [V62 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
@@ -79,27 +79,27 @@
;* V68 tmp37 [V68 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
; V69 tmp38 [V69,T61] ( 3, 2.25) long -> x3 "fgMakeTemp is creating a new local variable"
; V70 tmp39 [V70,T42] ( 4, 3.25) ref -> x0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V71 tmp40 [V71,T28] ( 2, 8 ) int -> x0 "Inline return value spill temp"
+; V71 tmp40 [V71,T28] ( 2, 4 ) int -> x0 "Inline return value spill temp"
;* V72 tmp41 [V72 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
;* V73 tmp42 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V74 tmp43 [V74,T83] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V75 tmp44 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
; V76 tmp45 [V76,T46] ( 3, 3 ) ref -> x19 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
;* V77 tmp46 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V78 tmp47 [V78,T47] ( 3, 3 ) ref -> x23 class-hnd "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
+; V78 tmp47 [V78,T47] ( 3, 3 ) ref -> x21 class-hnd "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
;* V79 tmp48 [V79 ] ( 0, 0 ) ref -> zero-ref
-; V80 tmp49 [V80,T21] ( 6, 6 ) ref -> x21 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
+; V80 tmp49 [V80,T21] ( 6, 6 ) ref -> x23 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
;* V81 tmp50 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
-; V82 tmp51 [V82,T48] ( 3, 3 ) ref -> x24 class-hnd "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
+; V82 tmp51 [V82,T48] ( 3, 3 ) ref -> x19 class-hnd "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
;* V83 tmp52 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V84 tmp53 [V84,T09] ( 3, 12 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]]>
;* V85 tmp54 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V86 tmp55 [V86,T10] ( 3, 12 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]]>
;* V87 tmp56 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V88 tmp57 [V88,T03] ( 5, 16 ) ref -> [fp+0x10] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V88 tmp57 [V88,T03] ( 5, 16 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V89 tmp58 [V89,T04] ( 4, 16 ) ref -> x0 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V90 tmp59 [V90 ] ( 4, 8 ) struct (24) [fp+0xC8] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V91 tmp60 [V91,T55] ( 3, 3 ) struct (32) [fp+0xA8] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V90 tmp59 [V90 ] ( 4, 8 ) struct (24) [fp+0xD8] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V91 tmp60 [V91,T55] ( 3, 3 ) struct (32) [fp+0xB8] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
; V92 tmp61 [V92,T76] ( 2, 2 ) ref -> x3 class-hnd single-def "dup spill" <<unknown class>>
;* V93 tmp62 [V93 ] ( 0, 0 ) ref -> zero-ref single-def
;* V94 tmp63 [V94 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
@@ -110,25 +110,25 @@
;* V99 tmp68 [V99 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
;* V100 tmp69 [V100 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
; V101 tmp70 [V101,T78] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V102 tmp71 [V102 ] ( 1, 0.50) ubyte -> [fp+0xA0] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V102 tmp71 [V102 ] ( 1, 0.50) ubyte -> [fp+0xB0] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V103 tmp72 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
; V104 tmp73 [V104,T49] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
;* V105 tmp74 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V106 tmp75 [V106,T50] ( 3, 3 ) ref -> x22 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
+; V106 tmp75 [V106,T50] ( 3, 3 ) ref -> x23 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
;* V107 tmp76 [V107 ] ( 0, 0 ) ref -> zero-ref single-def
; V108 tmp77 [V108,T22] ( 6, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
;* V109 tmp78 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
-; V110 tmp79 [V110,T51] ( 3, 3 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
+; V110 tmp79 [V110,T51] ( 3, 3 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
;* V111 tmp80 [V111 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V112 tmp81 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V113 tmp82 [V113,T52] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
+; V113 tmp82 [V113,T52] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
;* V114 tmp83 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
; V115 tmp84 [V115,T53] ( 3, 3 ) ref -> x25 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag>
;* V116 tmp85 [V116 ] ( 0, 0 ) ref -> zero-ref single-def
; V117 tmp86 [V117,T23] ( 6, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
;* V118 tmp87 [V118 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
-; V119 tmp88 [V119,T54] ( 3, 3 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
-; V120 tmp89 [V120,T56] ( 3, 3 ) struct (32) [fp+0x80] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V119 tmp88 [V119,T54] ( 3, 3 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
+; V120 tmp89 [V120,T56] ( 3, 3 ) struct (32) [fp+0x90] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
; V121 tmp90 [V121,T79] ( 2, 2 ) ref -> x3 class-hnd single-def "dup spill" <<unknown class>>
;* V122 tmp91 [V122 ] ( 0, 0 ) ref -> zero-ref single-def
;* V123 tmp92 [V123 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
@@ -145,16 +145,16 @@
;* V134 tmp103 [V134 ] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP
;* V135 tmp104 [V135 ] ( 0, 0 ) int -> zero-ref "field V30.value (fldOffset=0x4)" P-INDEP
;* V136 tmp105 [V136,T98] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.hasValue (fldOffset=0x0)" P-INDEP
-; V137 tmp106 [V137,T97] ( 2, 1 ) int -> x22 single-def "field V50.value (fldOffset=0x4)" P-INDEP
+; V137 tmp106 [V137,T97] ( 2, 1 ) int -> x23 single-def "field V50.value (fldOffset=0x4)" P-INDEP
; V138 tmp107 [V138,T92] ( 3, 1.50) ubyte -> x1 "field V51.hasValue (fldOffset=0x0)" P-INDEP
-; V139 tmp108 [V139,T65] ( 4, 2 ) int -> x22 "field V51.value (fldOffset=0x4)" P-INDEP
-; V140 tmp109 [V140 ] ( 4, 8 ) ref -> [fp+0xC8] do-not-enreg[X] addr-exposed "field V90.DiagnosticInfo (fldOffset=0x0)" P-DEP
-; V141 tmp110 [V141 ] ( 4, 8 ) ref -> [fp+0xD0] do-not-enreg[X] addr-exposed "field V90.PrimaryDependency (fldOffset=0x8)" P-DEP
-; V142 tmp111 [V142 ] ( 4, 8 ) ref -> [fp+0xD8] do-not-enreg[X] addr-exposed "field V90.SecondaryDependencies (fldOffset=0x10)" P-DEP
+; V139 tmp108 [V139,T65] ( 4, 2 ) int -> x23 "field V51.value (fldOffset=0x4)" P-INDEP
+; V140 tmp109 [V140 ] ( 4, 8 ) ref -> [fp+0xD8] do-not-enreg[X] addr-exposed "field V90.DiagnosticInfo (fldOffset=0x0)" P-DEP
+; V141 tmp110 [V141 ] ( 4, 8 ) ref -> [fp+0xE0] do-not-enreg[X] addr-exposed "field V90.PrimaryDependency (fldOffset=0x8)" P-DEP
+; V142 tmp111 [V142 ] ( 4, 8 ) ref -> [fp+0xE8] do-not-enreg[X] addr-exposed "field V90.SecondaryDependencies (fldOffset=0x10)" P-DEP
; V143 tmp112 [V143,T86] ( 3, 1.50) ref -> x3 "V33.[016..024)"
; V144 tmp113 [V144,T66] ( 4, 2 ) ubyte -> x4 "V33.[025..026)"
-; V145 tmp114 [V145,T87] ( 3, 1.50) ref -> x24 "V43.[016..024)"
-; V146 tmp115 [V146,T93] ( 3, 1.50) ubyte -> x25 "V43.[025..026)"
+; V145 tmp114 [V145,T87] ( 3, 1.50) ref -> x23 "V43.[016..024)"
+; V146 tmp115 [V146,T93] ( 3, 1.50) ubyte -> x24 "V43.[025..026)"
;* V147 tmp116 [V147 ] ( 0, 0 ) ref -> zero-ref single-def "V62.[016..024)"
;* V148 tmp117 [V148 ] ( 0, 0 ) ubyte -> zero-ref "V62.[025..026)"
; V149 tmp118 [V149,T95] ( 2, 1 ) ref -> x1 single-def "V99.[008..016)"
@@ -163,18 +163,18 @@
; V152 tmp121 [V152,T96] ( 2, 1 ) ref -> x1 single-def "V128.[008..016)"
; V153 tmp122 [V153,T67] ( 3, 2 ) ref -> x3 "V34.[016..024)"
; V154 tmp123 [V154,T69] ( 3, 2 ) ubyte -> x4 "V34.[025..026)"
-; V155 tmp124 [V155,T88] ( 3, 1.50) ref -> x24 "V44.[016..024)"
-; V156 tmp125 [V156,T94] ( 3, 1.50) ubyte -> x25 "V44.[025..026)"
+; V155 tmp124 [V155,T88] ( 3, 1.50) ref -> x23 "V44.[016..024)"
+; V156 tmp125 [V156,T94] ( 3, 1.50) ubyte -> x24 "V44.[025..026)"
; V157 tmp126 [V157,T11] ( 3, 12 ) ref -> x0 "argument with side effect"
-; V158 tmp127 [V158 ] ( 4, 16 ) struct (24) [fp+0x68] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V159 tmp128 [V159 ] ( 4, 4 ) struct (32) [fp+0x48] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]>
+; V158 tmp127 [V158 ] ( 4, 16 ) struct (24) [fp+0x78] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V159 tmp128 [V159 ] ( 4, 4 ) struct (32) [fp+0x58] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]>
; V160 tmp129 [V160,T81] ( 2, 2 ) ref -> x4 single-def "argument with side effect"
; V161 cse0 [V161,T36] ( 4, 4.50) long -> x28 "CSE - moderate"
-; V162 cse1 [V162,T29] ( 3, 8 ) int -> x0 "CSE - moderate"
-; V163 cse2 [V163,T41] ( 7, 3.50) long -> x23 "CSE - moderate"
-; V164 cse3 [V164,T37] ( 4, 4.50) long -> [fp+0x40] spill-single-def "CSE - moderate"
+; V162 cse1 [V162,T29] ( 3, 6 ) int -> x0 "CSE - moderate"
+; V163 cse2 [V163,T41] ( 7, 3.50) long -> x22 "CSE - moderate"
+; V164 cse3 [V164,T37] ( 4, 4.50) long -> [fp+0x50] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 384
+; Lcl frame size = 400
G_M7707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #0xD1FFAB1E]!
@@ -185,7 +185,7 @@ G_M7707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x27, x28, [sp, #0xD1FFAB1E]
mov fp, sp
movi v16.16b, #0
- add x9, fp, #136
+ add x9, fp, #152
add x10, fp, #0xD1FFAB1E
stp q16, q16, [x9, #-0x40]
stp q16, q16, [x9, #-0x20]
@@ -247,19 +247,19 @@ G_M7707_IG04: ; bbWeight=0.50, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, b
G_M7707_IG05: ; bbWeight=1, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref, isz
uxtb w1, w0
str w1, [fp, #0xD1FFAB1E] // [V10 loc5]
- str xzr, [fp, #0x38] // [V11 loc6]
+ str xzr, [fp, #0x48] // [V11 loc6]
; GC ptr vars +{V11}
str wzr, [fp, #0xD1FFAB1E] // [V12 loc7]
mov x0, x20
; gcrRegs +[x0]
ldr x4, [x20]
- str x4, [fp, #0x40] // [V164 cse3]
+ str x4, [fp, #0x50] // [V164 cse3]
ldr x5, [x4, #0x58]
ldr x5, [x5, #0x28]
blr x5
mov x2, x0
; gcrRegs +[x2]
- str x2, [fp, #0x30] // [V13 loc8]
+ str x2, [fp, #0x40] // [V13 loc8]
; GC ptr vars +{V13}
cbnz x2, G_M7707_IG07
;; size=52 bbWeight=1 PerfScore 17.50
@@ -285,7 +285,7 @@ G_M7707_IG07: ; bbWeight=0.50, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}
ldr wzr, [x0]
blr x3
; gcrRegs -[x0-x2]
- ldr x2, [fp, #0x30] // [V13 loc8]
+ ldr x2, [fp, #0x40] // [V13 loc8]
; gcrRegs +[x2]
;; size=44 bbWeight=0.50 PerfScore 9.00
G_M7707_IG08: ; bbWeight=0.50, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref, isz
@@ -314,7 +314,7 @@ G_M7707_IG10: ; bbWeight=0.50, gcrefRegs=9380001 {x0 x19 x20 x21 x24 x27}
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M7707_IG11: ; bbWeight=0.50, gcrefRegs=9380008 {x3 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x0]
- ldr x2, [fp, #0x30] // [V13 loc8]
+ ldr x2, [fp, #0x40] // [V13 loc8]
; gcrRegs +[x2]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M7707_IG12: ; bbWeight=1, gcrefRegs=938000C {x2 x3 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref
@@ -326,7 +326,7 @@ G_M7707_IG12: ; bbWeight=1, gcrefRegs=938000C {x2 x3 x19 x20 x21 x24 x27}
;; size=20 bbWeight=1 PerfScore 4.50
G_M7707_IG13: ; bbWeight=4, gcrefRegs=9380008 {x3 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x2]
- str x3, [fp, #0x28] // [V17 loc12]
+ str x3, [fp, #0x30] // [V17 loc12]
; GC ptr vars +{V17}
mov x0, x3
...
+4 (+1.56%) : 22693.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
@@ -38,7 +38,7 @@ G_M17353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M17353_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x20, x19
; gcrRegs +[x20]
- cbz x19, G_M17353_IG09
+ cbz x19, G_M17353_IG08
;; size=8 bbWeight=1 PerfScore 1.50
G_M17353_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
@@ -69,7 +69,7 @@ G_M17353_IG04: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x8, x0
- bne G_M17353_IG11
+ bne G_M17353_IG12
mov x21, x20
; gcrRegs +[x21]
add x8, fp, #16 // [V03 loc2]
@@ -103,27 +103,31 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=12 bbWeight=2 PerfScore 9.00
G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
+ b G_M17353_IG10
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M17353_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x21]
mov x0, x21
; gcrRegs +[x0]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x21]
- mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x20]
+G_M17353_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x21] +[x20]
mov x1, x20
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -131,7 +135,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
brk_unix #0
;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 256, prolog size 24, PerfScore 152.00, instruction count 64, allocated bytes for code 256 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 260, prolog size 24, PerfScore 152.50, instruction count 65, allocated bytes for code 260 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+1.96%) : 23625.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int
@@ -10,15 +10,15 @@
;
;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T03] ( 6, 10 ) ref -> x20 class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]>
-; V04 loc0 [V04 ] ( 8, 13.50) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
+; V04 loc0 [V04 ] ( 9, 14 ) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
; V05 loc1 [V05,T06] ( 5, 8.50) ref -> x23 ld-addr-op class-hnd <System.__Canon>
;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
; V07 loc3 [V07,T00] ( 6, 18.50) int -> x24
; V08 loc4 [V08,T04] ( 4, 12 ) ref -> x26 class-hnd <System.__Canon>
; V09 loc5 [V09,T09] ( 4, 8 ) int -> x0
-; V10 loc6 [V10,T02] ( 6, 12.50) int -> x24
+; V10 loc6 [V10,T01] ( 7, 17 ) int -> x24
; V11 loc7 [V11,T12] ( 3, 6 ) ref -> x25 class-hnd <System.__Canon>
; V12 loc8 [V12,T13] ( 3, 6 ) int -> x0
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -28,7 +28,7 @@
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp5 [V18,T11] ( 4, 4.50) ref -> x21 single-def "field V01.array (fldOffset=0x0)" P-INDEP
; V19 tmp6 [V19,T10] ( 6, 7.50) ubyte -> [fp+0x18] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp7 [V20,T05] ( 5, 9 ) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
+; V20 tmp7 [V20,T05] ( 6, 9.50) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP
; V23 cse0 [V23,T14] ( 2, 1 ) int -> x0 "CSE - moderate"
@@ -143,13 +143,15 @@ G_M52223_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
mov w24, wzr
- b G_M52223_IG16
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ldr w1, [fp, #0x1C] // [V20 tmp7]
+ cmp w24, w1
+ bge G_M52223_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w22
- bhs G_M52223_IG21
+ bhs G_M52223_IG20
add x25, x21, #16
; byrRegs +[x25]
ldr x25, [x25, w24, UXTW #3]
@@ -174,21 +176,19 @@ G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
; gcrRegs -[x0-x2 x25]
cbz w0, G_M52223_IG15
cmp w0, #3
- bne G_M52223_IG19
+ bne G_M52223_IG18
;; size=68 bbWeight=2 PerfScore 48.00
-G_M52223_IG15: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M52223_IG15: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M52223_IG16: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- ldr w1, [fp, #0x1C] // [V20 tmp7]
- cmp w24, w1
+ ldr w0, [fp, #0x1C] // [V20 tmp7]
+ cmp w24, w0
blt G_M52223_IG14
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M52223_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 16.00
+G_M52223_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21 x23]
ldr x0, [fp, #0x18] // [V04 loc0]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -196,10 +196,10 @@ G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG19: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -207,12 +207,12 @@ G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 408, prolog size 28, PerfScore 189.00, instruction count 102, allocated bytes for code 408 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 416, prolog size 28, PerfScore 191.25, instruction count 104, allocated bytes for code 416 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================
Unwind Info:
@@ -223,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 102 (0x00066) Actual length = 408 (0x000198)
+ Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.osx.arm64.checked.mch |
21 |
6 |
7 |
8 |
-228 |
+376 |
benchmarks.run_pgo.osx.arm64.checked.mch |
222 |
89 |
76 |
57 |
-1,512 |
+3,096 |
benchmarks.run_tiered.osx.arm64.checked.mch |
9 |
0 |
4 |
5 |
-0 |
+184 |
coreclr_tests.run.osx.arm64.checked.mch |
290 |
51 |
131 |
108 |
-376 |
+1,392 |
libraries.crossgen2.osx.arm64.checked.mch |
1 |
0 |
0 |
1 |
-0 |
+0 |
libraries.pmi.osx.arm64.checked.mch |
125 |
39 |
33 |
53 |
-448 |
+424 |
libraries_tests.run.osx.arm64.Release.mch |
890 |
447 |
207 |
236 |
-4,012 |
+2,064 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
218 |
62 |
59 |
97 |
-988 |
+1,176 |
realworld.run.osx.arm64.checked.mch |
23 |
6 |
11 |
6 |
-28 |
+160 |
|
1,799 |
700 |
528 |
571 |
-7,592 |
+8,872 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.osx.arm64.checked.mch |
24,861 |
5 |
24,856 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.osx.arm64.checked.mch |
84,163 |
48,254 |
35,909 |
13 (0.02%) |
13 (0.02%) |
benchmarks.run_tiered.osx.arm64.checked.mch |
48,057 |
37,339 |
10,718 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.osx.arm64.checked.mch |
584,881 |
356,502 |
228,379 |
7 (0.00%) |
7 (0.00%) |
libraries.crossgen2.osx.arm64.checked.mch |
1,881 |
0 |
1,881 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.osx.arm64.checked.mch |
316,291 |
18 |
316,273 |
3 (0.00%) |
3 (0.00%) |
libraries_tests.run.osx.arm64.Release.mch |
634,566 |
463,650 |
170,916 |
83 (0.01%) |
83 (0.01%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
303,144 |
21,597 |
281,547 |
2 (0.00%) |
2 (0.00%) |
realworld.run.osx.arm64.checked.mch |
31,542 |
3 |
31,539 |
1 (0.00%) |
1 (0.00%) |
|
2,029,386 |
927,368 |
1,102,018 |
109 (0.01%) |
109 (0.01%) |
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11185284 (overridden on cmd)
Total bytes of diff: 11185432 (overridden on cmd)
Total bytes of delta: 148 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 21 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34533064 (overridden on cmd)
Total bytes of diff: 34534648 (overridden on cmd)
Total bytes of delta: 1584 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 97 unchanged.
benchmarks.run_tiered.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15508464 (overridden on cmd)
Total bytes of diff: 15508648 (overridden on cmd)
Total bytes of delta: 184 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 9 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 483586020 (overridden on cmd)
Total bytes of diff: 483587036 (overridden on cmd)
Total bytes of delta: 1016 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 87 unchanged.
libraries.crossgen2.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 311684 (overridden on cmd)
Total bytes of diff: 311684 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
libraries.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80207064 (overridden on cmd)
Total bytes of diff: 80207040 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 71 unchanged.
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 313700576 (overridden on cmd)
Total bytes of diff: 313698628 (overridden on cmd)
Total bytes of delta: -1948 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 85 unchanged.
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 163153084 (overridden on cmd)
Total bytes of diff: 163153272 (overridden on cmd)
Total bytes of delta: 188 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 70 unchanged.
realworld.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15075948 (overridden on cmd)
Total bytes of diff: 15076080 (overridden on cmd)
Total bytes of delta: 132 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 23 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
windows arm64
Diffs are based on 2,070,850 contexts (937,853 MinOpts, 1,132,997 FullOpts).
MISSED contexts: 139 (0.01%)
Overall (-4,972 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
10,966,596 |
+140 |
benchmarks.run_pgo.windows.arm64.checked.mch |
46,609,220 |
-4,076 |
benchmarks.run_tiered.windows.arm64.checked.mch |
15,506,140 |
+140 |
coreclr_tests.run.windows.arm64.checked.mch |
496,298,628 |
+716 |
libraries.crossgen2.windows.arm64.checked.mch |
338,836 |
+0 |
libraries.pmi.windows.arm64.checked.mch |
79,834,280 |
+1,412 |
libraries_tests.run.windows.arm64.Release.mch |
326,696,628 |
-3,704 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
171,564,828 |
+284 |
realworld.run.windows.arm64.checked.mch |
15,891,320 |
+116 |
FullOpts (-4,972 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
10,966,060 |
+140 |
benchmarks.run_pgo.windows.arm64.checked.mch |
30,351,028 |
-4,076 |
benchmarks.run_tiered.windows.arm64.checked.mch |
4,328,392 |
+140 |
coreclr_tests.run.windows.arm64.checked.mch |
156,624,224 |
+716 |
libraries.crossgen2.windows.arm64.checked.mch |
338,836 |
+0 |
libraries.pmi.windows.arm64.checked.mch |
79,714,296 |
+1,412 |
libraries_tests.run.windows.arm64.Release.mch |
123,222,780 |
-3,704 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
158,411,116 |
+284 |
realworld.run.windows.arm64.checked.mch |
15,327,340 |
+116 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
-40 (-27.03%) : 10369.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-0.71%) : 15577.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)
@@ -8,19 +8,19 @@
; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T43] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
-; V01 arg1 [V01,T39] ( 5, 8 ) int -> x22 single-def
+; V00 this [V00,T44] ( 4, 7 ) ref -> x26 this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
+; V01 arg1 [V01,T40] ( 5, 8 ) int -> x22 single-def
; V02 arg2 [V02,T36] ( 6, 9 ) ref -> x21 class-hnd single-def <System.String>
-; V03 arg3 [V03,T40] ( 5, 8 ) long -> x23 single-def
-; V04 arg4 [V04,T41] ( 5, 8 ) int -> x24 single-def
-; V05 arg5 [V05,T42] ( 5, 8 ) int -> x25 single-def
+; V03 arg3 [V03,T41] ( 5, 8 ) long -> x23 single-def
+; V04 arg4 [V04,T42] ( 5, 8 ) int -> x24 single-def
+; V05 arg5 [V05,T43] ( 5, 8 ) int -> x25 single-def
; V06 arg6 [V06,T32] ( 7, 10 ) int -> x20 single-def
-; V07 arg7 [V07,T26] ( 12, 12 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]>
-; V08 loc0 [V08,T44] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]>
-; V09 loc1 [V09,T45] ( 5, 5 ) ubyte -> registers
-; V10 loc2 [V10,T16] ( 8, 22 ) int -> [fp+0x114]
-; V11 loc3 [V11,T17] ( 8, 22 ) int -> [fp+0x110]
-; V12 loc4 [V12,T53] ( 3, 3 ) int -> [fp+0x10C] spill-single-def
+; V07 arg7 [V07,T21] ( 12, 15 ) ref -> x19 class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]>
+; V08 loc0 [V08,T46] ( 6, 5 ) ref -> [fp+0x48] do-not-enreg[M] class-hnd EH-live <ubyte[]>
+; V09 loc1 [V09,T37] ( 5, 8 ) ubyte -> registers
+; V10 loc2 [V10,T15] ( 8, 25 ) int -> [fp+0x114]
+; V11 loc3 [V11,T16] ( 8, 25 ) int -> [fp+0x110]
+; V12 loc4 [V12,T45] ( 3, 6 ) int -> [fp+0x10C] spill-single-def
;* V13 loc5 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 loc6 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref
@@ -41,7 +41,7 @@
; V30 loc22 [V30,T34] ( 2, 9 ) ref -> [fp+0x30] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V31 loc23 [V31,T11] ( 5, 33 ) int -> [fp+0xB4]
; V32 loc24 [V32 ] ( 2, 16 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V33 loc25 [V33,T52] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
+; V33 loc25 [V33,T53] ( 3, 6 ) ref -> [fp+0x28] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
; V34 loc26 [V34,T35] ( 2, 9 ) ref -> x19 class-hnd exact single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V35 loc27 [V35,T12] ( 5, 33 ) int -> [fp+0x94]
;* V36 loc28 [V36 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
@@ -54,20 +54,20 @@
;* V43 tmp6 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
; V45 tmp8 [V45 ] ( 2, 16 ) int -> [fp+0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V46 tmp9 [V46,T48] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
+; V46 tmp9 [V46,T49] ( 2, 4 ) int -> [fp+0x84] spill-single-def "Inlining Arg"
;* V47 tmp10 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp11 [V48,T49] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
+; V48 tmp11 [V48,T50] ( 2, 4 ) int -> [fp+0x80] spill-single-def "Inlining Arg"
; V49 tmp12 [V49,T27] ( 2, 8 ) ubyte -> x3 "Inline return value spill temp"
; V50 tmp13 [V50,T28] ( 3, 12 ) ubyte -> x3 "Inline return value spill temp"
;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V52 tmp15 [V52,T15] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
-; V53 tmp16 [V53,T21] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
+; V52 tmp15 [V52,T17] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
+; V53 tmp16 [V53,T22] ( 4, 16 ) int -> [fp+0x7C] ld-addr-op "Inline ldloca(s) first use temp"
; V54 tmp17 [V54 ] ( 4, 16 ) byref -> [fp+0x70] must-init pinned "Inline stloc first use temp"
-; V55 tmp18 [V55,T37] ( 2, 8 ) long -> x2
+; V55 tmp18 [V55,T38] ( 2, 8 ) long -> x2
; V56 tmp19 [V56,T08] ( 2, 36 ) long -> [fp+0x68] spill-single-def "Inline stloc first use temp"
;* V57 tmp20 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V58 tmp21 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V59 tmp22 [V59,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp22 [V59,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp23 [V60 ] ( 2, 8 ) int -> [fp+0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V62 tmp25 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -77,22 +77,22 @@
; V66 tmp29 [V66 ] ( 2, 16 ) ref -> [fp+0xE8] do-not-enreg[X] addr-exposed "field V19.ParameterName (fldOffset=0x0)" P-DEP
; V67 tmp30 [V67 ] ( 2, 16 ) ref -> [fp+0xF0] do-not-enreg[X] addr-exposed "field V19.ParameterType (fldOffset=0x8)" P-DEP
; V68 tmp31 [V68 ] ( 2, 16 ) ref -> [fp+0xF8] do-not-enreg[X] addr-exposed "field V19.TypeInfo (fldOffset=0x10)" P-DEP
-; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
+; V69 tmp32 [V69,T24] ( 2, 16 ) ref -> x0 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref "field V23.ParameterType (fldOffset=0x8)" P-INDEP
-; V71 tmp34 [V71,T24] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
+; V71 tmp34 [V71,T25] ( 2, 16 ) ref -> x7 "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
; V72 tmp35 [V72 ] ( 2, 16 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V32.ParameterName (fldOffset=0x0)" P-DEP
; V73 tmp36 [V73 ] ( 2, 16 ) ref -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V32.ParameterType (fldOffset=0x8)" P-DEP
; V74 tmp37 [V74 ] ( 2, 16 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed "field V32.TypeInfo (fldOffset=0x10)" P-DEP
-; V75 tmp38 [V75,T22] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
+; V75 tmp38 [V75,T23] ( 3, 16 ) ref -> [fp+0x18] spill-single-def "field V36.ParameterName (fldOffset=0x0)" P-INDEP
;* V76 tmp39 [V76 ] ( 0, 0 ) ref -> zero-ref "field V36.ParameterType (fldOffset=0x8)" P-INDEP
; V77 tmp40 [V77,T19] ( 3, 20 ) ref -> x5 "field V36.TypeInfo (fldOffset=0x10)" P-INDEP
; V78 tmp41 [V78,T03] ( 3, 48 ) byref -> x1 "BlockOp address local"
-; V79 tmp42 [V79,T50] ( 2, 4 ) long -> x2 "Cast away GC"
-; V80 tmp43 [V80,T51] ( 2, 4 ) long -> x3 "Cast away GC"
-; V81 tmp44 [V81,T46] ( 2, 4 ) ref -> x7 "argument with side effect"
+; V79 tmp42 [V79,T51] ( 2, 4 ) long -> x1 "Cast away GC"
+; V80 tmp43 [V80,T52] ( 2, 4 ) long -> x3 "Cast away GC"
+; V81 tmp44 [V81,T47] ( 2, 4 ) ref -> x7 "argument with side effect"
; V82 tmp45 [V82,T04] ( 3, 48 ) byref -> x0 "BlockOp address local"
-; V83 tmp46 [V83,T25] ( 2, 16 ) long -> x2 "Cast away GC"
-; V84 tmp47 [V84,T47] ( 2, 16 ) ref -> x7 "argument with side effect"
+; V83 tmp46 [V83,T26] ( 2, 16 ) long -> x2 "Cast away GC"
+; V84 tmp47 [V84,T48] ( 2, 16 ) ref -> x7 "argument with side effect"
; V85 PSPSym [V85,T60] ( 1, 1 ) long -> [fp+0x118] do-not-enreg[V] "PSPSym"
; V86 cse0 [V86,T29] ( 3, 12 ) int -> [fp+0x58] spill-single-def "CSE - moderate"
; V87 cse1 [V87,T54] ( 3, 3 ) int -> x28 "CSE - moderate"
@@ -137,8 +137,8 @@ G_M27295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov x19, x7
; gcrRegs +[x19]
;; size=104 bbWeight=1 PerfScore 19.00
-G_M27295_IG02: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V33 V52}
+G_M27295_IG02: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V33 V53}
mov w27, wzr
;; size=4 bbWeight=1 PerfScore 0.50
G_M27295_IG03: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref, isz
@@ -184,10 +184,10 @@ G_M27295_IG04: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0
ldr w7, [x5, #0x08]
str w7, [fp, #0x50] // [V89 cse3]
cmp w7, #0
- ble G_M27295_IG10
+ ble G_M27295_IG11
;; size=28 bbWeight=1 PerfScore 7.50
-G_M27295_IG05: ; bbWeight=8, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V52}
+G_M27295_IG05: ; bbWeight=8, gcVars=0020000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V53}
mov w0, #24
mov x1, #16
str w6, [fp, #0xD1FFAB1E] // [V18 loc10]
@@ -212,70 +212,22 @@ G_M27295_IG07: ; bbWeight=8, isz, extend
blr x8
; gcrRegs -[x5]
; gcr arg pop 0
- cbz w0, G_M27295_IG11
- ldr w1, [fp, #0xE0] // [V20 loc12]
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- add w2, w2, w1
- ldr w1, [fp, #0xD1FFAB1E] // [V18 loc10]
- add w1, w1, #1
- ldr w3, [fp, #0x50] // [V89 cse3]
- cmp w3, w1
- mov w6, w1
- ldr x5, [fp, #0x40] // [V17 loc9]
- ; gcrRegs +[x5]
- bgt G_M27295_IG09
- ;; size=72 bbWeight=8 PerfScore 164.00
-G_M27295_IG08: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
+ cbnz w0, G_M27295_IG12
+ ;; size=32 bbWeight=8 PerfScore 60.00
+G_M27295_IG08: ; bbWeight=1, gcVars=0020000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- mov w1, #6
- cmp w20, #0
- csel w1, wzr, w1, eq
- ldr w4, [fp, #0xD1FFAB1E] // [V11 loc3]
- add w0, w4, #5
- str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
- cmp w4, #0
- csel w0, wzr, w0, eq
- str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- add w0, w2, w0
- add w5, w0, w1
- str w5, [fp, #0xD1FFAB1E] // [V16 loc8]
- sxtw x1, w5
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWARR_1_VC
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- str x0, [fp, #0x48] // [V08 loc0]
- ; GC ptr vars +{V08}
- b G_M27295_IG15
- ;; size=76 bbWeight=1 PerfScore 14.00
-G_M27295_IG09: ; bbWeight=4, gcVars=0010000080000000 {V17 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x5]
- ; GC ptr vars -{V08} +{V17 V31}
- str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG05
- ;; size=8 bbWeight=4 PerfScore 8.00
-G_M27295_IG10: ; bbWeight=0.50, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
- ; GC ptr vars -{V17 V31}
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M27295_IG11: ; bbWeight=1, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref
mov w27, #1
ldr w2, [fp, #0xD1FFAB1E] // [V12 loc4]
str w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- mov w4, #4
- str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
+ mov w1, #4
+ str w1, [fp, #0xD1FFAB1E] // [V11 loc3]
mov x5, x19
; gcrRegs +[x5]
str x5, [fp, #0x38] // [V21 loc13]
; GC ptr vars +{V21}
mov w6, wzr
;; size=32 bbWeight=1 PerfScore 7.00
-G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27295_IG09: ; bbWeight=8, gcVars=0020000200000000 {V21 V33}, gcrefRegs=4280020 {x5 x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref, isz
mov w1, #24
mov x0, #16
str w6, [fp, #0xDC] // [V22 loc14]
@@ -301,30 +253,11 @@ G_M27295_IG12: ; bbWeight=8, gcVars=0010000200000000 {V21 V33}, gcrefRegs
blr x7
; gcrRegs -[x0 x5]
; gcr arg pop 0
- cbz w0, G_M27295_IG14
- ldr w0, [fp, #0x88] // [V45 tmp8]
- ldr w1, [fp, #0xD8] // [V24 loc16]
- add w1, w1, w0
- ldr w2, [fp, #0xD1FFAB1E] // [V11 loc3]
- add w2, w2, w1
- ldr w0, [fp, #0xDC] // [V22 loc14]
- add w0, w0, #1
- ldr w1, [fp, #0x50] // [V89 cse3]
- cmp w1, w0
- str w2, [fp, #0xD1FFAB1E] // [V11 loc3]
- mov w6, w0
- ldr x5, [fp, #0x38] // [V21 loc13]
- ; gcrRegs +[x5]
- bgt G_M27295_IG12
- ;; size=128 bbWeight=8 PerfScore 344.00
-G_M27295_IG13: ; bbWeight=1, gcVars=0010000000000000 {V33}, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5]
- ; GC ptr vars -{V21 V33}
- ldr w2, [fp, #0xD1FFAB1E] // [V10 loc2]
- b G_M27295_IG08
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M27295_IG14
+ ;; size=76 bbWeight=8 PerfScore 212.00
+G_M27295_IG10: ; bbWeight=4, gcVars=0020000000000000 {V33}, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
+ ; GC ptr vars -{V21 V33}
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -337,47 +270,112 @@ G_M27295_IG14: ; bbWeight=1, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000
ldr x19, [x0]
; gcrRegs +[x19]
ldr w27, [fp, #0xD1FFAB1E] // [V12 loc4]
- str wzr, [fp, #0xD1FFAB1E] // [V11 loc3]
- mov w2, wzr
- mov w0, w2
- mov w2, w27
+ mov w4, wzr
+ mov w0, wzr
+ str w27, [fp, #0xD1FFAB1E] // [V10 loc2]
+ str w4, [fp, #0xD1FFAB1E] // [V11 loc3]
mov w27, w0
- b G_M27295_IG08
- ;; size=64 bbWeight=1 PerfScore 13.50
...
-4 (-0.15%) : 4831.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -23,24 +23,24 @@
; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1
;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt"
;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg"
;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -67,13 +67,13 @@
;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
-; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg"
-; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
+; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]>
; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg"
; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]>
@@ -90,14 +90,14 @@
;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
-; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
+; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP
;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
@@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x40] // [V100 tmp78]
cmp w1, w2
bhi G_M4730_IG74
- cmp w1, #0
- cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w3, [x1, #0x08]
cmp w3, w0
bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x27]
add x1, x1, #16
@@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {},
beq G_M4730_IG67
b G_M4730_IG27
;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89}
str w1, [fp, #0x60] // [V10 loc6]
mov w28, w2
@@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; GC ptr vars +{V89}
ldr w28, [fp, #0x68] // [V07 loc3]
;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3]
; GC ptr vars -{V57}
cmp w25, w26
@@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}
; GC ptr vars +{V13}
cbz x24, G_M4730_IG39
;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26]
ldr w26, [fp, #0x44] // [V90 tmp68]
cbz w26, G_M4730_IG32
@@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
str w0, [x19, #0x18]
b G_M4730_IG41
;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27]
; GC ptr vars +{V13 V16 V89}
b G_M4730_IG42
@@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; gcrRegs -[x26]
b G_M4730_IG47
;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26]
; GC ptr vars +{V13 V16 V89}
ldr x2, [fp, #0x30] // [V13 loc9]
@@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcr arg pop 0
b G_M4730_IG06
;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27]
; GC ptr vars +{V13 V16 V89}
ldr x1, [fp, #0x30] // [V13 loc9]
@@ -1216,7 +1215,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2704, prolog size 48, PerfScore 6977.50, instruction count 676, allocated bytes for code 2704 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2700, prolog size 48, PerfScore 6975.50, instruction count 675, allocated bytes for code 2700 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1227,7 +1226,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 676 (0x002a4) Actual length = 2704 (0x000a90)
+ Function Length : 675 (0x002a3) Actual length = 2700 (0x000a8c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.61%) : 4668.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
@@ -76,7 +76,7 @@ G_M60940_IG02: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=800
G_M60940_IG03: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
cbnz x0, G_M60940_IG04
str xzr, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=12 bbWeight=1 PerfScore 3.00
G_M60940_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -128,7 +128,7 @@ G_M60940_IG05: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {},
ldr x0, [fp, #0x38] // [V07 loc3]
; gcrRegs +[x0]
str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=52 bbWeight=1 PerfScore 14.00
G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -144,7 +144,7 @@ G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w2, wzr
mov w3, wzr
cmp w1, #0
- ble G_M60940_IG11
+ ble G_M60940_IG13
;; size=44 bbWeight=1 PerfScore 13.00
G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w4, #24
@@ -159,21 +159,28 @@ G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr w2, [fp, #0x28] // [V10 loc6+0x08]
; byrRegs -[x2]
cmp w2, #17
- beq G_M60940_IG10
+ bne G_M60940_IG10
+ ;; size=44 bbWeight=8 PerfScore 152.00
+G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M60940_IG12
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ b G_M60940_IG13
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M60940_IG10: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
add w2, w3, #1
sxtw w3, w2
cmp w1, w3
bgt G_M60940_IG07
- ;; size=60 bbWeight=8 PerfScore 172.00
-G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=8 PerfScore 20.00
+G_M60940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M60940_IG11
+ b G_M60940_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- nop
- b G_M60940_IG11
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, fp, #32 // [V10 loc6]
ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
@@ -184,9 +191,9 @@ G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcr arg pop 0
str x0, [fp, #0x10] // [V05 loc1]
- b G_M60940_IG12
+ b G_M60940_IG14
;; size=36 bbWeight=1 PerfScore 10.00
-G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG13: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; GC ptr vars -{V05}
ldr x0, [fp, #0x18] // [V04 loc0]
@@ -199,36 +206,36 @@ G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=000
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M60940_IG16
+ b G_M60940_IG18
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG12: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04 V05}
ldr x0, [fp, #0x48] // [V34 PSPSym]
- bl G_M60940_IG27
+ bl G_M60940_IG29
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60940_IG13: ; bbWeight=1, nogc, extend
+G_M60940_IG15: ; bbWeight=1, nogc, extend
nop
;; size=4 bbWeight=1 PerfScore 0.50
-G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05}
ldr x0, [fp, #0x10] // [V05 loc1]
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M60940_IG15: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x50]
- ldp fp, lr, [sp], #0x60
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp], #0x60
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M60940_IG19: ; bbWeight=1, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x50]
+ ldp fp, lr, [sp], #0x60
+ ret lr
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M60940_IG20: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
@@ -236,7 +243,7 @@ G_M60940_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
str x1, [sp, #0x18]
sub fp, x1, #96
;; size=20 bbWeight=0 PerfScore 0.00
-G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG21: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05}
mov x1, x0
; gcrRegs +[x1]
@@ -249,12 +256,12 @@ G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- cbnz x19, G_M60940_IG20
+ cbnz x19, G_M60940_IG22
mov w0, wzr
; gcrRegs -[x0]
- b G_M60940_IG23
+ b G_M60940_IG25
;; size=36 bbWeight=0 PerfScore 0.00
-G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -263,7 +270,7 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M60940_IG21
+ cbnz x0, G_M60940_IG23
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -276,44 +283,44 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x0, #0
cset x0, ne
; gcrRegs -[x0]
- b G_M60940_IG22
+ b G_M60940_IG24
;; size=56 bbWeight=0 PerfScore 0.00
-G_M60940_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0
cset x0, ne
;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #96
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M60940_IG25: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG27: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
adr x0, [G_M60940_IG09]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60940_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M60940_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M60940_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #96
str x3, [sp, #0x18]
;; size=16 bbWeight=1 PerfScore 3.50
-G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG30: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
- cbz x0, G_M60940_IG29
+ cbz x0, G_M60940_IG31
movz x1, #0xD1FFAB1E // code for System.Reflection.PortableExecutable.PEReader:Dispose():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -323,7 +330,7 @@ G_M60940_IG28: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 8.50
-G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
@@ -331,7 +338,7 @@ G_M60940_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
RWD00 dq 00007FF8BC13D218h, 00007FF8BE3D3B70h
-Total bytes of code 652, prolog size 32, PerfScore 283.00, instruction count 163, allocated bytes for code 652 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
+Total bytes of code 656, prolog size 32, PerfScore 284.00, instruction count 164, allocated bytes for code 656 (MethodHash=a4c811f3) for method System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
; ============================================================
Unwind Info:
@@ -342,7 +349,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -410,7 +417,7 @@ Unwind Info:
*************** EH table for System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider
2 EH table entries, 1 duplicate clauses, 1 cloned finallys, 4 total EH entries reported to VM
-EH#0: try [G_M60940_IG10..G_M60940_IG11) handled by [G_M60940_IG24..G_M60940_IG27) filter at [G_M60940_IG18..G_M60940_IG24)
...
+16 (+0.67%) : 2830.dasm - System.Text.Json.Tests.Perf_Deep:WriteDeepUtf16():this (FullOpts)
@@ -12,7 +12,7 @@
; V01 loc0 [V01,T00] ( 69,116.50) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Text.Json.Utf8JsonWriter>
; V02 loc1 [V02 ] ( 9, 7 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init ld-addr-op <System.Text.Json.JsonWriterOptions>
; V03 loc2 [V03,T09] ( 6, 21 ) int -> x21
-; V04 loc3 [V04,T02] ( 8, 29 ) int -> x24
+; V04 loc3 [V04,T02] ( 8, 29 ) int -> x21
; V05 loc4 [V05,T18] ( 4, 13 ) int -> x19
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T42] ( 3, 6 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.Buffers.ArrayBufferWriter`1[ubyte]>
@@ -86,8 +86,8 @@
;* V75 tmp69 [V75 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V76 tmp70 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V77 tmp71 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x21 "Inlining Arg"
-; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V78 tmp72 [V78,T35] ( 2, 8 ) int -> x22 "Inlining Arg"
+; V79 tmp73 [V79,T31] ( 2, 8 ) byref -> x26 "Inlining Arg"
;* V80 tmp74 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V81 tmp75 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V82 tmp76 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -100,7 +100,7 @@
; V89 tmp83 [V89,T33] ( 2, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
; V90 tmp84 [V90,T24] ( 5, 10 ) ref -> x0
;* V91 tmp85 [V91 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x22 "Inline stloc first use temp"
+; V92 tmp86 [V92,T29] ( 3, 6 ) byref -> x27 "Inline stloc first use temp"
;* V93 tmp87 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V94 tmp88 [V94 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V95 tmp89 [V95,T14] ( 2, 16 ) int -> x1 "Inlining Arg"
@@ -145,10 +145,10 @@
;* V134 tmp128 [V134 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP
;* V135 tmp129 [V135 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
;* V136 tmp130 [V136 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x25 "field V75._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x21 "field V75._length (fldOffset=0x8)" P-INDEP
-; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x25 "field V76._reference (fldOffset=0x0)" P-INDEP
-; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x21 "field V76._length (fldOffset=0x8)" P-INDEP
+; V137 tmp131 [V137,T25] ( 5, 10 ) byref -> x26 "field V75._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp132 [V138,T15] ( 8, 14 ) int -> x22 "field V75._length (fldOffset=0x8)" P-INDEP
+; V139 tmp133 [V139,T49] ( 2, 4 ) byref -> x26 "field V76._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp134 [V140,T50] ( 2, 4 ) int -> x22 "field V76._length (fldOffset=0x8)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
;* V143 tmp137 [V143 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP
@@ -159,7 +159,7 @@
; V148 tmp142 [V148,T37] ( 2, 8 ) long -> x24 "Cast away GC"
; V149 tmp143 [V149,T51] ( 2, 4 ) long -> x25 "Cast away GC"
; V150 tmp144 [V150,T06] ( 3, 24 ) ref -> x0 "arr expr"
-; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x22 "Cast away GC"
+; V151 tmp145 [V151,T38] ( 2, 8 ) long -> x27 "Cast away GC"
; V152 tmp146 [V152,T07] ( 3, 24 ) ref -> x1 "arr expr"
; V153 PSPSym [V153,T61] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym"
; V154 cse0 [V154,T17] ( 4, 14 ) int -> x0 "CSE - moderate"
@@ -170,21 +170,22 @@
; Lcl frame size = 72
G_M54203_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0xA0]!
stp x19, x20, [sp, #0x58]
stp x21, x22, [sp, #0x68]
stp x23, x24, [sp, #0x78]
- str x25, [sp, #0x88]
+ stp x25, x26, [sp, #0x88]
+ str x27, [sp, #0x98]
mov fp, sp
add x9, fp, #32
movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]
- add x1, sp, #144
+ add x1, sp, #160
str x1, [fp, #0x50] // [V153 PSPSym]
mov x19, x0
; gcrRegs +[x19]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M54203_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08]
; gcrRegs +[x20]
@@ -485,18 +486,18 @@ G_M54203_IG28: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
str w0, [x20, #0x28]
mov w0, #3
strb w0, [x20, #0x36]
- mov w24, wzr
+ mov w21, wzr
;; size=32 bbWeight=1 PerfScore 8.00
G_M54203_IG29: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x28]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
- cmp w24, w1
+ cmp w21, w1
bhs G_M54203_IG47
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x22, [x0, w24, UXTW #3]
+ ldr x22, [x0, w21, UXTW #3]
; gcrRegs +[x22]
cbnz x22, G_M54203_IG61
;; size=28 bbWeight=4 PerfScore 48.00
@@ -517,12 +518,12 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
- cmp w24, w0
+ cmp w21, w0
bhs G_M54203_IG47
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
- ldr w1, [x1, w24, UXTW #2]
+ ldr w1, [x1, w21, UXTW #2]
; byrRegs -[x1]
sxtw x1, w1
mov x0, x20
@@ -534,10 +535,10 @@ G_M54203_IG31: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- add w24, w24, #1
+ add w21, w21, #1
movz w0, #0xD1FFAB1E
movk w0, #1 LSL #16
- cmp w24, w0
+ cmp w21, w0
blt G_M54203_IG29
;; size=72 bbWeight=4 PerfScore 82.00
G_M54203_IG32: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
@@ -631,7 +632,7 @@ G_M54203_IG39: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
b G_M54203_IG72
;; size=64 bbWeight=1 PerfScore 15.00
G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov w0, w21
+ mov w0, w22
movz x1, #0xD1FFAB1E // code for System.Text.Json.ThrowHelper:ThrowArgumentException_ValueTooLarge(long)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -640,9 +641,9 @@ G_M54203_IG40: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
+G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
; gcrRegs +[x19]
- ; byrRegs +[x25]
+ ; byrRegs +[x26]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -653,7 +654,7 @@ G_M54203_IG41: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
;; size=24 bbWeight=0 PerfScore 0.00
G_M54203_IG42: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x25]
+ ; byrRegs -[x26]
ldrb w4, [x20, #0x36]
ldr w2, [x20, #0x68]
mov w0, #31
@@ -915,27 +916,27 @@ G_M54203_IG60: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=100
;; size=40 bbWeight=0.50 PerfScore 4.25
G_M54203_IG61: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- add x25, x22, #12
- ; byrRegs +[x25]
- ldr w21, [x22, #0x08]
+ add x26, x22, #12
+ ; byrRegs +[x26]
+ ldr w22, [x22, #0x08]
+ ; gcrRegs -[x22]
movz w0, #0xD1FFAB1E
movk w0, #0xD1FFAB1E LSL #16
- cmp w21, w0
+ cmp w22, w0
bgt G_M54203_IG40
add x0, x20, #96
; byrRegs +[x0]
ldr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbnz w21, G_M54203_IG62
+ cbnz w22, G_M54203_IG62
movn w3, #0
b G_M54203_IG65
;; size=44 bbWeight=2 PerfScore 24.00
-G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref, isz
- ; gcrRegs -[x22]
- mov x22, x25
- ; byrRegs +[x22]
- str x22, [fp, #0x20] // [V87 tmp81]
+G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref, isz
+ mov x27, x26
+ ; byrRegs +[x27]
+ str x27, [fp, #0x20] // [V87 tmp81]
cbnz x0, G_M54203_IG64
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
@@ -944,17 +945,17 @@ G_M54203_IG62: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200
ldr w0, [x0]
tbz w0, #0, G_M54203_IG41
;; size=32 bbWeight=2 PerfScore 16.00
-G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
- ; byrRegs -[x22]
+G_M54203_IG63: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref
+ ; byrRegs -[x27]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
;; size=16 bbWeight=2 PerfScore 9.00
-G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
- mov x1, x22
- mov w2, w21
+G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=4000000 {x26}, byref
+ mov x1, x27
+ mov w2, w22
ldr x3, [x0]
ldr x3, [x3, #0x48]
ldr x3, [x3, #0x28]
@@ -963,13 +964,13 @@ G_M54203_IG64: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=200
; gcr arg pop 0
sxtw w3, w0
;; size=28 bbWeight=2 PerfScore 23.00
-G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
str xzr, [fp, #0x20] // [V87 tmp81]
cmn w3, #1
beq G_M54203_IG66
- mov x1, x25
+ mov x1, x26
; byrRegs +[x1]
- mov w2, w21
+ mov w2, w22
mov x0, x20
; gcrRegs +[x0]
movz x4, #0xD1FFAB1E // code for <unknown method>
@@ -978,12 +979,12 @@ G_M54203_IG65: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
ldr x4, [x4]
blr x4
; gcrRegs -[x0]
- ; byrRegs -[x1 x25]
+ ; byrRegs -[x1 x26]
; gcr arg pop 0
b G_M54203_IG69
;; size=48 bbWeight=2 PerfScore 21.00
-G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
- ; byrRegs +[x25]
+G_M54203_IG66: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=4000000 {x26}, byref, isz
...
+20 (+3.91%) : 21363.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -33,10 +33,10 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value"
; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG23
- cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25
+ cbz w21, G_M46295_IG19
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG17
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG14
- cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16
+ cbnz x23, G_M46295_IG12
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08]
sub w0, w0, w24
cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12
; byrRegs +[x2]
sbfiz x0, x24, #1, #32
@@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -266,7 +277,7 @@ Unwind Info:
E bit : 0
...
benchmarks.run_pgo.windows.arm64.checked.mch
-16 (-3.54%) : 84373.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary
2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
@@ -23,7 +23,7 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
; V12 tmp6 [V12,T05] ( 2,399.96) long -> x1 "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> x23 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> x23 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> x24 class-hnd "Inlining Arg" <System.__Canon>
@@ -39,9 +39,9 @@
; V26 tmp20 [V26,T03] ( 2,400 ) ref -> x2 class-hnd "Inlining Arg" <System.__Canon>
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> x24 "V04.[000..008)"
-; V30 tmp24 [V30,T14] ( 4,101.01) int -> x25 "V04.[008..012)"
-; V31 tmp25 [V31,T07] ( 6,301.01) int -> registers "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> x24 "V04.[000..008)"
+; V30 tmp24 [V30,T14] ( 3,101.01) int -> x25 "V04.[008..012)"
+; V31 tmp25 [V31,T06] ( 6,301.01) int -> registers "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> x2 "V04.[024..032)"
; V33 tmp27 [V33,T11] ( 3,199.99) long -> x4 "V04.[032..040)"
;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)"
@@ -80,15 +80,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldp w25, w26, [fp, #0xF8] // [V04 loc2+0x08], [V04 loc2+0x0c]
;; size=12 bbWeight=1 PerfScore 4.50
G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- cbz w23, G_M19783_IG08
+ cbz w23, G_M19783_IG06
;; size=4 bbWeight=0.01 PerfScore 0.01
G_M19783_IG04: ; bbWeight=7.97, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
- b G_M19783_IG08
+ b G_M19783_IG06
;; size=4 bbWeight=7.97 PerfScore 7.97
G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x24]
cmp w22, w0
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
add x0, x19, #16
; byrRegs +[x0]
ldr x0, [x0, w22, UXTW #3]
@@ -107,11 +107,15 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
mov w26, wzr
b G_M19783_IG03
;; size=56 bbWeight=0.01 PerfScore 0.18
-G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M19783_IG06: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ mov w23, #1
+ ldr w0, [x24, #0x44]
+ cmp w25, w0
+ bne G_M19783_IG18
ldr w27, [x24, #0x38]
- b G_M19783_IG10
- ;; size=8 bbWeight=100 PerfScore 400.00
+ b G_M19783_IG09
+ ;; size=24 bbWeight=100 PerfScore 900.00
G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
sxtw x0, w22
@@ -127,23 +131,17 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=1380004 {x2 x19 x20 x21 x24},
blr x4
; gcrRegs -[x0 x2]
; gcr arg pop 0
- cbz w0, G_M19783_IG15
- ;; size=44 bbWeight=99.99 PerfScore 1199.88
-G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- mov w23, #1
- ldr w0, [x24, #0x44]
- cmp w25, w0
- bne G_M19783_IG19
+ cbz w0, G_M19783_IG14
b G_M19783_IG06
- ;; size=20 bbWeight=100 PerfScore 600.00
-G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=99.99 PerfScore 1299.87
+G_M19783_IG08: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24, #0x10]
; gcrRegs +[x0]
add w1, w26, #1
sxtw w28, w1
ldr w1, [x0, #0x08]
cmp w26, w1
- bhs G_M19783_IG14
+ bhs G_M19783_IG13
mov w1, #24
mov x2, #16
umaddl x1, w26, w1, x2
@@ -153,38 +151,38 @@ G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr w1, [x0, #0x14]
cmn w1, #1
mov w26, w28
- bge G_M19783_IG11
+ bge G_M19783_IG10
;; size=56 bbWeight=100 PerfScore 2000.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG09: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cmp w26, w27
- bhs G_M19783_IG16
- b G_M19783_IG09
+ bhs G_M19783_IG15
+ b G_M19783_IG08
;; size=12 bbWeight=100 PerfScore 250.00
-G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
+G_M19783_IG10: ; bbWeight=100, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldp x2, x4, [x0]
; gcrRegs +[x2]
mov w28, #1
;; size=8 bbWeight=100 PerfScore 450.00
-G_M19783_IG12: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG11: ; bbWeight=100, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
cbnz w28, G_M19783_IG07
;; size=4 bbWeight=100 PerfScore 100.00
-G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG12: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x24]
add w22, w22, #1
ldr w0, [x19, #0x08]
cmp w0, w22
- ble G_M19783_IG17
+ ble G_M19783_IG16
b G_M19783_IG05
;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x21 x24]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
@@ -198,21 +196,17 @@ G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x2, [x2]
blr x2
; gcr arg pop 0
- mov w23, #1
- ldr w1, [x24, #0x44]
- cmp w25, w1
- beq G_M19783_IG06
- b G_M19783_IG19
- ;; size=64 bbWeight=0 PerfScore 0.00
-G_M19783_IG16: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+ b G_M19783_IG06
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M19783_IG15: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
add w26, w27, #1
mov x2, xzr
; gcrRegs +[x2]
mov x4, xzr
mov w28, wzr
- b G_M19783_IG12
+ b G_M19783_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M19783_IG16: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x19 x24]
ldr x2, [x20, #0x08]
; gcrRegs +[x2]
@@ -226,7 +220,7 @@ G_M19783_IG17: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
; gcrRegs -[x1 x20-x21]
; gcr arg pop 0
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG17: ; bbWeight=0, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -236,7 +230,7 @@ G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
add sp, sp, #224
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
@@ -247,7 +241,7 @@ G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 452, prolog size 40, PerfScore 5026.10, instruction count 113, allocated bytes for code 452 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 436, prolog size 40, PerfScore 5026.09, instruction count 109, allocated bytes for code 436 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -258,7 +252,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-44 (-3.06%) : 8676.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)
@@ -8,8 +8,8 @@
; 7 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T31] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
-; V01 arg1 [V01,T32] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V00 arg0 [V00,T30] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
+; V01 arg1 [V01,T31] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[SFA] multireg-arg single-def ptr <System.UInt128>
; V02 loc0 [V02,T28] ( 6, 6 ) long -> x19
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[uint]>
; V04 loc2 [V04,T29] ( 6, 6 ) long -> x21
@@ -23,8 +23,8 @@
;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]>
;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ptr
; V14 loc12 [V14,T05] ( 13, 39 ) int -> [fp+0x64] ptr
-; V15 loc13 [V15,T11] ( 8, 18 ) int -> [fp+0x60] spill-single-def ptr
-; V16 loc14 [V16,T18] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
+; V15 loc13 [V15,T11] ( 7, 18 ) int -> [fp+0x60] spill-single-def ptr
+; V16 loc14 [V16,T17] ( 4, 12 ) int -> [fp+0x5C] spill-single-def ptr
; V17 loc15 [V17,T03] ( 6, 60 ) long -> [fp+0x50] ptr
; V18 loc16 [V18,T10] ( 3, 22 ) int -> [fp+0x4C] ptr
; V19 loc17 [V19,T02] ( 13,114 ) long -> [fp+0x40] ptr
@@ -38,7 +38,7 @@
; V27 tmp5 [V27,T33] ( 3, 6 ) int -> x0 "Span.get_Item index"
; V28 tmp6 [V28,T63] ( 2, 2 ) int -> x0 "Span.get_Item index"
; V29 tmp7 [V29,T59] ( 5, 3 ) int -> x0
-; V30 tmp8 [V30,T24] ( 3, 8 ) int -> x7
+; V30 tmp8 [V30,T23] ( 3, 8 ) int -> x7
; V31 tmp9 [V31,T16] ( 5, 12 ) int -> x0
;* V32 tmp10 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.Span`1[uint]>
;* V33 tmp11 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
@@ -64,8 +64,8 @@
;* V53 tmp31 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp33 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V56 tmp34 [V56,T19] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg"
-; V57 tmp35 [V57,T25] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
+; V56 tmp34 [V56,T18] ( 3, 12 ) int -> [fp+0x3C] spill-single-def ptr "Inlining Arg"
+; V57 tmp35 [V57,T24] ( 2, 8 ) byref -> [fp+0x20] spill-single-def ptr "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V59 tmp37 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V60 tmp38 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -77,8 +77,8 @@
;* V66 tmp44 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V67 tmp45 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V69 tmp47 [V69,T17] ( 5, 12 ) int -> [fp+0x38] ptr "Inlining Arg"
-; V70 tmp48 [V70,T23] ( 3, 8 ) byref -> [fp+0x18] ptr "Inlining Arg"
+; V69 tmp47 [V69,T19] ( 3, 12 ) int -> [fp+0x38] spill-single-def ptr "Inlining Arg"
+; V70 tmp48 [V70,T25] ( 2, 8 ) byref -> [fp+0x18] spill-single-def ptr "Inlining Arg"
;* V71 tmp49 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V72 tmp50 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -92,7 +92,7 @@
; V81 tmp59 [V81,T48] ( 2, 4 ) long -> x0 "Inlining Arg"
; V82 tmp60 [V82,T49] ( 2, 4 ) long -> x1 "Inlining Arg"
; V83 tmp61 [V83,T14] ( 7, 15 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp62 [V84,T09] ( 15, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V84 tmp62 [V84,T09] ( 14, 28 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
; V85 tmp63 [V85,T13] ( 6, 7 ) byref -> x21 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V86 tmp64 [V86,T08] ( 15, 21.50) int -> x22 "field V05._length (fldOffset=0x8)" P-INDEP
; V87 tmp65 [V87,T20] ( 7, 8 ) byref -> x23 single-def "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -132,7 +132,7 @@
; V121 tmp99 [V121,T43] ( 4, 4 ) long -> x2 "V01.[000..008)"
; V122 tmp100 [V122,T40] ( 5, 5 ) long -> x3 "V01.[008..016)"
; V123 GsCookie [V123 ] ( 1, 1 ) long -> [fp+0xB8] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V124 cse0 [V124,T30] ( 4, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V124 cse0 [V124,T32] ( 3, 6 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V125 cse1 [V125,T12] ( 4, 16 ) int -> [fp+0x34] spill-single-def "CSE - aggressive"
; V126 cse2 [V126,T26] ( 6, 7.50) int -> x3 multi-def "CSE - moderate"
; V127 cse3 [V127,T37] ( 3, 6 ) int -> x0 "CSE - moderate"
@@ -176,7 +176,7 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add w0, w1, w0
neg w0, w0, ASR #5
add w20, w0, #4
- tbnz w20, #31, G_M55503_IG48
+ tbnz w20, #31, G_M55503_IG46
add x21, fp, #152 // [V24 tmp2]
str w2, [x21]
lsr x0, x2, #32
@@ -193,13 +193,13 @@ G_M55503_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add w0, w1, w0
neg w0, w0, ASR #5
add w22, w0, #4
- tbnz w22, #31, G_M55503_IG48
+ tbnz w22, #31, G_M55503_IG46
add x23, fp, #136 // [V25 tmp3]
stp xzr, xzr, [x23]
sub w0, w20, w22
add w24, w0, #1
cmp w24, #4
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
cmp w24, #0
cset x0, ge
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
@@ -278,7 +278,7 @@ G_M55503_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A80000 {x19
G_M55503_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
sxtw w5, w20
cmp w20, w22
- blt G_M55503_IG36
+ blt G_M55503_IG37
;; size=12 bbWeight=1 PerfScore 2.00
G_M55503_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
sub w6, w5, w22
@@ -383,11 +383,11 @@ G_M55503_IG25: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x2
bhi G_M55503_IG22
;; size=20 bbWeight=16 PerfScore 56.00
G_M55503_IG26: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
- cbz x13, G_M55503_IG31
+ cbz x13, G_M55503_IG32
;; size=4 bbWeight=8 PerfScore 8.00
G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w20
- bhi G_M55503_IG48
+ bhi G_M55503_IG46
ubfiz x0, x6, #2, #32
add x9, x19, x0
; byrRegs +[x9]
@@ -402,7 +402,7 @@ G_M55503_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21
str w5, [fp, #0x64] // [V14 loc12]
tbnz w1, #31, G_M55503_IG43
;; size=44 bbWeight=2 PerfScore 18.00
-G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000101000000 {V57 V124}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; byrRegs -[x9]
mov x2, x21
; byrRegs +[x2]
@@ -417,60 +417,78 @@ G_M55503_IG28: ; bbWeight=2, gcVars=00000000000000000000000042000000 {V57
blr x10
; byrRegs -[x0 x2]
; gcr arg pop 0
- ldr w4, [fp, #0x5C] // [V16 loc14]
- cmp w0, w4
+ ldr w2, [fp, #0x5C] // [V16 loc14]
+ cmp w0, w2
beq G_M55503_IG39
- add w1, w4, #1
+ add w1, w2, #1
cmp w0, w1
- bne G_M55503_IG44
+ beq G_M55503_IG29
+ movz x0, #8
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x1, #8
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcr arg pop 0
+ ;; size=104 bbWeight=2 PerfScore 44.00
+G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr x0, [fp, #0x10] // [V124 cse0]
; byrRegs +[x0]
- ldr w5, [fp, #0x60] // [V15 loc13]
- sub w1, w20, w5
- tbnz w1, #31, G_M55503_IG38
- ;; size=76 bbWeight=2 PerfScore 38.00
-G_M55503_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V70 tmp48]
+ ; GC ptr vars +{V70}
+ ldr w4, [fp, #0x60] // [V15 loc13]
+ sub w1, w20, w4
+ str w1, [fp, #0x38] // [V69 tmp47]
+ tbnz w1, #31, G_M55503_IG44
+ ;; size=24 bbWeight=2 PerfScore 15.00
+G_M55503_IG30: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V70}, gcrefRegs=0000 {}, byrefRegs=A80001 {x0 x19 x21 x23}, gcvars, byref, isz
; GC ptr vars -{V124}
mov x2, x21
; byrRegs +[x2]
mov w3, w22
- movz x4, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
+ movz x5, #0xD1FFAB1E // code for System.UInt128:<op_Division>g__AddDivisor|111_0(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint
+ movk x5, #0xD1FFAB1E LSL #16
+ movk x5, #0xD1FFAB1E LSL #32
+ ldr x5, [x5]
+ ; GC ptr vars -{V70}
+ blr x5
; byrRegs -[x0 x2]
; gcr arg pop 0
ldr x2, [fp, #0x40] // [V19 loc17]
sub x2, x2, #1
cmp w0, #1
- bne G_M55503_IG47
+ bne G_M55503_IG45
;; size=44 bbWeight=2 PerfScore 21.00
-G_M55503_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
mov x13, x2
ldp w6, w5, [fp, #0x60] // [V15 loc13], [V14 loc12]
;; size=8 bbWeight=1 PerfScore 2.50
-G_M55503_IG31: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w6, w24
- bhs G_M55503_IG33
+ bhs G_M55503_IG34
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG32: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str w13, [x23, w6, UXTW #2]
;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
cmp w5, w20
- bhs G_M55503_IG35
+ bhs G_M55503_IG36
;; size=8 bbWeight=4 PerfScore 6.00
-G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
+G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref
str wzr, [x19, w5, UXTW #2]
;; size=4 bbWeight=2 PerfScore 2.00
-G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
+G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A80000 {x19 x21 x23}, byref, isz
ldr w8, [fp, #0x34] // [V125 cse1]
sxtw w5, w8
cmp w5, w22
bge G_M55503_IG10
;; size=16 bbWeight=4 PerfScore 16.00
-G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x19 x21]
ldp w1, w0, [x23, #0x08]
orr x1, x1, x0, LSL #32
@@ -482,12 +500,12 @@ G_M55503_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0xB8] // [V123 GsCookie]
cmp xip0, xip1
- beq G_M55503_IG37
+ beq G_M55503_IG38
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x23]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 14.50
-G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x27, x28, [sp, #0xD1FFAB1E]
ldp x25, x26, [sp, #0xF0]
ldp x23, x24, [sp, #0xE0]
@@ -496,19 +514,11 @@ G_M55503_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0xD1FFAB1E
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
...
-8 (-1.33%) : 82045.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueImmutableDictionary():ubyte:this (Tier1-OSR)
@@ -13,70 +13,68 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
; V01 loc0 [V01,T06] ( 9, 799.92) ubyte -> x20
; V02 loc1 [V02,T11] ( 6, 299.97) ref -> x21 class-hnd exact <<unknown class>>
-; V03 loc2 [V03,T17] ( 3, 1.02) ref -> x22 class-hnd exact <<unknown class>>
+; V03 loc2 [V03,T14] ( 3, 100.00) ref -> x22 class-hnd exact <<unknown class>>
; V04 loc3 [V04,T05] ( 17,1300.89) int -> x19
; V05 loc4 [V05 ] ( 5, 400.96) ref -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x25 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp1 [V07,T04] ( 8,1399.86) ref -> x24 class-hnd exact "Inlining Arg" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
; V10 tmp4 [V10,T07] ( 8, 799.92) ubyte -> x0 "Inline return value spill temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
; V12 tmp6 [V12,T03] ( 6,2506.37) int -> x0 "Inline stloc first use temp"
-; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
+; V13 tmp7 [V13 ] ( 6, 799.92) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.String,System.String]>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V15 tmp9 [V15,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V17 tmp11 [V17,T00] ( 14,4759.65) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V17 tmp11 [V17,T00] ( 14,4759.65) ref -> x25 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V08._root (fldOffset=0x0)" P-INDEP
;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref "field V08._comparers (fldOffset=0x8)" P-INDEP
-; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x26 "field V09._root (fldOffset=0x0)" P-INDEP
-; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x27 "field V09._comparers (fldOffset=0x8)" P-INDEP
+; V20 tmp14 [V20,T12] ( 6, 299.97) ref -> x25 "field V09._root (fldOffset=0x0)" P-INDEP
+; V21 tmp15 [V21,T13] ( 4, 199.98) ref -> x26 "field V09._comparers (fldOffset=0x8)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref "field V11._root (fldOffset=0x0)" P-INDEP
-; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x27 "field V11._comparers (fldOffset=0x8)" P-INDEP
+; V23 tmp17 [V23,T08] ( 6, 599.94) ref -> x26 "field V11._comparers (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T01] ( 3,3622.96) int -> x2 "CSE - aggressive"
; V25 cse1 [V25,T02] ( 3,3028.82) ref -> x4 "CSE - aggressive"
; V26 cse2 [V26,T15] ( 3, 36.60) int -> x2 "CSE - aggressive"
; V27 cse3 [V27,T16] ( 3, 30.59) ref -> x4 "CSE - aggressive"
; V28 cse4 [V28,T09] ( 7, 400.98) int -> x23 "CSE - aggressive"
-; V29 cse5 [V29,T14] ( 4, 101.00) byref -> x24 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M61968_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- stp x23, x24, [sp, #0x48]
- stp x25, x26, [sp, #0x58]
- str x27, [sp, #0x68]
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V13 tmp7], [V13 tmp7+0x08]
- str xzr, [fp, #0x20] // [V13 tmp7+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V13 tmp7], [V13 tmp7+0x08]
+ str xzr, [fp, #0x28] // [V13 tmp7+0x10]
ldr w20, [fp, #0xB4]
ldp x22, x21, [fp, #0xA0]
; gcrRegs +[x21-x22]
ldr w19, [fp, #0x9C]
- ;; size=48 bbWeight=0.01 PerfScore 0.15
+ ;; size=44 bbWeight=0.01 PerfScore 0.14
G_M61968_IG02: ; bbWeight=0.01, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w23, [x22, #0x08]
cmp w23, w19
ble G_M61968_IG22
tbnz w19, #31, G_M61968_IG11
- add x24, x22, #16
- ; byrRegs +[x24]
- ;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x22]
- ldr x25, [x24, w19, UXTW #3]
- ; gcrRegs +[x25]
+ ;; size=16 bbWeight=0.01 PerfScore 0.05
+G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
+ add x0, x22, #16
+ ; byrRegs +[x0]
+ ldr x24, [x0, w19, UXTW #3]
+ ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24
- ldp x26, x27, [x21, #0x08]
- ; gcrRegs +[x26-x27]
- ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24
+ ldp x25, x26, [x21, #0x08]
+ ; gcrRegs +[x25-x26]
+ ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0]
+ mov x1, x24
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
@@ -85,44 +83,44 @@ G_M61968_IG03: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=100000
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- ldrsb wzr, [x26]
- ;; size=48 bbWeight=98.99 PerfScore 2276.77
-G_M61968_IG04: ; bbWeight=1240.65, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
- ldr x4, [x26, #0x08]
+ ldrsb wzr, [x25]
+ ;; size=52 bbWeight=98.99 PerfScore 2326.27
+G_M61968_IG04: ; bbWeight=1240.65, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
+ ldr x4, [x25, #0x08]
; gcrRegs +[x4]
cbz x4, G_M61968_IG20
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2
beq G_M61968_IG08
;; size=20 bbWeight=1240.65 PerfScore 10545.53
-G_M61968_IG05: ; bbWeight=1141.66, gcrefRegs=E200010 {x4 x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, isz
+G_M61968_IG05: ; bbWeight=1141.66, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2
ble G_M61968_IG07
;; size=8 bbWeight=1141.66 PerfScore 1712.49
-G_M61968_IG06: ; bbWeight=594.14, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG06: ; bbWeight=594.14, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG04
;; size=8 bbWeight=594.14 PerfScore 2376.55
-G_M61968_IG07: ; bbWeight=547.52, gcrefRegs=A200010 {x4 x21 x25 x27}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x26] +[x4]
- mov x26, x4
- ; gcrRegs +[x26]
+G_M61968_IG07: ; bbWeight=547.52, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x25] +[x4]
+ mov x25, x4
+ ; gcrRegs +[x25]
b G_M61968_IG04
;; size=8 bbWeight=547.52 PerfScore 821.28
-G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=E200000 {x21 x25 x26 x27}, byrefRegs=1000000 {x24}, byref, nogc
+G_M61968_IG08: ; bbWeight=395.96, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x4]
- ldp x0, x2, [x26, #0x20]
- stp x0, x2, [fp, #0x10]
- ldr x0, [x26, #0x30]
- str x0, [fp, #0x20]
+ ldp x0, x2, [x25, #0x20]
+ stp x0, x2, [fp, #0x18]
+ ldr x0, [x25, #0x30]
+ str x0, [fp, #0x28]
;; size=16 bbWeight=395.96 PerfScore 3563.64
G_M61968_IG09: ; bbWeight=395.96, isz, extend
- add x0, fp, #16 // [V13 tmp7]
+ add x0, fp, #24 // [V13 tmp7]
add x4, fp, #144 // [V05 loc4]
- mov x2, x25
+ mov x2, x24
; gcrRegs +[x2]
- mov x3, x27
+ mov x3, x26
; gcrRegs +[x3]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -132,7 +130,7 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
- ; gcrRegs -[x2-x3 x25-x27]
+ ; gcrRegs -[x2-x3 x24-x26]
; gcr arg pop 0
eor w0, w20, w0
uxtb w20, w0
@@ -140,25 +138,24 @@ G_M61968_IG09: ; bbWeight=395.96, isz, extend
cmp w23, w19
ble G_M61968_IG22
;; size=68 bbWeight=395.96 PerfScore 4751.53
-G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=1000000 {x24}, byref
+G_M61968_IG10: ; bbWeight=98.99, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
b G_M61968_IG03
;; size=4 bbWeight=98.99 PerfScore 98.99
G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x22]
- ; byrRegs -[x24]
cmp w19, w23
bhs G_M61968_IG19
- add x24, x22, #16
- ; byrRegs +[x24]
- ldr x25, [x24, w19, UXTW #3]
- ; gcrRegs +[x25]
+ add x0, x22, #16
+ ; byrRegs +[x0]
+ ldr x24, [x0, w19, UXTW #3]
+ ; gcrRegs +[x24]
ldrsb wzr, [x21]
- cbz x25, G_M61968_IG24
- ldp x26, x27, [x21, #0x08]
- ; gcrRegs +[x26-x27]
- ldr x0, [x27, #0x08]
+ cbz x24, G_M61968_IG24
+ ldp x25, x26, [x21, #0x08]
+ ; gcrRegs +[x25-x26]
+ ldr x0, [x26, #0x08]
; gcrRegs +[x0]
- mov x1, x25
+ ; byrRegs -[x0]
+ mov x1, x24
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
@@ -166,46 +163,45 @@ G_M61968_IG11: ; bbWeight=1.00, gcrefRegs=600000 {x21 x22}, byrefRegs=000
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1]
- ; byrRegs -[x24]
; gcr arg pop 0
- ldrsb wzr, [x26]
+ ldrsb wzr, [x25]
;; size=60 bbWeight=1.00 PerfScore 25.00
-G_M61968_IG12: ; bbWeight=12.53, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x26, #0x08]
+G_M61968_IG12: ; bbWeight=12.53, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
+ ldr x4, [x25, #0x08]
; gcrRegs +[x4]
cbz x4, G_M61968_IG21
- ldr w2, [x26, #0x18]
+ ldr w2, [x25, #0x18]
cmp w0, w2
beq G_M61968_IG16
;; size=20 bbWeight=12.53 PerfScore 106.52
-G_M61968_IG13: ; bbWeight=11.53, gcrefRegs=E600010 {x4 x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M61968_IG13: ; bbWeight=11.53, gcrefRegs=7600010 {x4 x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
cmp w0, w2
ble G_M61968_IG15
;; size=8 bbWeight=11.53 PerfScore 17.30
-G_M61968_IG14: ; bbWeight=6.00, gcrefRegs=E600000 {x21 x22 x25 x26 x27}, byrefRegs=0000 {}, byref
+G_M61968_IG14: ; bbWeight=6.00, gcrefRegs=7600000 {x21 x22 x24 x25 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
- ldr x26, [x26, #0x10]
+ ldr x25, [x25, #0x10]
b G_M61968_IG12
;; size=8 bbWeight=6.00 PerfScore 24.01
-G_M61968_IG15: ; bbWeight=5.53, gcrefRegs=A600010 {x4 x21 x22 x25 x27}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x26] +[x4]
- mov x26, x4
- ; gcrRegs +[x26]
+G_M61968_IG15: ; bbWeight=5.53, gcrefRegs=5600010 {x4 x21 x22 x24 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x25] +[x4]
+ mov x25, x4
+ ; gcrRegs +[x25]
b G_M61968_IG12
...
+20 (+3.76%) : 42823.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T09] ( 4, 3.02) byref -> x22 single-def
; V03 arg3 [V03,T07] ( 4, 4.03) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,604.04) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,604.04) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -127,14 +127,14 @@ G_M3489_IG04: ; bbWeight=101.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=101.01 PerfScore 2323.22
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
beq G_M3489_IG17
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -163,7 +163,7 @@ G_M3489_IG09: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG15
+ beq G_M3489_IG14
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x0, x23, x28
lsl x0, x0, #1
@@ -201,26 +201,17 @@ G_M3489_IG11: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
sxtw w3, w0
;; size=28 bbWeight=0.51 PerfScore 3.30
G_M3489_IG12: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG14
+ cbz w3, G_M3489_IG16
;; size=4 bbWeight=1.02 PerfScore 1.02
-G_M3489_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- sub w0, w27, #1
- and w0, w27, w0
- sub w1, w0, #1
- and w27, w0, w1
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- cbnz w27, G_M3489_IG09
- b G_M3489_IG05
- ;; size=28 bbWeight=0.01 PerfScore 0.04
-G_M3489_IG14: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG13: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22]
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M3489_IG15: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add w0, w23, w28
;; size=8 bbWeight=1.01 PerfScore 2.52
-G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
+G_M3489_IG15: ; bbWeight=1.01, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -232,7 +223,23 @@ G_M3489_IG16: ; bbWeight=1.01, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=1.01 PerfScore 9.59
-G_M3489_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
+ sub w0, w27, #1
+ and w0, w27, w0
+ sub w1, w0, #1
+ and w27, w0, w1
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ cbnz w27, G_M3489_IG09
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG06
+ ;; size=48 bbWeight=0.01 PerfScore 0.08
+G_M3489_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M3489_IG18: ; bbWeight=0.00, epilog, nogc, extend
@@ -267,7 +274,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 532, prolog size 52, PerfScore 3895.80, instruction count 133, allocated bytes for code 532 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 552, prolog size 52, PerfScore 3895.79, instruction count 138, allocated bytes for code 552 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -278,7 +285,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 138 (0x0008a) Actual length = 552 (0x000228)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+3.88%) : 96582.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T08] ( 4, 2.03) byref -> x22 single-def
; V03 arg3 [V03,T07] ( 4, 2.10) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,600.20) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,600.20) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -121,14 +121,14 @@ G_M3489_IG04: ; bbWeight=100.06, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=100.06 PerfScore 2301.33
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
beq G_M3489_IG18
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -157,7 +157,7 @@ G_M3489_IG09: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG16
+ beq G_M3489_IG15
;; size=24 bbWeight=0.07 PerfScore 0.30
G_M3489_IG10: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
@@ -191,26 +191,17 @@ G_M3489_IG12: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
sxtw w3, w0
;; size=28 bbWeight=0.02 PerfScore 0.11
G_M3489_IG13: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG15
+ cbz w3, G_M3489_IG17
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M3489_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- sub w0, w27, #1
- and w0, w27, w0
- sub w1, w0, #1
- and w27, w0, w1
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- cbnz w27, G_M3489_IG09
- b G_M3489_IG05
- ;; size=28 bbWeight=0.01 PerfScore 0.04
-G_M3489_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22]
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M3489_IG16: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG15: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add w0, w23, w28
;; size=8 bbWeight=0.06 PerfScore 0.14
-G_M3489_IG17: ; bbWeight=0.06, epilog, nogc, extend
+G_M3489_IG16: ; bbWeight=0.06, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -222,7 +213,23 @@ G_M3489_IG17: ; bbWeight=0.06, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=0.06 PerfScore 0.55
-G_M3489_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG17: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
+ sub w0, w27, #1
+ and w0, w27, w0
+ sub w1, w0, #1
+ and w27, w0, w1
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ cbnz w27, G_M3489_IG09
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG06
+ ;; size=48 bbWeight=0.01 PerfScore 0.08
+G_M3489_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M3489_IG19: ; bbWeight=0.00, epilog, nogc, extend
@@ -257,7 +264,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 516, prolog size 52, PerfScore 3821.62, instruction count 129, allocated bytes for code 516 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 536, prolog size 52, PerfScore 3821.61, instruction count 134, allocated bytes for code 536 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -268,7 +275,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 129 (0x00081) Actual length = 516 (0x000204)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+3.88%) : 42015.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
@@ -15,9 +15,9 @@
; V02 arg2 [V02,T08] ( 4, 2.04) byref -> x22 single-def
; V03 arg3 [V03,T07] ( 4, 2.10) int -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T00] ( 9,600.21) long -> [fp+0x258] tier0-frame
+; V05 loc1 [V05,T00] ( 12,600.21) long -> [fp+0x258] tier0-frame
;* V06 loc2 [V06 ] ( 0, 0 ) ushort -> zero-ref
-; V07 loc3 [V07,T05] ( 1,100 ) int -> [fp+0x250] tier0-frame
+; V07 loc3 [V07,T05] ( 2,100 ) int -> [fp+0x250] tier0-frame
;* V08 loc4 [V08 ] ( 0, 0 ) byref -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -121,14 +121,14 @@ G_M3489_IG04: ; bbWeight=100.06, gcrefRegs=0000 {}, byrefRegs=480000 {x19
stp q9, q8, [fp, #0xD1FFAB1E] // [V35 loc31], [V34 loc30]
bne G_M3489_IG08
;; size=72 bbWeight=100.06 PerfScore 2301.37
-G_M3489_IG05: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M3489_IG05: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add x23, x23, #8
ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
sxtw x0, w24
cmp x23, x0
beq G_M3489_IG18
- ;; size=24 bbWeight=100 PerfScore 650.00
+ ;; size=24 bbWeight=99.99 PerfScore 649.95
G_M3489_IG06: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x25, [fp, #0xD1FFAB1E] // [V36 loc32]
cmp x23, x25
@@ -157,7 +157,7 @@ G_M3489_IG09: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x
lsr w0, w0, #1
mov w28, w0
cmp w21, #2
- beq G_M3489_IG16
+ beq G_M3489_IG15
;; size=24 bbWeight=0.07 PerfScore 0.30
G_M3489_IG10: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
@@ -191,26 +191,17 @@ G_M3489_IG12: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=480001 {x0 x1
sxtw w3, w0
;; size=28 bbWeight=0.02 PerfScore 0.12
G_M3489_IG13: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz w3, G_M3489_IG15
+ cbz w3, G_M3489_IG17
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M3489_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref, isz
- sub w0, w27, #1
- and w0, w27, w0
- sub w1, w0, #1
- and w27, w0, w1
- str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
- cbnz w27, G_M3489_IG09
- b G_M3489_IG05
- ;; size=28 bbWeight=0.01 PerfScore 0.04
-G_M3489_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19 x22]
str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M3489_IG16: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3489_IG15: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
add w0, w23, w28
;; size=8 bbWeight=0.06 PerfScore 0.15
-G_M3489_IG17: ; bbWeight=0.06, epilog, nogc, extend
+G_M3489_IG16: ; bbWeight=0.06, epilog, nogc, extend
ldp x27, x28, [sp, #0x70]
ldp x25, x26, [sp, #0x60]
ldp x23, x24, [sp, #0x50]
@@ -222,7 +213,23 @@ G_M3489_IG17: ; bbWeight=0.06, epilog, nogc, extend
add sp, sp, #0xD1FFAB1E
ret lr
;; size=40 bbWeight=0.06 PerfScore 0.56
-G_M3489_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3489_IG17: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+ ; byrRegs +[x19 x22]
+ sub w0, w27, #1
+ and w0, w27, w0
+ sub w1, w0, #1
+ and w27, w0, w1
+ str x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ cbnz w27, G_M3489_IG09
+ ldr x23, [fp, #0xD1FFAB1E] // [V05 loc1]
+ add x23, x23, #8
+ ldr w24, [fp, #0xD1FFAB1E] // [V07 loc3]
+ sxtw x0, w24
+ cmp x23, x0
+ bne G_M3489_IG06
+ ;; size=48 bbWeight=0.01 PerfScore 0.08
+G_M3489_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x19 x22]
movn w0, #0
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M3489_IG19: ; bbWeight=0.00, epilog, nogc, extend
@@ -257,7 +264,7 @@ RWD00 dq 8080808080808080h, 8080808080808080h
RWD16 dq 00FFFEFDFCFBFAF9h, 00FFFEFDFCFBFAF9h
-Total bytes of code 516, prolog size 52, PerfScore 3821.72, instruction count 129, allocated bytes for code 516 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
+Total bytes of code 536, prolog size 52, PerfScore 3821.72, instruction count 134, allocated bytes for code 536 (MethodHash=624ef25e) for method System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -268,7 +275,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 129 (0x00081) Actual length = 516 (0x000204)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.windows.arm64.checked.mch
+0 (0.00%) : 9127.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 52,109 ) ref -> [fp+0x48] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> x19 class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate>
; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [fp+0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V03 loc2 [V03,T21] ( 13, 43 ) ref -> [fp+0x38] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>>
@@ -21,7 +21,7 @@
; V10 loc9 [V10,T14] ( 9, 53 ) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain>
; V11 loc10 [V11,T11] ( 4, 72 ) ubyte -> x22
; V12 loc11 [V12,T23] ( 3, 40 ) int -> x21
-; V13 loc12 [V13,T02] ( 5,132 ) int -> x23
+; V13 loc12 [V13,T03] ( 5,132 ) int -> x23
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
; V15 loc14 [V15,T54] ( 3, 10 ) int -> x19
; V16 loc15 [V16,T25] ( 5, 33 ) int -> x20
@@ -33,7 +33,7 @@
;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp5 [V23,T44] ( 2, 16 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
; V24 tmp6 [V24,T12] ( 8, 64 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T37] ( 3, 24 ) ref -> x0 class-hnd exact "dup spill" <System.Object[]>
; V27 tmp9 [V27,T38] ( 3, 24 ) ref -> x21 class-hnd exact "dup spill" <System.Object[]>
;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback>
@@ -144,10 +144,10 @@
;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 5,288 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V137 tmp119 [V137,T03] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String>
-; V138 tmp120 [V138,T01] ( 6,132 ) ref -> x25
-; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 5,320 ) ref -> x22 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
+; V137 tmp119 [V137,T04] ( 2,128 ) ref -> x25 class-hnd exact "dup spill" <System.String>
+; V138 tmp120 [V138,T02] ( 6,148 ) ref -> x25
+; V139 tmp121 [V139,T01] ( 3,192 ) ref -> x25 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
@@ -165,8 +165,8 @@
;* V154 tmp136 [V154,T107] ( 0, 0 ) ref -> zero-ref
;* V155 tmp137 [V155 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V156 tmp138 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
-; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x25 class-hnd "Inlining Arg" <System.FormattableString>
-; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x24
+; V157 tmp139 [V157,T09] ( 3, 96 ) ref -> x24 class-hnd "Inlining Arg" <System.FormattableString>
+; V158 tmp140 [V158,T30] ( 2, 32 ) ref -> x25
; V159 tmp141 [V159,T31] ( 2, 32 ) ref -> x26
;* V160 tmp142 [V160 ] ( 0, 0 ) ref -> zero-ref
;* V161 tmp143 [V161 ] ( 0, 0 ) ref -> zero-ref
@@ -235,7 +235,7 @@
; V224 tmp206 [V224,T76] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V225 tmp207 [V225,T77] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V226 tmp208 [V226,T13] ( 6, 54 ) ref -> x1 "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> x0 "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> x0 "argument with side effect"
; V228 tmp210 [V228,T34] ( 2, 32 ) ref -> x0 "argument with side effect"
; V229 tmp211 [V229,T19] ( 3, 48 ) ref -> x0 "argument with side effect"
; V230 tmp212 [V230,T104] ( 2, 4 ) long -> x2 "argument with side effect"
@@ -247,13 +247,13 @@
; V236 cse1 [V236,T115] ( 3, 3 ) ref -> x1 "CSE - conservative"
; V237 cse2 [V237,T116] ( 3, 3 ) ref -> x1 "CSE - conservative"
; V238 cse3 [V238,T117] ( 3, 3 ) ref -> x1 "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> x20 multi-def "CSE - aggressive"
; V240 cse5 [V240,T118] ( 3, 3 ) ref -> x0 "CSE - conservative"
; V241 cse6 [V241,T82] ( 4, 4 ) ref -> x19 "CSE - conservative"
; V242 cse7 [V242,T80] ( 5, 5 ) ref -> x19 "CSE - conservative"
; V243 cse8 [V243,T119] ( 3, 3 ) int -> x21 "CSE - conservative"
; V244 cse9 [V244,T22] ( 6, 43 ) int -> x19 multi-def "CSE - moderate"
-; V245 cse10 [V245,T10] ( 3, 80 ) byref -> x24 "CSE - aggressive"
+; V245 cse10 [V245,T10] ( 3, 96 ) byref -> x24 "CSE - aggressive"
; V246 rat0 [V246,T79] ( 3, 6 ) ref -> x6 "delegate invoke call"
;
; Lcl frame size = 80
@@ -272,7 +272,7 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x48] // [V00 this]
; GC ptr vars +{V00}
;; size=44 bbWeight=1 PerfScore 10.00
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
stp xzr, xzr, [fp, #0x38] // [V03 loc2], [V02 loc1]
; GC ptr vars +{V02 V03}
@@ -418,7 +418,7 @@ G_M34773_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0xA0
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200020 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG08: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000200040 {V00 V02 V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
; GC ptr vars +{V02 V03 V21 V41}
ldr x1, [x19, #0x30]
@@ -475,7 +475,7 @@ G_M34773_IG09: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}
str xzr, [fp, #0x28] // [V05 loc4]
; GC ptr vars +{V05}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200020 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG10: ; bbWeight=1, gcVars=000000000000000000000000000000100000020000200040 {V00 V02 V03 V05}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V21 V41}
movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -494,7 +494,7 @@ G_M34773_IG10: ; bbWeight=1, gcVars=0000000000000000000000000000001000000
ldr w2, [x2]
tbnz w2, #0, G_M34773_IG12
;; size=52 bbWeight=1 PerfScore 17.00
-G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208020 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG11: ; bbWeight=0, gcVars=000000000000000000000000000000100000020000208040 {V00 V02 V03 V04 V05}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -681,7 +681,7 @@ G_M34773_IG16: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
;; size=24 bbWeight=1 PerfScore 6.00
G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -701,7 +701,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
@@ -724,7 +724,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
;; size=44 bbWeight=1 PerfScore 23.50
G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -744,12 +744,12 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
ldrb w1, [x20, #0x9D]
- cbz w1, G_M34773_IG57
+ cbz w1, G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -769,7 +769,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x3
; gcrRegs -[x0 x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=64 bbWeight=1 PerfScore 24.00
G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0 x19]
@@ -810,7 +810,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
; gcrRegs +[x19]
cbz x19, G_M34773_IG26
;; size=104 bbWeight=1 PerfScore 42.50
-G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000020 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG22: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000020000000040 {V00 V02}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
; GC ptr vars -{V03}
ldr x0, [x19]
@@ -897,7 +897,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x20, [x0]
; gcrRegs +[x20]
ldrb w0, [x20, #0x9D]
- cbz w0, G_M34773_IG57
+ cbz w0, G_M34773_IG58
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
@@ -911,7 +911,7 @@ G_M34773_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x3
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
- b G_M34773_IG57
+ b G_M34773_IG58
;; size=60 bbWeight=1 PerfScore 18.00
G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x48] // [V00 this]
@@ -919,7 +919,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x1, [x0, #0x38]
; gcrRegs +[x1]
ldr x1, [x1, #0x10]
- cbz x1, G_M34773_IG57
+ cbz x1, G_M34773_IG58
ldr x1, [x1, #0x08]
mov x0, x1
ldr x1, [x1]
@@ -930,7 +930,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this
@@ -956,7 +956,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [x0, #0x08]
cbnz w19, G_M34773_IG29
;; size=120 bbWeight=1 PerfScore 50.00
-G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208020 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG28: ; bbWeight=1, gcVars=000000000000000000000000000000000000020000208040 {V00 V02 V03 V04}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov x19, x20
; gcrRegs +[x19]
@@ -1021,23 +1021,23 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, #0
- ble G_M34773_IG57
+ ble G_M34773_IG58
;; size=48 bbWeight=1 PerfScore 24.00
G_M34773_IG31: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x30] // [V04 loc3]
; gcrRegs +[x0]
- cbz x0, G_M34773_IG50
+ cbz x0, G_M34773_IG51
;; size=8 bbWeight=8 PerfScore 24.00
G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0x30] // [V04 loc3]
; gcrRegs +[x0]
ldr w19, [x0, #0x08]
- cbz w19, G_M34773_IG50
+ cbz w19, G_M34773_IG51
stp xzr, xzr, [fp, #0x18] // [V10 loc9], [V09 loc8]
; GC ptr vars +{V09 V10}
;; size=16 bbWeight=4 PerfScore 28.00
-G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG33: ; bbWeight=4, gcVars=00000000000000000000000000000000000002100020C040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0x48] // [V00 this]
; gcrRegs +[x0]
@@ -1061,7 +1061,7 @@ G_M34773_IG33: ; bbWeight=4, gcVars=0000000000000000000000000000000000000
; gcr arg pop 0
str x0, [fp, #0x20] // [V09 loc8]
...
+0 (0.00%) : 19071.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan
1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)
@@ -87,7 +87,7 @@ G_M30796_IG02: ; bbWeight=8, gcVars=0000000001800000 {V04 V06}, gcrefRegs
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w1, w2
- bhs G_M30796_IG13
+ bhs G_M30796_IG06
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -100,14 +100,26 @@ G_M30796_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x2
str w0, [fp, #0x88] // [V14 loc4]
;; size=8 bbWeight=2 PerfScore 6.00
G_M30796_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
- tbnz w25, #1, G_M30796_IG18
+ tbz w25, #1, G_M30796_IG07
;; size=4 bbWeight=8 PerfScore 8.00
-G_M30796_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M30796_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ ; byrRegs -[x20 x24]
+ mov w0, #1
+ b G_M30796_IG22
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M30796_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M30796_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+ ; gcrRegs +[x19]
+ ; byrRegs +[x20 x24]
ldr w0, [fp, #0x98] // [V10 loc0]
cmp w0, w22
- bhs G_M30796_IG15
+ bhs G_M30796_IG11
;; size=12 bbWeight=4 PerfScore 14.00
-G_M30796_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M30796_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
ldr x0, [x19, #0x50]
; gcrRegs +[x0]
ldr w1, [fp, #0x98] // [V10 loc0]
@@ -116,7 +128,7 @@ G_M30796_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x2
; gcrRegs +[x26]
ldr w2, [x26, #0x08]
cmp w2, w1
- bhi G_M30796_IG14
+ bhi G_M30796_IG09
ldr x0, [x0, #0x10]
movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this
movk x2, #0xD1FFAB1E LSL #16
@@ -127,23 +139,38 @@ G_M30796_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x2
; gcrRegs -[x0 x26]
; gcr arg pop 0
sxtw w2, w0
- ;; size=60 bbWeight=2 PerfScore 55.00
-G_M30796_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
- tbz w25, #2, G_M30796_IG09
+ b G_M30796_IG10
+ ;; size=64 bbWeight=2 PerfScore 57.00
+G_M30796_IG09: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1100000 {x20 x24}, byref
+ ; gcrRegs +[x26]
+ add x2, x26, #16
+ ; byrRegs +[x2]
+ ldr w2, [x2, w1, UXTW #2]
+ ; byrRegs -[x2]
+ ;; size=8 bbWeight=2 PerfScore 7.00
+G_M30796_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
+ ; gcrRegs -[x26]
+ b G_M30796_IG12
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M30796_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
+ movn w2, #0
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M30796_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+ tbz w25, #2, G_M30796_IG14
;; size=4 bbWeight=4 PerfScore 4.00
-G_M30796_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M30796_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
ldr w1, [fp, #0x98] // [V10 loc0]
str w1, [fp, #0x94] // [V11 loc1]
ldr w1, [x20, #0x08]
str w1, [fp, #0x90] // [V12 loc2]
ldr w1, [fp, #0x88] // [V14 loc4]
str w1, [fp, #0x8C] // [V13 loc3]
- cbz w23, G_M30796_IG19
+ cbz w23, G_M30796_IG20
;; size=28 bbWeight=2 PerfScore 22.00
-G_M30796_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+G_M30796_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
ldr w1, [fp, #0x98] // [V10 loc0]
cmp w1, w21
- bge G_M30796_IG20
+ bge G_M30796_IG21
ldr w1, [x20, #0x08]
ldr w0, [x19, #0xA4]
lsl w0, w1, w0
@@ -152,55 +179,28 @@ G_M30796_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x2
; gcrRegs +[x0]
ldr w4, [x0, #0x08]
cmp w3, w4
- bhs G_M30796_IG13
+ bhs G_M30796_IG06
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
ldr w0, [x0, w3, UXTW #2]
; byrRegs -[x0]
cmp w0, #0
- ble G_M30796_IG16
+ ble G_M30796_IG17
;; size=60 bbWeight=4 PerfScore 92.00
-G_M30796_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
+G_M30796_IG15: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
str w0, [x20, #0x08]
;; size=4 bbWeight=2 PerfScore 2.00
-G_M30796_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
+G_M30796_IG16: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
mov w25, #1
- ;; size=4 bbWeight=8 PerfScore 4.00
-G_M30796_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
- str xzr, [fp, #0x10] // [V30 tmp12]
- cbz w25, G_M30796_IG20
- ldr w0, [fp, #0x98] // [V10 loc0]
- add w0, w0, #1
- str w0, [fp, #0x98] // [V10 loc0]
- b G_M30796_IG02
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M30796_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x20 x24]
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M30796_IG14: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1100000 {x20 x24}, byref
- ; gcrRegs +[x19 x26]
- ; byrRegs +[x20 x24]
- add x2, x26, #16
- ; byrRegs +[x2]
- ldr w2, [x2, w1, UXTW #2]
- ; byrRegs -[x2]
- b G_M30796_IG07
- ;; size=12 bbWeight=2 PerfScore 9.00
-G_M30796_IG15: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
- ; gcrRegs -[x26]
- movn w2, #0
- b G_M30796_IG07
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M30796_IG16: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+ b G_M30796_IG19
+ ;; size=8 bbWeight=8 PerfScore 12.00
+G_M30796_IG17: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w4, [x0, #0x08]
cmp w1, w4
- bhs G_M30796_IG13
+ bhs G_M30796_IG06
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -218,32 +218,35 @@ G_M30796_IG16: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x
blr x6
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M30796_IG17
+ cbz w0, G_M30796_IG18
ldr x0, [fp, #0x10] // [V30 tmp12]
; gcrRegs +[x0]
ldr w0, [x0, #0x14]
; gcrRegs -[x0]
str w0, [x20, #0x08]
- b G_M30796_IG11
+ b G_M30796_IG16
;; size=76 bbWeight=16 PerfScore 416.00
-G_M30796_IG17: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
+G_M30796_IG18: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref
mov w25, wzr
- b G_M30796_IG12
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M30796_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M30796_IG19: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1100000 {x20 x24}, byref, isz
+ str xzr, [fp, #0x10] // [V30 tmp12]
+ cbz w25, G_M30796_IG21
+ ldr w0, [fp, #0x98] // [V10 loc0]
+ add w0, w0, #1
+ str w0, [fp, #0x98] // [V10 loc0]
+ b G_M30796_IG02
+ ;; size=24 bbWeight=4 PerfScore 26.00
+G_M30796_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20 x24]
mov w0, #1
- b G_M30796_IG21
+ b G_M30796_IG22
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30796_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #1
- b G_M30796_IG21
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30796_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30796_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M30796_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30796_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr w1, [fp, #0x98] // [V10 loc0]
ldr x5, [fp, #0xB0] // [V04 arg4]
; byrRegs +[x5]
@@ -269,7 +272,7 @@ G_M30796_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs +[x1]
str w2, [x1]
;; size=60 bbWeight=1 PerfScore 25.00
-G_M30796_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M30796_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -278,7 +281,7 @@ G_M30796_IG22: ; bbWeight=1, epilog, nogc, extend
add sp, sp, #128
ret lr
;; size=28 bbWeight=1 PerfScore 6.50
-G_M30796_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M30796_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; byrRegs -[x1]
sub sp, sp, #224
stp fp, lr, [sp]
@@ -289,7 +292,7 @@ G_M30796_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add x3, fp, #224
str x3, [sp, #0x18]
;; size=32 bbWeight=0 PerfScore 0.00
-G_M30796_IG24: ; bbWeight=0, gcVars=0000000001800000 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30796_IG25: ; bbWeight=0, gcVars=0000000001800000 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr w0, [fp, #0x98] // [V10 loc0]
ldr x5, [fp, #0xB0] // [V04 arg4]
; byrRegs +[x5]
@@ -310,7 +313,7 @@ G_M30796_IG24: ; bbWeight=0, gcVars=0000000001800000 {V04 V06}, gcrefRegs
ldr x1, [fp, #0xF0] // [V09 arg9]
str w0, [x1]
;; size=60 bbWeight=0 PerfScore 0.00
-G_M30796_IG25: ; bbWeight=0, funclet epilog, nogc, extend
+G_M30796_IG26: ; bbWeight=0, funclet epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -320,7 +323,7 @@ G_M30796_IG25: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 632, prolog size 56, PerfScore 961.25, instruction count 158, allocated bytes for code 632 (MethodHash=365a87b3) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)
+Total bytes of code 632, prolog size 56, PerfScore 967.25, instruction count 158, allocated bytes for code 632 (MethodHash=365a87b3) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)
...
+0 (0.00%) : 7468.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -79,12 +79,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M44603_IG12
+ cbnz w0, G_M44603_IG10
;; size=24 bbWeight=2 PerfScore 13.00
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- b G_M44603_IG10
- ;; size=4 bbWeight=4 PerfScore 4.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ b G_M44603_IG12
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -110,7 +112,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-Total bytes of code 156, prolog size 16, PerfScore 67.25, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 156, prolog size 16, PerfScore 63.75, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 42124.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
@@ -42,7 +42,7 @@
;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V32 tmp26 [V32,T36] ( 3, 6 ) int -> x26 "Inline return value spill temp"
; V33 tmp27 [V33,T37] ( 4, 8 ) int -> x0 "Inline stloc first use temp"
-; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
+; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> x22 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp30 [V36,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -66,7 +66,7 @@
; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> x28 class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount>
;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount>
;* V57 tmp51 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 "Inlining Arg"
+; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> x19 single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V60 tmp54 [V60,T60] ( 2, 2 ) int -> x21 "Single return block return value"
; V61 tmp55 [V61,T25] ( 6, 13 ) int -> x20 "V01.[000..004)"
@@ -110,7 +110,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [fp, #0x38] // [V01 arg1]
ldrb w0, [x19, #0x4F]
- cbnz w0, G_M55237_IG91
+ cbnz w0, G_M55237_IG92
bl <unknown method>
; gcr arg pop 0
sxtw w21, w0
@@ -120,7 +120,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x44]
cmp w21, w0
- beq G_M55237_IG92
+ beq G_M55237_IG93
add x22, x19, #80
; byrRegs +[x22]
mov x0, x22
@@ -143,10 +143,10 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {
ldr x0, [x0, #0x10]
ldr w1, [x0, #0xD0]
cmp w1, #3
- blt G_M55237_IG93
+ blt G_M55237_IG94
ldr x0, [x0, #0xD8]
ldr x0, [x0, #0x18]
- cbz x0, G_M55237_IG93
+ cbz x0, G_M55237_IG94
ldr x0, [x0]
; byrRegs +[x0]
add x23, x0, #16
@@ -234,7 +234,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=2080000 {x19 x25}, byrefRegs=C0
; gcrRegs +[x24]
ldr w0, [x24, #0x18]
cmp w0, #0
- bgt G_M55237_IG94
+ bgt G_M55237_IG95
ldr w1, [x19, #0x40]
cmp w21, w1
bne G_M55237_IG35
@@ -289,10 +289,10 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {
ldr x0, [x0, #0x10]
ldr w1, [x0, #0xD0]
cmp w1, #3
- blt G_M55237_IG95
+ blt G_M55237_IG96
ldr x0, [x0, #0xD8]
ldr x0, [x0, #0x18]
- cbz x0, G_M55237_IG95
+ cbz x0, G_M55237_IG96
ldr x0, [x0]
; byrRegs +[x0]
add x23, x0, #16
@@ -514,7 +514,7 @@ G_M55237_IG36: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
ldr w0, [x19, #0x48]
mov w1, #0xD1FFAB1E
cmp w0, w1
- blo G_M55237_IG88
+ blo G_M55237_IG84
cmn w20, #1
beq G_M55237_IG38
;; size=24 bbWeight=4 PerfScore 26.00
@@ -532,11 +532,11 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
sub w0, w0, w1
cmp w0, w20
ccmp w0, #0, nc, lt
- blt G_M55237_IG84
+ blt G_M55237_IG85
sub w26, w20, w0
;; size=28 bbWeight=2 PerfScore 12.00
G_M55237_IG40: ; bbWeight=2, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
- cbz w26, G_M55237_IG84
+ cbz w26, G_M55237_IG85
;; size=4 bbWeight=2 PerfScore 2.00
G_M55237_IG41: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C00000 {x22 x23}, byref, isz
cmp w25, #20
@@ -885,7 +885,7 @@ G_M55237_IG74: ; bbWeight=4, gcrefRegs=1080002 {x1 x19 x24}, byrefRegs=C0
; byrRegs -[x2]
; gcr arg pop 0
sxtw w21, w0
- cbz w21, G_M55237_IG86
+ cbz w21, G_M55237_IG87
ldr x0, [x24, #0x10]
ldr x26, [x19, #0x28]
cmp x0, x26
@@ -966,13 +966,55 @@ G_M55237_IG83: ; bbWeight=4, gcrefRegs=1080000 {x19 x24}, byrefRegs=C0000
; gcrRegs -[x28]
b G_M55237_IG36
;; size=4 bbWeight=4 PerfScore 4.00
-G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19 x24]
+G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x23]
+ ldr w0, [x19, #0x48]
+ add w0, w0, #1
+ str w0, [x19, #0x48]
+ ldr w0, [x24, #0x18]
+ add w0, w0, #1
+ str w0, [x24, #0x18]
+ b G_M55237_IG89
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
+ ; gcrRegs -[x19 x24]
+ ldr w0, [x22]
+ cbnz w0, G_M55237_IG86
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x1, #8
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 6.25
+G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+ stlr wzr, [x22]
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M55237_IG87: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x22]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M55237_IG88: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x27, x28, [sp, #0x80]
+ ldp x25, x26, [sp, #0x70]
+ ldp x23, x24, [sp, #0x60]
+ ldp x21, x22, [sp, #0x50]
+ ldp x19, x20, [sp, #0x40]
+ ldp fp, lr, [sp], #0x90
+ ret lr
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M55237_IG89: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ ; byrRegs +[x22]
mov x19, x22
; byrRegs +[x19]
ldr w0, [x19]
- cbnz w0, G_M55237_IG85
+ cbnz w0, G_M55237_IG90
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -987,56 +1029,11 @@ G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=400000 {x22}
; byrRegs -[x22]
; gcr arg pop 0
;; size=56 bbWeight=0.50 PerfScore 6.50
-G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- stlr wzr, [x19]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M55237_IG87: ; bbWeight=0.50, epilog, nogc, extend
- ldp x27, x28, [sp, #0x80]
- ldp x25, x26, [sp, #0x70]
- ldp x23, x24, [sp, #0x60]
- ldp x21, x22, [sp, #0x50]
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x90
- ret lr
- ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG88: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; gcrRegs +[x19 x24]
- ; byrRegs +[x22]
- ldr w0, [x19, #0x48]
- add w0, w0, #1
- str w0, [x19, #0x48]
- ldr w0, [x24, #0x18]
- add w0, w0, #1
- str w0, [x24, #0x18]
- mov x19, x22
- ; gcrRegs -[x19]
- ; byrRegs +[x19]
- ldr w0, [x19]
- cbnz w0, G_M55237_IG89
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x1, #8
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x24]
- ; byrRegs -[x22]
- ; gcr arg pop 0
- ;; size=80 bbWeight=0.50 PerfScore 11.00
-G_M55237_IG89: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stlr wzr, [x19]
uxtb w0, w21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG91: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x80]
ldp x25, x26, [sp, #0x70]
ldp x23, x24, [sp, #0x60]
@@ -1045,7 +1042,7 @@ G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x90
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; byrRegs -[x19]
mov x0, x19
@@ -1059,7 +1056,7 @@ G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -1099,7 +1096,7 @@ G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=88 bbWeight=0 PerfScore 0.00
-G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M55237_IG94: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x19]
; byrRegs +[x22]
mov w0, #3
@@ -1110,7 +1107,7 @@ G_M55237_IG93: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; byrRegs +[x23]
...
+20 (+3.91%) : 44123.dasm - System.String:Concat(System.String[]):System.String (Tier1)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T09] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T14] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T15] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T13] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T07] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -33,10 +33,10 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T19] ( 4, 5 ) ref -> x0 "Single return block return value"
; V24 tmp14 [V24,T17] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V25 cse0 [V25,T08] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V26 cse1 [V26,T04] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V25 cse0 [V25,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V26 cse1 [V26,T08] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V27 cse2 [V27,T06] ( 5, 40 ) int -> x27 "CSE - aggressive"
-; V28 cse3 [V28,T02] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
+; V28 cse3 [V28,T03] ( 10, 50 ) ref -> x0 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -52,37 +52,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG22
+ cbz x19, G_M46295_IG24
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG16
+ ble G_M46295_IG18
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG23
- cbz w21, G_M46295_IG17
+ bgt G_M46295_IG25
+ cbz w21, G_M46295_IG19
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -91,21 +96,27 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG17
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG12
+ cbz x26, G_M46295_IG14
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG12
+ cbz w27, G_M46295_IG14
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG14
- cbnz x23, G_M46295_IG10
+ blt G_M46295_IG16
+ cbnz x23, G_M46295_IG12
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -119,11 +130,11 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=64 bbWeight=8 PerfScore 120.00
-G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w0, [x23, #0x08]
sub w0, w0, w24
cmp w0, w27
- bge G_M46295_IG11
+ bge G_M46295_IG13
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -137,7 +148,7 @@ G_M46295_IG10: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcrRegs -[x1]
; gcr arg pop 0
;; size=52 bbWeight=8 PerfScore 100.00
-G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
+G_M46295_IG13: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref
add x2, x23, #12
; byrRegs +[x2]
sbfiz x0, x24, #1, #32
@@ -158,21 +169,21 @@ G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=48 bbWeight=8 PerfScore 80.00
-G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG14: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG15
+ b G_M46295_IG17
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG16: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG17: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG20
+ beq G_M46295_IG22
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -186,28 +197,28 @@ G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG18
+ cbz w20, G_M46295_IG20
cmp w20, #0
- bls G_M46295_IG21
+ bls G_M46295_IG23
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG19
+ cbnz x0, G_M46295_IG21
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG21: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -217,18 +228,18 @@ G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG19
+ b G_M46295_IG21
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -245,7 +256,7 @@ G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -255,7 +266,7 @@ G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 512, prolog size 32, PerfScore 659.00, instruction count 128, allocated bytes for code 512 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 532, prolog size 32, PerfScore 671.00, instruction count 133, allocated bytes for code 532 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -266,7 +277,7 @@ Unwind Info:
E bit : 0
...
+40 (+4.29%) : 47252.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.BigStruct]:IntroSort(System.Span
1[System.Collections.BigStruct],int) (Tier1)
@@ -9,8 +9,8 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.BigStruct]>
-; V01 arg1 [V01,T03] ( 7, 19 ) int -> x20
-; V02 loc0 [V02,T01] ( 15, 29 ) int -> x22
+; V01 arg1 [V01,T04] ( 7, 19 ) int -> x20
+; V02 loc0 [V02,T00] ( 16, 33 ) int -> x22
; V03 loc1 [V03,T07] ( 3, 12 ) int -> x23
; V04 loc2 [V04,T14] ( 9, 4.50) byref -> x21 single-def
; V05 loc3 [V05,T15] ( 9, 4.50) byref -> x22 single-def
@@ -72,7 +72,7 @@
;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V62 tmp54 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V64 tmp56 [V64,T00] ( 4, 32 ) int -> x22 "Inlining Arg"
+; V64 tmp56 [V64,T01] ( 4, 32 ) int -> x22 "Inlining Arg"
;* V65 tmp57 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Collections.BigStruct]>
; V66 tmp58 [V66,T05] ( 2, 16 ) byref -> x24 "Inlining Arg"
;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -99,7 +99,7 @@
; V88 tmp80 [V88,T27] ( 3, 1.50) int -> x0 "V29.[012..016)"
; V89 tmp81 [V89,T28] ( 3, 1.50) int -> x0 "V38.[012..016)"
; V90 tmp82 [V90,T29] ( 3, 1.50) int -> x0 "V47.[012..016)"
-; V91 cse0 [V91,T04] ( 24, 16.50) ref -> x1 multi-def "CSE - aggressive"
+; V91 cse0 [V91,T03] ( 27, 22.50) ref -> x1 multi-def "CSE - aggressive"
; V92 cse1 [V92,T17] ( 6, 3 ) int -> x20 multi-def "CSE - moderate"
; V93 cse2 [V93,T30] ( 3, 1.50) int -> x1 "CSE - moderate"
; V94 cse3 [V94,T31] ( 3, 1.50) int -> x1 "CSE - moderate"
@@ -153,15 +153,31 @@ G_M52646_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
G_M52646_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w22, w21
cmp w21, #1
- ble G_M52646_IG22
+ ble G_M52646_IG24
;; size=12 bbWeight=1 PerfScore 2.00
G_M52646_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, #16
- ble G_M52646_IG11
- cbz w20, G_M52646_IG21
+ ble G_M52646_IG13
+ cbz w20, G_M52646_IG23
sub w20, w20, #1
cmp w22, w21
- bhi G_M52646_IG24
+ bhi G_M52646_IG26
+ tbz w22, #31, G_M52646_IG09
+ ;; size=28 bbWeight=4 PerfScore 22.00
+G_M52646_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ movz x1, #8
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x1
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #191 LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=2 PerfScore 15.00
+G_M52646_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w1, w22
mov x0, x19
; byrRegs +[x0]
@@ -178,13 +194,13 @@ G_M52646_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
add x1, x0, w22, UXTW
mov w2, w21
cmp x1, x2
- bhi G_M52646_IG24
+ bhi G_M52646_IG26
lsl x0, x0, #5
add x24, x19, x0
; byrRegs +[x24]
- tbz w22, #31, G_M52646_IG09
- ;; size=96 bbWeight=4 PerfScore 74.00
-G_M52646_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ tbz w22, #31, G_M52646_IG11
+ ;; size=72 bbWeight=4 PerfScore 56.00
+G_M52646_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -197,7 +213,7 @@ G_M52646_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=2 PerfScore 15.00
-G_M52646_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M52646_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
mov x0, x24
; byrRegs +[x0]
sxtw w1, w22
@@ -212,14 +228,14 @@ G_M52646_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2
cmp w22, #1
bgt G_M52646_IG07
;; size=44 bbWeight=4 PerfScore 36.00
-G_M52646_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52646_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M52646_IG22
+ b G_M52646_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M52646_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M52646_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
cmp w22, #2
- bne G_M52646_IG13
+ bne G_M52646_IG15
add x22, x19, #32
; byrRegs +[x22]
ldrsb wzr, [x19]
@@ -228,52 +244,9 @@ G_M52646_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
; byrRegs +[x1]
ldr w20, [x1]
cmp w20, w0
- blt G_M52646_IG22
+ blt G_M52646_IG24
cmp w20, w0
- ble G_M52646_IG22
- cmp x19, x22
- bne G_M52646_IG12
- movz x1, #8
- ; byrRegs -[x1]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1
- ; gcrRegs +[x0]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #191 LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0]
- ;; size=88 bbWeight=0.50 PerfScore 11.75
-G_M52646_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
- ldp q16, q17, [x19]
- stp q16, q17, [fp, #0x70]
- ldp q16, q17, [x22]
- stp q16, q17, [x19]
- ldp q16, q17, [fp, #0x70]
- stp q16, q17, [x22]
- b G_M52646_IG22
- ;; size=28 bbWeight=0.50 PerfScore 6.00
-G_M52646_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x22]
- cmp w22, #3
- bne G_M52646_IG19
- cmp w21, #2
- bls G_M52646_IG23
- add x21, x19, #64
- ; byrRegs +[x21]
- add x22, x19, #32
- ; byrRegs +[x22]
- ldrsb wzr, [x19]
- ldr w0, [x22, #0x0C]
- add x1, x19, #12
- ; byrRegs +[x1]
- ldr w20, [x1]
- cmp w20, w0
- blt G_M52646_IG15
- cmp w20, w0
- ble G_M52646_IG15
+ ble G_M52646_IG24
cmp x19, x22
bne G_M52646_IG14
movz x1, #8
@@ -288,28 +261,39 @@ G_M52646_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
- ;; size=100 bbWeight=0.50 PerfScore 12.75
-G_M52646_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+ ;; size=88 bbWeight=0.50 PerfScore 11.75
+G_M52646_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
ldp q16, q17, [x19]
- stp q16, q17, [fp, #0x50]
+ stp q16, q17, [fp, #0x70]
ldp q16, q17, [x22]
stp q16, q17, [x19]
- ldp q16, q17, [fp, #0x50]
+ ldp q16, q17, [fp, #0x70]
stp q16, q17, [x22]
- ;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M52646_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
- ldr w0, [x21, #0x0C]
+ b G_M52646_IG24
+ ;; size=28 bbWeight=0.50 PerfScore 6.00
+G_M52646_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ; byrRegs -[x22]
+ cmp w22, #3
+ bne G_M52646_IG21
+ cmp w21, #2
+ bls G_M52646_IG25
+ add x21, x19, #64
+ ; byrRegs +[x21]
+ add x22, x19, #32
+ ; byrRegs +[x22]
+ ldrsb wzr, [x19]
+ ldr w0, [x22, #0x0C]
add x1, x19, #12
; byrRegs +[x1]
- ldr w1, [x1]
- ; byrRegs -[x1]
- cmp w1, w0
+ ldr w20, [x1]
+ cmp w20, w0
blt G_M52646_IG17
- cmp w1, w0
+ cmp w20, w0
ble G_M52646_IG17
- cmp x19, x21
+ cmp x19, x22
bne G_M52646_IG16
movz x1, #8
+ ; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
mov x0, x1
@@ -320,27 +304,26 @@ G_M52646_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
- ;; size=72 bbWeight=0.50 PerfScore 9.25
+ ;; size=100 bbWeight=0.50 PerfScore 12.75
G_M52646_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp q16, q17, [x19]
- stp q16, q17, [fp, #0x30]
- ldp q16, q17, [x21]
+ stp q16, q17, [fp, #0x50]
+ ldp q16, q17, [x22]
stp q16, q17, [x19]
- ldp q16, q17, [fp, #0x30]
- stp q16, q17, [x21]
+ ldp q16, q17, [fp, #0x50]
+ stp q16, q17, [x22]
;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M52646_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
- ; byrRegs -[x19]
+G_M52646_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
ldr w0, [x21, #0x0C]
- add x1, x22, #12
+ add x1, x19, #12
; byrRegs +[x1]
ldr w1, [x1]
; byrRegs -[x1]
cmp w1, w0
- blt G_M52646_IG22
+ blt G_M52646_IG19
cmp w1, w0
- ble G_M52646_IG22
...
coreclr_tests.run.windows.arm64.checked.mch
-28 (-2.82%) : 526241.dasm - Test_arrayDim:TestEntryPoint() (FullOpts)
@@ -16,7 +16,7 @@
; V05 tmp2 [V05,T01] ( 11, 94.52) ref -> x25 class-hnd exact "Inlining Arg" <System.String>
; V06 tmp3 [V06,T06] ( 8, 30.36) int -> x27 "Inline stloc first use temp"
; V07 tmp4 [V07,T14] ( 6, 22.77) int -> x0 "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 12, 38.10) ref -> [fp+0x18] class-hnd exact "Inline stloc first use temp" <System.String>
+; V08 tmp5 [V08,T04] ( 12, 38.10) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.String>
;* V09 tmp6 [V09,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -25,20 +25,20 @@
;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp14 [V17,T07] ( 4, 30.36) byref -> registers "Inlining Arg"
-; V18 tmp15 [V18,T08] ( 4, 30.36) byref -> registers "Inlining Arg"
+; V17 tmp14 [V17,T07] ( 4, 30.36) byref -> x0 "Inlining Arg"
+; V18 tmp15 [V18,T08] ( 4, 30.36) byref -> x1 "Inlining Arg"
; V19 tmp16 [V19,T11] ( 4, 30.36) long -> x26 "Inlining Arg"
;* V20 tmp17 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V24 tmp21 [V24,T09] ( 4, 30.36) byref -> x25 "Inlining Arg"
-; V25 tmp22 [V25,T10] ( 4, 30.36) byref -> x28 "Inlining Arg"
+; V24 tmp21 [V24,T09] ( 4, 30.36) byref -> registers "Inlining Arg"
+; V25 tmp22 [V25,T10] ( 4, 30.36) byref -> x25 "Inlining Arg"
; V26 tmp23 [V26,T17] ( 2, 16 ) ref -> x1 "argument with side effect"
; V27 cse0 [V27,T02] ( 18, 68.32) ref -> x1 multi-def "CSE - aggressive"
; V28 cse1 [V28,T05] ( 5, 37.28) int -> x26 "CSE - aggressive"
-; V29 cse2 [V29,T16] ( 3, 22.54) int -> x28 "CSE - aggressive"
-; V30 cse3 [V30,T15] ( 3, 22.54) byref -> [fp+0x10] spill-single-def "CSE - aggressive"
+; V29 cse2 [V29,T16] ( 3, 22.54) int -> x23 "CSE - aggressive"
+; V30 cse3 [V30,T15] ( 3, 22.54) byref -> [fp+0x18] spill-single-def "CSE - aggressive"
; V31 cse4 [V31,T20] ( 2, 5 ) ref -> x20 hoist "CSE - aggressive"
; V32 cse5 [V32,T21] ( 2, 5 ) long -> x21 hoist "CSE - aggressive"
; V33 cse6 [V33,T18] ( 4, 10.16) int -> x23 "CSE - aggressive"
@@ -130,36 +130,37 @@ G_M49663_IG07: ; bbWeight=7.51, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
sxtw w27, w26
add w0, w27, #1
tbnz w0, #31, G_M49663_IG27
+ bl <unknown method>
+ ; gcrRegs +[x0]
+ mov x28, x0
+ ; gcrRegs +[x28]
+ cbnz x28, G_M49663_IG10
b G_M49663_IG09
- ;; size=16 bbWeight=7.51 PerfScore 22.54
+ ;; size=28 bbWeight=7.51 PerfScore 41.33
G_M49663_IG08: ; bbWeight=7.92, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x0 x25 x28]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
b G_M49663_IG13
;; size=16 bbWeight=7.92 PerfScore 19.80
-G_M49663_IG09: ; bbWeight=7.51, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x25]
- bl <unknown method>
- ; gcrRegs +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
- cbnz x23, G_M49663_IG10
+G_M49663_IG09: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x25 x28]
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
- ;; size=48 bbWeight=7.51 PerfScore 75.15
-G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- ldr w28, [x23, #0x08]
- cmp w28, w26
+ ;; size=36 bbWeight=7.51 PerfScore 56.36
+G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz
+ ldr w23, [x28, #0x08]
+ cmp w23, w26
bge G_M49663_IG11
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
@@ -173,10 +174,10 @@ G_M49663_IG10: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre
blr x2
; gcrRegs -[x0]
;; size=48 bbWeight=7.51 PerfScore 90.18
-G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- add x3, x23, #12
+G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz
+ add x3, x28, #12
; byrRegs +[x3]
- str x3, [fp, #0x10] // [V30 cse3]
+ str x3, [fp, #0x18] // [V30 cse3]
; GC ptr vars +{V30}
mov x0, x3
; byrRegs +[x0]
@@ -191,7 +192,7 @@ G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre
blr x4
; gcrRegs -[x25]
; byrRegs -[x0-x1 x3]
- sub w0, w28, w27
+ sub w0, w23, w27
cmp w0, #0
bgt G_M49663_IG12
movz x1, #8
@@ -206,22 +207,24 @@ G_M49663_IG11: ; bbWeight=7.51, gcrefRegs=2D00000 {x20 x22 x23 x25}, byre
blr x2
; gcrRegs -[x0]
;; size=92 bbWeight=7.51 PerfScore 142.78
-G_M49663_IG12: ; bbWeight=7.51, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
+G_M49663_IG12: ; bbWeight=7.51, gcrefRegs=10500000 {x20 x22 x28}, byrefRegs=0000 {}, byref
sbfiz x0, x27, #1, #32
- ldr x25, [fp, #0x10] // [V30 cse3]
+ ldr x25, [fp, #0x18] // [V30 cse3]
; byrRegs +[x25]
- add x25, x25, x0
- movz x28, #0xD1FFAB1E
- movk x28, #0xD1FFAB1E LSL #16
- movk x28, #0xD1FFAB1E LSL #32
- ldrh w0, [x28]
- strh w0, [x25]
- mov x0, x23
+ add x23, x25, x0
+ ; byrRegs +[x23]
+ movz x25, #0xD1FFAB1E
+ ; byrRegs -[x25]
+ movk x25, #0xD1FFAB1E LSL #16
+ movk x25, #0xD1FFAB1E LSL #32
+ ldrh w0, [x25]
+ strh w0, [x23]
+ mov x0, x28
; gcrRegs +[x0]
;; size=36 bbWeight=7.51 PerfScore 71.39
G_M49663_IG13: ; bbWeight=15.84, gcVars=0000000000000000 {}, gcrefRegs=500001 {x0 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x23]
- ; byrRegs -[x25]
+ ; gcrRegs -[x28]
+ ; byrRegs -[x23]
; GC ptr vars -{V30}
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -263,111 +266,97 @@ G_M49663_IG17: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
ldr w27, [x25, #0x08]
add w0, w27, #1
tbnz w0, #31, G_M49663_IG27
+ bl <unknown method>
+ ; gcrRegs +[x0]
+ mov x28, x0
+ ; gcrRegs +[x28]
+ cbnz x28, G_M49663_IG20
b G_M49663_IG19
- ;; size=16 bbWeight=0.08 PerfScore 0.42
+ ;; size=28 bbWeight=0.08 PerfScore 0.61
G_M49663_IG18: ; bbWeight=0.08, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x0 x25 x28]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
b G_M49663_IG23
;; size=16 bbWeight=0.08 PerfScore 0.20
-G_M49663_IG19: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x25]
- bl <unknown method>
- ; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V08 tmp5]
- ; GC ptr vars +{V08}
- cbnz x0, G_M49663_IG20
+G_M49663_IG19: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x25 x28]
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
- ;; size=48 bbWeight=0.08 PerfScore 0.80
-G_M49663_IG20: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ldr w1, [x25, #0x08]
- ldr x0, [fp, #0x18] // [V08 tmp5]
- ; gcrRegs +[x0]
- ldr w2, [x0, #0x08]
- cmp w1, w2
+ ;; size=36 bbWeight=0.08 PerfScore 0.57
+G_M49663_IG20: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x25, #0x08]
+ ldr w1, [x28, #0x08]
+ cmp w0, w1
ble G_M49663_IG21
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
mov x0, x1
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
- ;; size=56 bbWeight=0.08 PerfScore 1.29
-G_M49663_IG21: ; bbWeight=0.08, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V08 tmp5]
- ; gcrRegs +[x0]
- add x2, x0, #12
- ; byrRegs +[x2]
- mov x1, x2
+ ;; size=52 bbWeight=0.08 PerfScore 1.14
+G_M49663_IG21: ; bbWeight=0.08, gcrefRegs=12500000 {x20 x22 x25 x28}, byrefRegs=0000 {}, byref, isz
+ add x0, x28, #12
+ ; byrRegs +[x0]
+ add x1, x25, #12
; byrRegs +[x1]
- add x2, x25, #12
- mov x3, x2
- ; byrRegs +[x3]
ldr w26, [x25, #0x08]
lsl x2, x26, #1
- ; byrRegs -[x2]
- mov x0, x1
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- mov x1, x3
movz x3, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x3]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; gcrRegs -[x25]
; byrRegs -[x0-x1]
- ldr x0, [fp, #0x18] // [V08 tmp5]
- ; gcrRegs +[x0]
- ldr w1, [x0, #0x08]
- sub w1, w1, w27
- cmp w1, #0
+ ldr w0, [x28, #0x08]
+ sub w0, w0, w27
+ cmp w0, #0
bgt G_M49663_IG22
...
-8 (-2.22%) : 304013.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
@@ -38,12 +38,12 @@ G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp w20, w21, [fp, #0x58]
;; size=36 bbWeight=1 PerfScore 12.50
G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG11
+ b G_M3612_IG09
;; size=4 bbWeight=1 PerfScore 1.00
G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
cmp w23, w0
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x19, #16
; byrRegs +[x0]
ldr x22, [x0, w23, UXTW #3]
@@ -59,12 +59,12 @@ G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000
G_M3612_IG05: ; bbWeight=10.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
cmp w20, w0
- bhs G_M3612_IG18
+ bhs G_M3612_IG17
ldr x0, [x22, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M3612_IG15
+ bhs G_M3612_IG14
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -96,28 +96,15 @@ G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000
G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
sub w21, w0, #2
- tbz w21, #31, G_M3612_IG10
+ tbnz w21, #31, G_M3612_IG13
;; size=12 bbWeight=0.52 PerfScore 2.33
-G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22]
- add w23, w23, #1
- ldr w0, [x19, #0x08]
- cmp w0, w23
- ble G_M3612_IG16
- b G_M3612_IG03
- ;; size=20 bbWeight=0.52 PerfScore 3.11
-G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr wzr, [x19, #0x08]
- b G_M3612_IG08
- ;; size=8 bbWeight=0.49 PerfScore 1.97
-G_M3612_IG10: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x22]
+G_M3612_IG08: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
sub w20, w21, #1
;; size=4 bbWeight=9.69 PerfScore 4.84
-G_M3612_IG11: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M3612_IG13
+G_M3612_IG09: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w20, #31, G_M3612_IG11
;; size=4 bbWeight=9.69 PerfScore 9.69
-G_M3612_IG12: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG10: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
mov w1, w20
@@ -129,24 +116,31 @@ G_M3612_IG12: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=000
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M3612_IG17
+ cbnz w0, G_M3612_IG16
sub w20, w20, #1
- tbz w20, #31, G_M3612_IG12
+ tbz w20, #31, G_M3612_IG10
;; size=44 bbWeight=90.31 PerfScore 857.99
-G_M3612_IG13: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG11: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1
- tbz w21, #31, G_M3612_IG10
+ tbz w21, #31, G_M3612_IG08
;; size=8 bbWeight=9.69 PerfScore 14.53
-G_M3612_IG14: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3612_IG12: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M3612_IG09
- ;; size=4 bbWeight=0.49 PerfScore 0.49
-G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr wzr, [x19, #0x08]
+ ;; size=4 bbWeight=0.49 PerfScore 1.48
+G_M3612_IG13: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ add w23, w23, #1
+ ldr w0, [x19, #0x08]
+ cmp w0, w23
+ ble G_M3612_IG15
+ b G_M3612_IG03
+ ;; size=20 bbWeight=0.52 PerfScore 3.11
+G_M3612_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3612_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -154,7 +148,7 @@ G_M3612_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, sp, #64
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M3612_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19 x22]
mov x0, x22
; gcrRegs +[x0]
@@ -167,9 +161,9 @@ G_M3612_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M3612_IG13
+ b G_M3612_IG11
;; size=36 bbWeight=0 PerfScore 0.00
-G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3612_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
@@ -180,7 +174,7 @@ G_M3612_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 360, prolog size 36, PerfScore 1272.15, instruction count 90, allocated bytes for code 360 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
+Total bytes of code 352, prolog size 36, PerfScore 1271.17, instruction count 88, allocated bytes for code 352 (MethodHash=3e5ff1e3) for method Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -191,7 +185,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 360 (0x000168)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-1.45%) : 407740.dasm - Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser:ParseFields(int,int):Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo:this (FullOpts)
@@ -10,30 +10,30 @@
;
; V00 this [V00,T03] ( 10, 22 ) ref -> [fp+0xD0] this class-hnd single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser>
; V01 arg1 [V01,T36] ( 4, 8 ) int -> x21 single-def
-; V02 arg2 [V02,T33] ( 6, 9 ) int -> x20 single-def
-; V03 loc0 [V03,T08] ( 10, 21 ) ushort -> x23
-; V04 loc1 [V04,T06] ( 9, 22 ) ref -> [fp+0xC8] class-hnd exact spill-single-def <<unknown class>>
+; V02 arg2 [V02,T34] ( 6, 9 ) int -> x20 single-def
+; V03 loc0 [V03,T09] ( 10, 21 ) ushort -> x23
+; V04 loc1 [V04,T07] ( 9, 22 ) ref -> [fp+0xC8] class-hnd exact spill-single-def <<unknown class>>
; V05 loc2 [V05,T02] ( 11, 28 ) ref -> [fp+0xC0] class-hnd exact spill-single-def <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch]>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
; V07 loc4 [V07,T11] ( 6, 19 ) int -> x26
; V08 loc5 [V08 ] ( 23, 52 ) struct (24) [fp+0x138] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch>
; V09 loc6 [V09,T00] ( 17, 40.50) long -> x27
-; V10 loc7 [V10,T09] ( 8, 20.50) ref -> [fp+0xB8] class-hnd <System.String>
+; V10 loc7 [V10,T06] ( 8, 22.50) ref -> [fp+0xB8] class-hnd <System.String>
; V11 loc8 [V11,T17] ( 6, 14 ) ushort -> [fp+0x134]
; V12 loc9 [V12,T38] ( 3, 10 ) ushort -> x0
-; V13 loc10 [V13,T73] ( 2, 4 ) int -> x2
+; V13 loc10 [V13,T74] ( 2, 4 ) int -> x2
; V14 loc11 [V14,T59] ( 3, 6 ) ref -> x0 class-hnd <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
; V15 loc12 [V15,T60] ( 3, 6 ) ref -> [fp+0xB0] class-hnd exact spill-single-def <System.String>
; V16 loc13 [V16 ] ( 3, 6 ) int -> [fp+0x128] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V17 loc14 [V17,T19] ( 6, 11.96) long -> [fp+0x120] spill-single-def
+; V17 loc14 [V17,T21] ( 6, 11.96) long -> [fp+0x120] spill-single-def
;* V18 loc15 [V18,T94] ( 0, 0 ) long -> zero-ref
-; V19 loc16 [V19,T74] ( 2, 4 ) int -> x0
-; V20 loc17 [V20,T41] ( 4, 8 ) ref -> [fp+0xA8] class-hnd exact spill-single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser+<>c__DisplayClass2_0>
+; V19 loc16 [V19,T75] ( 2, 4 ) int -> x0
+; V20 loc17 [V20,T42] ( 4, 8 ) ref -> [fp+0xA8] class-hnd exact spill-single-def <Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser+TdhEventParser+<>c__DisplayClass2_0>
;* V21 loc18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Func`1[System.Collections.Generic.IDictionary`2[long,System.String]]>
-; V22 loc19 [V22,T45] ( 4, 8 ) ushort -> x23
-; V23 loc20 [V23,T46] ( 4, 8 ) ushort -> x27
-; V24 loc21 [V24,T34] ( 5, 10 ) ushort -> [fp+0x11C]
-; V25 loc22 [V25,T20] ( 6, 12 ) int -> x23
+; V22 loc19 [V22,T46] ( 4, 8 ) ushort -> x23
+; V23 loc20 [V23,T47] ( 4, 8 ) ushort -> x27
+; V24 loc21 [V24,T35] ( 5, 10 ) ushort -> [fp+0x11C]
+; V25 loc22 [V25,T22] ( 6, 12 ) int -> x23
;# V26 OutArgs [V26 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V27 tmp1 [V27,T61] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V28 tmp2 [V28,T62] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch]>
@@ -46,22 +46,22 @@
; V35 tmp9 [V35,T56] ( 7, 7 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>>
; V36 tmp10 [V36,T88] ( 3, 3 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
; V37 tmp11 [V37,T89] ( 2, 2 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V38 tmp12 [V38,T42] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
+; V38 tmp12 [V38,T43] ( 4, 8 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchClassInfo>
; V39 tmp13 [V39,T04] ( 3, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Regex>
-; V40 tmp14 [V40,T22] ( 4, 12 ) ref -> x1
+; V40 tmp14 [V40,T19] ( 4, 14 ) ref -> x1
; V41 tmp15 [V41,T65] ( 2, 6 ) ref -> x2
;* V42 tmp16 [V42,T84] ( 0, 0 ) ref -> zero-ref
;* V43 tmp17 [V43,T87] ( 0, 0 ) int -> zero-ref
-; V44 tmp18 [V44,T01] ( 10, 32 ) ref -> registers
-; V45 tmp19 [V45,T35] ( 4, 10 ) ref -> [fp+0xA0]
-;* V46 tmp20 [V46,T67] ( 0, 0 ) ref -> zero-ref
-;* V47 tmp21 [V47,T75] ( 0, 0 ) int -> zero-ref
-; V48 tmp22 [V48,T47] ( 3, 8 ) int -> [fp+0x118]
-; V49 tmp23 [V49,T16] ( 2, 16 ) ref -> x1 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
-; V50 tmp24 [V50,T07] ( 9, 22 ) ref -> [fp+0x98]
-; V51 tmp25 [V51,T24] ( 3, 12 ) ref -> [fp+0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
-; V52 tmp26 [V52,T25] ( 3, 12 ) byref -> [fp+0x88] spill-single-def "finalizable newobj spill"
-; V53 tmp27 [V53,T49] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
+; V44 tmp18 [V44,T01] ( 10, 34 ) ref -> [fp+0xA0]
+; V45 tmp19 [V45,T20] ( 4, 14 ) ref -> [fp+0x98]
+;* V46 tmp20 [V46,T66] ( 0, 0 ) ref -> zero-ref
+;* V47 tmp21 [V47,T67] ( 0, 0 ) int -> zero-ref
+; V48 tmp22 [V48,T39] ( 3, 10 ) int -> [fp+0x118]
+; V49 tmp23 [V49,T16] ( 2, 16 ) ref -> x28 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
+; V50 tmp24 [V50,T08] ( 9, 22 ) ref -> registers
+; V51 tmp25 [V51,T25] ( 3, 12 ) ref -> [fp+0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
+; V52 tmp26 [V52,T26] ( 3, 12 ) byref -> x28 "finalizable newobj spill"
+; V53 tmp27 [V53,T49] ( 2, 8 ) ref -> x28 class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]>
;* V54 tmp28 [V54 ] ( 0, 0 ) ref -> zero-ref
;* V55 tmp29 [V55,T91] ( 0, 0 ) ref -> zero-ref
;* V56 tmp30 [V56,T95] ( 0, 0 ) int -> zero-ref
@@ -73,26 +73,26 @@
; V62 tmp36 [V62,T58] ( 4, 6 ) long -> x0 "Inline stloc first use temp"
;* V63 tmp37 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
;* V64 tmp38 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
-; V65 tmp39 [V65,T12] ( 6, 18 ) ref -> [fp+0x80] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V66 tmp40 [V66,T30] ( 2, 12 ) int -> [fp+0x114] spill-single-def "Inlining Arg"
-; V67 tmp41 [V67,T28] ( 2, 12 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
-; V68 tmp42 [V68,T31] ( 2, 12 ) int -> [fp+0x110] spill-single-def "Inlining Arg"
-; V69 tmp43 [V69,T29] ( 2, 12 ) ref -> [fp+0x70] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V65 tmp39 [V65,T12] ( 6, 18 ) ref -> [fp+0x88] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
+; V66 tmp40 [V66,T31] ( 2, 12 ) int -> [fp+0x114] spill-single-def "Inlining Arg"
+; V67 tmp41 [V67,T29] ( 2, 12 ) ref -> [fp+0x80] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V68 tmp42 [V68,T32] ( 2, 12 ) int -> [fp+0x110] spill-single-def "Inlining Arg"
+; V69 tmp43 [V69,T30] ( 2, 12 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
;* V70 tmp44 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V71 tmp45 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
; V72 tmp46 [V72,T57] ( 4, 6 ) ref -> registers class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
-; V73 tmp47 [V73,T21] ( 5, 12 ) long -> x0 "Inline stloc first use temp"
+; V73 tmp47 [V73,T23] ( 5, 12 ) long -> x0 "Inline stloc first use temp"
; V74 tmp48 [V74,T50] ( 2, 8 ) ref -> x0 class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement>
;* V75 tmp49 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
;* V76 tmp50 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement>
;* V77 tmp51 [V77 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V78 tmp52 [V78,T98] ( 3, 0 ) ref -> [fp+0x68] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
+; V78 tmp52 [V78,T98] ( 3, 0 ) ref -> [fp+0x70] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
;* V79 tmp53 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V80 tmp54 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V81 tmp55 [V81,T99] ( 2, 0 ) ref -> x0 class-hnd "dup spill" <System.Object>
; V82 tmp56 [V82,T97] ( 4, 0 ) ref -> x8
;* V83 tmp57 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexReplacement>
-; V84 tmp58 [V84,T66] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V84 tmp58 [V84,T68] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V85 tmp59 [V85,T05] ( 6, 22.63) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
; V86 tmp60 [V86,T51] ( 2, 8 ) byref -> x0 "impAppendStmt"
;* V87 tmp61 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -111,13 +111,13 @@
; V100 tmp74 [V100,T15] ( 4, 16 ) ref -> x0 class-hnd exact "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetchArrayInfo>
;* V101 tmp75 [V101 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch>
; V102 tmp76 [V102,T37] ( 3, 10 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch[]>
-; V103 tmp77 [V103,T23] ( 4, 12 ) int -> x13 "Inline stloc first use temp"
+; V103 tmp77 [V103,T24] ( 4, 12 ) int -> x13 "Inline stloc first use temp"
; V104 tmp78 [V104 ] ( 3, 16 ) struct (24) [fp+0xE8] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+PayloadFetch>
-; V105 tmp79 [V105,T40] ( 3, 9.80) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V106 tmp80 [V106,T32] ( 4, 11.61) int -> x15 "Inline stloc first use temp"
-; V107 tmp81 [V107,T68] ( 2, 4 ) ref -> x0 single-def "Single return block return value"
-; V108 FramesRoot [V108,T39] ( 6, 9.83) long -> x22 "Pinvoke FrameListRoot"
-; V109 PInvokeFrame[V109 ] ( 8, 11.83) struct (72) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V105 tmp79 [V105,T41] ( 3, 9.80) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V106 tmp80 [V106,T33] ( 4, 11.61) int -> x15 "Inline stloc first use temp"
+; V107 tmp81 [V107,T69] ( 2, 4 ) ref -> x0 single-def "Single return block return value"
+; V108 FramesRoot [V108,T40] ( 6, 9.83) long -> x22 "Pinvoke FrameListRoot"
+; V109 PInvokeFrame[V109 ] ( 8, 11.83) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V110 tmp84 [V110 ] ( 7, 18 ) ref -> [fp+0x138] do-not-enreg[X] addr-exposed "field V08.Type (fldOffset=0x0)" P-DEP
; V111 tmp85 [V111 ] ( 8, 20 ) ref -> [fp+0x140] do-not-enreg[X] addr-exposed "field V08.info (fldOffset=0x8)" P-DEP
; V112 tmp86 [V112 ] ( 7, 18 ) ushort -> [fp+0x148] do-not-enreg[X] addr-exposed "field V08.Offset (fldOffset=0x10)" P-DEP
@@ -135,27 +135,27 @@
;* V124 tmp98 [V124 ] ( 0, 0 ) ushort -> zero-ref "field V31.Offset (fldOffset=0x10)" P-INDEP
; V125 tmp99 [V125,T78] ( 2, 4 ) ushort -> x0 "field V31.Size (fldOffset=0x12)" P-INDEP
;* V126 tmp100 [V126,T92] ( 0, 0 ) ref -> zero-ref "field V92.Type (fldOffset=0x0)" P-INDEP
-; V127 tmp101 [V127,T69] ( 2, 4 ) ref -> x0 "field V92.info (fldOffset=0x8)" P-INDEP
+; V127 tmp101 [V127,T70] ( 2, 4 ) ref -> x0 "field V92.info (fldOffset=0x8)" P-INDEP
; V128 tmp102 [V128,T79] ( 2, 4 ) ushort -> x3 "field V92.Offset (fldOffset=0x10)" P-INDEP
;* V129 tmp103 [V129,T96] ( 0, 0 ) ushort -> zero-ref "field V92.Size (fldOffset=0x12)" P-INDEP
;* V130 tmp104 [V130,T93] ( 0, 0 ) ref -> zero-ref "field V99.Type (fldOffset=0x0)" P-INDEP
-; V131 tmp105 [V131,T70] ( 2, 4 ) ref -> x0 "field V99.info (fldOffset=0x8)" P-INDEP
+; V131 tmp105 [V131,T71] ( 2, 4 ) ref -> x0 "field V99.info (fldOffset=0x8)" P-INDEP
; V132 tmp106 [V132,T80] ( 2, 4 ) ushort -> [fp+0xE4] spill-single-def "field V99.Offset (fldOffset=0x10)" P-INDEP
; V133 tmp107 [V133,T81] ( 2, 4 ) ushort -> x23 "field V99.Size (fldOffset=0x12)" P-INDEP
-; V134 tmp108 [V134,T71] ( 2, 4 ) ref -> [fp+0x60] spill-single-def "V101.[000..008)"
-; V135 tmp109 [V135,T72] ( 2, 4 ) ref -> [fp+0x58] spill-single-def "V101.[008..016)"
+; V134 tmp108 [V134,T72] ( 2, 4 ) ref -> [fp+0x68] spill-single-def "V101.[000..008)"
+; V135 tmp109 [V135,T73] ( 2, 4 ) ref -> [fp+0x60] spill-single-def "V101.[008..016)"
; V136 tmp110 [V136,T82] ( 2, 4 ) ushort -> [fp+0xE0] spill-single-def "V101.[016..018)"
; V137 tmp111 [V137,T83] ( 2, 4 ) ushort -> [fp+0xDC] spill-single-def "V101.[018..020)"
; V138 tmp112 [V138,T10] ( 5, 20 ) byref -> x13 "Spilling address for field-by-field copy"
-; V139 tmp113 [V139,T26] ( 3, 12 ) ref -> x0 "arr expr"
+; V139 tmp113 [V139,T27] ( 3, 12 ) ref -> x0 "arr expr"
;* V140 tmp114 [V140,T85] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V141 tmp115 [V141,T86] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V142 cse0 [V142,T43] ( 4, 8 ) byref -> x0 "CSE - moderate"
-; V143 cse1 [V143,T44] ( 2, 4 ) ref -> x0 "CSE - moderate"
+; V142 cse0 [V142,T44] ( 4, 8 ) byref -> x0 "CSE - moderate"
+; V143 cse1 [V143,T45] ( 2, 4 ) ref -> x0 "CSE - moderate"
; V144 cse2 [V144,T63] ( 3, 6 ) int -> x0 "CSE - conservative"
; V145 cse3 [V145,T64] ( 3, 6 ) int -> x0 "CSE - conservative"
; V146 cse4 [V146,T18] ( 5, 14 ) int -> x0 "CSE - moderate"
-; V147 cse5 [V147,T27] ( 3, 12 ) int -> x1 "CSE - moderate"
+; V147 cse5 [V147,T28] ( 3, 12 ) int -> x1 "CSE - moderate"
;
; Lcl frame size = 320
@@ -179,14 +179,14 @@ G_M4868_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w20, w2
;; size=64 bbWeight=1 PerfScore 13.00
G_M4868_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #24 // [V109 PInvokeFrame+0x08]
+ add x0, fp, #32 // [V109 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
mov x22, x0
mov x0, sp
- str x0, [fp, #0x38] // [V109 PInvokeFrame+0x28]
+ str x0, [fp, #0x40] // [V109 PInvokeFrame+0x28]
mov x0, fp
- str x0, [fp, #0x48] // [V109 PInvokeFrame+0x38]
+ str x0, [fp, #0x50] // [V109 PInvokeFrame+0x38]
mov w23, wzr
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -226,7 +226,7 @@ G_M4868_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs +[x24]
ble G_M4868_IG05
;; size=148 bbWeight=1 PerfScore 30.00
-G_M4868_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000044 {V04 V05}, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4868_IG03: ; bbWeight=4, gcVars=00000000000000000000000000000084 {V04 V05}, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x25]
stp xzr, xzr, [fp, #0xD1FFAB1E]
str xzr, [fp, #0xD1FFAB1E]
@@ -265,48 +265,45 @@ G_M4868_IG04: ; bbWeight=2, gcrefRegs=1080006 {x1 x2 x19 x24}, byrefRegs=
mov x28, x1
; gcrRegs +[x28]
mov w3, wzr
+ str x2, [fp, #0x98] // [V45 tmp19]
+ ; GC ptr vars +{V45}
+ str w3, [fp, #0xD1FFAB1E] // [V48 tmp22]
+ mov x1, x28
b G_M4868_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=24 bbWeight=2 PerfScore 9.00
G_M4868_IG05: ; bbWeight=0.50, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x1-x2 x19 x28]
+ ; GC ptr vars -{V45}
ldr x25, [fp, #0xC0] // [V05 loc2]
; gcrRegs +[x25]
b G_M4868_IG56
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M4868_IG06: ; bbWeight=2, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, byref
+G_M4868_IG06: ; bbWeight=4, gcrefRegs=11080002 {x1 x19 x24 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x25] +[x1 x19 x28]
mov x2, x28
; gcrRegs +[x2]
- str x2, [fp, #0xA0] // [V45 tmp19]
+ str x2, [fp, #0x98] // [V45 tmp19]
; GC ptr vars +{V45}
ldr w3, [x2, #0x08]
str w3, [fp, #0xD1FFAB1E] // [V48 tmp22]
- mov x28, x1
- ldr x2, [fp, #0xA0] // [V45 tmp19]
- ldr w3, [fp, #0xD1FFAB1E] // [V48 tmp22]
- ;; size=28 bbWeight=2 PerfScore 20.00
-G_M4868_IG07: ; bbWeight=4, gcrefRegs=11080004 {x2 x19 x24 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ; GC ptr vars -{V45}
- ldr x1, [x28, #0x30]
- ; gcrRegs +[x1]
- cbnz x1, G_M4868_IG10
+ ;; size=16 bbWeight=4 PerfScore 22.00
+G_M4868_IG07: ; bbWeight=4, gcVars=00000000000000000000000000100084 {V04 V05 V45}, gcrefRegs=1080002 {x1 x19 x24}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x2 x28]
+ ldr x28, [x1, #0x30]
+ ; gcrRegs +[x28]
+ cbnz x28, G_M4868_IG10
;; size=8 bbWeight=4 PerfScore 16.00
-G_M4868_IG08: ; bbWeight=2, gcrefRegs=11080004 {x2 x19 x24 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- str x2, [fp, #0xA0] // [V45 tmp19]
- ; GC ptr vars +{V45}
- str w3, [fp, #0xD1FFAB1E] // [V48 tmp22]
- add x4, x28, #48
- ; byrRegs +[x4]
- str x4, [fp, #0x88] // [V52 tmp26]
- ; GC ptr vars +{V52}
...
+8 (+5.13%) : 490199.dasm - VectorMathTests.Program:TestEntryPoint():int (FullOpts)
@@ -10,7 +10,7 @@
;
;* V00 loc0 [V00,T02] ( 0, 0 ) int -> zero-ref single-def
; V01 loc1 [V01,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <int[]>
-; V02 loc2 [V02,T04] ( 5, 4.50) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
+; V02 loc2 [V02,T04] ( 5, 3.50) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
;* V03 loc3 [V03,T03] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 cse0 [V05,T01] ( 2, 2 ) int -> x1 "CSE - aggressive"
@@ -37,22 +37,24 @@ G_M13424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w0, wzr
; gcrRegs -[x0]
smov x0, v16.s[0]
- mov w1, #1
- smov x1, v16.s[1]
- mov w2, #2
- smov x2, v16.s[2]
cmp w0, #2
- ccmp w1, #2, 0, eq
- ccmp w2, #2, 0, eq
bne G_M13424_IG05
- ;; size=84 bbWeight=1 PerfScore 21.00
+ ;; size=60 bbWeight=1 PerfScore 17.00
G_M13424_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w0, #1
+ smov x0, v16.s[1]
+ cmp w0, #2
+ bne G_M13424_IG05
+ mov w0, #2
+ smov x0, v16.s[2]
+ cmp w0, #2
+ bne G_M13424_IG05
mov w0, #3
smov x0, v16.s[3]
cmp w0, #2
bne G_M13424_IG05
mov w0, #100
- ;; size=20 bbWeight=0.50 PerfScore 1.75
+ ;; size=52 bbWeight=0.50 PerfScore 4.75
G_M13424_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -73,7 +75,7 @@ G_M13424_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 156, prolog size 8, PerfScore 26.50, instruction count 39, allocated bytes for code 156 (MethodHash=897bcb8f) for method VectorMathTests.Program:TestEntryPoint():int (FullOpts)
+Total bytes of code 164, prolog size 8, PerfScore 25.50, instruction count 41, allocated bytes for code 164 (MethodHash=897bcb8f) for method VectorMathTests.Program:TestEntryPoint():int (FullOpts)
; ============================================================
Unwind Info:
@@ -84,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 455411.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
@@ -8,46 +8,59 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M34680_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34680_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M34680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01]
- mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq
- cinc w0, wzr, eq
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M34680_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M34680_IG05
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M34680_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [fp, #0x1D] // [V01 arg1+0x01]
+ cmp w0, #255
+ bne G_M34680_IG05
+ mov w0, #1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M34680_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M34680_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M34680_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=3eac7887) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=3eac7887) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetUInt16:HasAllBitsSet(ushort):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+36.36%) : 455388.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
@@ -8,46 +8,59 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16>
-; V01 arg1 [V01 ] ( 4, 4 ) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 4, 3.50) short -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M984_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M984_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M984_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
- ldrb w1, [fp, #0x1D] // [V01 arg1+0x01]
- mov w2, #255
cmp w0, #255
- ccmp w1, w2, 0, eq
- cinc w0, wzr, eq
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M984_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M984_IG05
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M984_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [fp, #0x1D] // [V01 arg1+0x01]
+ cmp w0, #255
+ bne G_M984_IG05
+ mov w0, #1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M984_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M984_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M984_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 44, prolog size 8, PerfScore 10.50, instruction count 11, allocated bytes for code 44 (MethodHash=d746fc27) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 10.25, instruction count 15, allocated bytes for code 60 (MethodHash=d746fc27) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetInt16:HasAllBitsSet(short):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.windows.arm64.checked.mch
+0 (0.00%) : 1057.dasm - Program:Main(System.String[]):int (FullOpts)
@@ -1587,7 +1587,7 @@ G_M58511_IG17: ; bbWeight=1, gcVars=00000000000000000000000000000000 {},
mov w23, wzr
;; size=164 bbWeight=1 PerfScore 47.00
G_M58511_IG18: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M58511_IG26
+ b G_M58511_IG35
;; size=4 bbWeight=1 PerfScore 1.00
G_M58511_IG19: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w11, [x19, #0x08]
@@ -1697,38 +1697,12 @@ G_M58511_IG25: ; bbWeight=4, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
ldr w0, [fp, #0xD1FFAB1E] // [V11 loc10]
ldr w11, [fp, #0xD1FFAB1E] // [V03 loc2]
cmp w0, w11
- bne G_M58511_IG27
- mov x0, x22
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- mov x11, #0xD1FFAB1E
- cmp x0, x11
- bgt G_M58511_IG35
- mov w0, #5
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14]
- add w0, w0, #1
- str w0, [fp, #0xD1FFAB1E] // [V15 loc14]
- ;; size=80 bbWeight=4 PerfScore 88.00
-G_M58511_IG26: ; bbWeight=8, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr w11, [fp, #0xD1FFAB1E] // [V15 loc14]
- cmp w11, #40
- bge G_M58511_IG48
- b G_M58511_IG19
- ;; size=16 bbWeight=8 PerfScore 36.00
-G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ beq G_M58511_IG34
+ ;; size=16 bbWeight=4 PerfScore 22.00
+G_M58511_IG26: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0xD1FFAB1E] // [V15 loc14]
cmp w0, #2
- bge G_M58511_IG30
+ bge G_M58511_IG36
stp xzr, xzr, [fp, #0x30]
stp xzr, xzr, [fp, #0x40]
str xzr, [fp, #0x50]
@@ -1741,13 +1715,13 @@ G_M58511_IG27: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
blr x3
; gcr arg pop 0
;; size=52 bbWeight=1 PerfScore 13.00
-G_M58511_IG28: ; bbWeight=1, nogc, extend
+G_M58511_IG27: ; bbWeight=1, nogc, extend
ldp q16, q17, [fp, #0x30]
stp q16, q17, [fp, #0xD1FFAB1E]
ldr x0, [fp, #0x50]
str x0, [fp, #0xD1FFAB1E]
;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG29: ; bbWeight=1, extend
+G_M58511_IG28: ; bbWeight=1, extend
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
@@ -1813,535 +1787,18 @@ G_M58511_IG29: ; bbWeight=1, extend
; gcr arg pop 0
ldr w0, [fp, #0xD1FFAB1E] // [V03 loc2]
str w0, [fp, #0xD1FFAB1E] // [V11 loc10]
- b G_M58511_IG34
- ;; size=204 bbWeight=1 PerfScore 67.00
-G_M58511_IG30: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x58]
- stp xzr, xzr, [fp, #0x68]
- str xzr, [fp, #0x78]
- add x0, fp, #88 // [V55 tmp28]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, #53
- mov w2, #3
- ldr x3, [x11]
- blr x3
- ; gcr arg pop 0
- ;; size=40 bbWeight=1 PerfScore 9.50
-G_M58511_IG31: ; bbWeight=1, nogc, extend
- sub x0, fp, #200
- ldp q16, q17, [x0, #0xD1FFAB1E]
- stp q16, q17, [fp, #0xD1FFAB1E]
- ldr x1, [x0, #0xD1FFAB1E]
- str x1, [fp, #0xD1FFAB1E]
- ;; size=20 bbWeight=1 PerfScore 8.50
-G_M58511_IG32: ; bbWeight=1, extend
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V11 loc10]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- ldr w1, [fp, #0xD1FFAB1E] // [V03 loc2]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=216 bbWeight=1 PerfScore 72.50
-G_M58511_IG33: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=1 PerfScore 10.50
-G_M58511_IG34: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=200 bbWeight=1 PerfScore 66.00
+G_M58511_IG29: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov w23, #1
- b G_M58511_IG48
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M58511_IG35: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x80]
- stp xzr, xzr, [fp, #0x90]
- str xzr, [fp, #0xA0]
- add x0, fp, #128 // [V54 tmp27]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, #72
- mov w2, #2
- ldr x3, [x11]
- blr x3
- ; gcr arg pop 0
- ;; size=40 bbWeight=1 PerfScore 9.50
-G_M58511_IG36: ; bbWeight=1, nogc, extend
- ldp q16, q17, [fp, #0x80]
- stp q16, q17, [fp, #0xD1FFAB1E]
- ldr x0, [fp, #0xA0]
- str x0, [fp, #0xD1FFAB1E]
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M58511_IG37: ; bbWeight=1, isz, extend
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- mov x0, x22
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- ldr w1, [fp, #0xD1FFAB1E] // [V15 loc14]
- add w1, w1, #1
- sxtw x1, w1
- cmp x1, #0
- beq G_M58511_IG40
- cmn x1, #1
- bne G_M58511_IG38
- cmp x0, #1
- bvs G_M58511_IG39
- ;; size=92 bbWeight=1 PerfScore 25.50
-G_M58511_IG38: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- sdiv x1, x0, x1
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcr arg pop 0
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x1]
- ; gcrRegs +[x1]
- add x0, fp, #0xD1FFAB1E // [V25 loc24]
...
libraries.pmi.windows.arm64.checked.mch
-40 (-27.03%) : 184277.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-1.50%) : 71351.dasm - Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List
1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T11] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.Diagnostics.Tracing.Stacks.StackSource>
; V01 loc0 [V01,T06] ( 7, 7 ) ref -> x20 class-hnd exact single-def <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+<>c__DisplayClass0_0>
-; V02 loc1 [V02 ] ( 7, 13 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
+; V02 loc1 [V02 ] ( 7, 13 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
; V03 loc2 [V03,T01] ( 5, 18 ) ref -> x24 class-hnd <System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+<>c__DisplayClass0_0>
@@ -27,12 +27,12 @@
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]]>
; V17 tmp13 [V17,T17] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.__Canon]>
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]>
-; V19 tmp15 [V19,T02] ( 4, 16 ) ref -> x25 class-hnd exact "Inlining Arg" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample[]>
+; V19 tmp15 [V19,T02] ( 4, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample[]>
; V20 tmp16 [V20,T03] ( 3, 12 ) int -> x1 "Inlining Arg"
-; V21 tmp17 [V21 ] ( 3, 6 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V02._dictionary (fldOffset=0x0)" P-DEP
-; V22 tmp18 [V22 ] ( 4, 10 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._currentValue (fldOffset=0x8)" P-DEP
-; V23 tmp19 [V23 ] ( 3, 6 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP
-; V24 tmp20 [V24 ] ( 3, 6 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._version (fldOffset=0x14)" P-DEP
+; V21 tmp17 [V21 ] ( 3, 6 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._dictionary (fldOffset=0x0)" P-DEP
+; V22 tmp18 [V22 ] ( 4, 10 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._currentValue (fldOffset=0x8)" P-DEP
+; V23 tmp19 [V23 ] ( 3, 6 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._index (fldOffset=0x10)" P-DEP
+; V24 tmp20 [V24 ] ( 3, 6 ) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V02._version (fldOffset=0x14)" P-DEP
; V25 tmp21 [V25,T21] ( 3, 3 ) ref -> x0 single-def "field V16._dictionary (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26,T23] ( 0, 0 ) ref -> zero-ref single-def "field V16._currentValue (fldOffset=0x8)" P-INDEP
;* V27 tmp23 [V27,T24] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x10)" P-INDEP
@@ -45,20 +45,19 @@
; V34 cse3 [V34,T14] ( 2, 5 ) long -> x23 hoist "CSE - aggressive"
; V35 cse4 [V35,T10] ( 3, 6 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M39455_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- stp x23, x24, [sp, #0x48]
- str x25, [sp, #0x58]
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V02 loc1], [V02 loc1+0x08]
- str xzr, [fp, #0x20] // [V02 loc1+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V02 loc1], [V02 loc1+0x08]
+ str xzr, [fp, #0x28] // [V02 loc1+0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M39455_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -155,9 +154,9 @@ G_M39455_IG04: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}
; gcrRegs +[x0]
ldr w1, [x0, #0x44]
; gcrRegs -[x1]
- stp x0, xzr, [fp, #0x10] // [V21 tmp17], [V22 tmp18]
- stp wzr, w1, [fp, #0x20] // [V23 tmp19], [V24 tmp20]
- add x0, fp, #16 // [V02 loc1]
+ stp x0, xzr, [fp, #0x18] // [V21 tmp17], [V22 tmp18]
+ stp wzr, w1, [fp, #0x28] // [V23 tmp19], [V24 tmp20]
+ add x0, fp, #24 // [V02 loc1]
; gcrRegs -[x0]
movz x19, #0xD1FFAB1E
movk x19, #0xD1FFAB1E LSL #16
@@ -180,7 +179,7 @@ G_M39455_IG04: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}
movk x23, #0xD1FFAB1E LSL #32
;; size=96 bbWeight=1 PerfScore 21.50
G_M39455_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x24, [fp, #0x18] // [V22 tmp18]
+ ldr x24, [fp, #0x20] // [V22 tmp18]
; gcrRegs +[x24]
mov x0, x21
bl CORINFO_HELP_NEWSFAST
@@ -200,27 +199,28 @@ G_M39455_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ble G_M39455_IG07
;; size=44 bbWeight=4 PerfScore 46.00
G_M39455_IG06: ; bbWeight=2, gcrefRegs=1100004 {x2 x20 x24}, byrefRegs=0000 {}, byref, isz
- ldr x25, [x24, #0x08]
- ; gcrRegs +[x25]
- cbz x25, G_M39455_IG10
- ldr w0, [x25, #0x08]
- cmp w0, w1
+ ldr x0, [x24, #0x08]
+ ; gcrRegs +[x0]
+ cbz x0, G_M39455_IG10
+ ldr w3, [x0, #0x08]
+ cmp w3, w1
blo G_M39455_IG10
- add x0, x25, #16
+ add x0, x0, #16
+ ; gcrRegs -[x0]
; byrRegs +[x0]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x2 x25]
+ ; gcrRegs -[x2]
; byrRegs -[x0]
;; size=44 bbWeight=2 PerfScore 29.00
G_M39455_IG07: ; bbWeight=4, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz
ldr w0, [x24, #0x14]
add w0, w0, #1
str w0, [x24, #0x14]
- add x0, fp, #16 // [V02 loc1]
+ add x0, fp, #24 // [V02 loc1]
mov x1, x19
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -235,13 +235,12 @@ G_M39455_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 3.00
G_M39455_IG09: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x58]
- ldp x23, x24, [sp, #0x48]
- ldp x21, x22, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x60
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M39455_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
@@ -252,18 +251,18 @@ G_M39455_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 532, prolog size 32, PerfScore 210.00, instruction count 133, allocated bytes for code 532 (MethodHash=171665e0) for method Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
+Total bytes of code 524, prolog size 28, PerfScore 207.00, instruction count 131, allocated bytes for code 524 (MethodHash=171665e0) for method Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper:GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+Sample]] (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 133 (0x00085) Actual length = 532 (0x000214)
+ Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -271,13 +270,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D1 8B save_reg X#6 Z#11 (0x0B); str x25, [sp, #88]
E6 save_next
E6 save_next
- C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
- E4 end
- E4 end
-16 (-1.21%) : 91386.dasm - System.Speech.Internal.SrgsCompiler.Graph:MergeIdenticalTransitions(System.Speech.Internal.SrgsCompiler.ArcList,System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]) (FullOpts)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T00] ( 25, 44.46) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]>
; V02 loc0 [V02,T06] ( 11, 16.50) ref -> x21 class-hnd <<unknown class>>
; V03 loc1 [V03,T13] ( 5, 11 ) ref -> x22 class-hnd <System.Speech.Internal.SrgsCompiler.Arc>
-; V04 loc2 [V04,T14] ( 6, 10 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Speech.Internal.RBList+MyEnumerator>
+; V04 loc2 [V04,T14] ( 6, 10 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Speech.Internal.RBList+MyEnumerator>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Speech.Internal.SrgsCompiler.Arc>
; V06 loc4 [V06,T32] ( 6, 2.50) ref -> x0 class-hnd <<unknown class>>
;* V07 loc5 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]]>
@@ -24,7 +24,7 @@
; V13 tmp4 [V13,T18] ( 2, 8 ) ref -> x3 class-hnd "dup spill" <<unknown class>>
;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref
; V15 tmp6 [V15,T17] ( 5, 9.26) ref -> x3
-; V16 tmp7 [V16,T08] ( 4, 12 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]>
+; V16 tmp7 [V16,T08] ( 4, 12 ) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Speech.Internal.SrgsCompiler.Arc]>
; V17 tmp8 [V17,T09] ( 3, 12 ) ref -> x21 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V18 tmp9 [V18,T02] ( 6, 24 ) ref -> x3 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
@@ -35,8 +35,8 @@
; V24 tmp15 [V24,T25] ( 3, 6 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <System.Speech.Internal.RBList+MyEnumerator>
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Speech.Internal.RBList+TreeNode>
;* V26 tmp17 [V26 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Speech.Internal.SrgsCompiler.Arc]>
-; V27 tmp18 [V27,T07] ( 5, 12.59) ref -> x23 class-hnd "Inlining Arg" <System.__Canon[]>
-; V28 tmp19 [V28,T20] ( 3, 7.55) int -> x22 "Inlining Arg"
+; V27 tmp18 [V27,T07] ( 5, 12.59) ref -> x1 class-hnd "Inlining Arg" <System.__Canon[]>
+; V28 tmp19 [V28,T20] ( 3, 7.55) int -> x2 "Inlining Arg"
; V29 tmp20 [V29,T26] ( 3, 5.80) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
; V30 tmp21 [V30,T19] ( 4, 7.61) int -> x0 "Inline stloc first use temp"
; V31 tmp22 [V31,T27] ( 3, 5.36) int -> x2 "Inline stloc first use temp"
@@ -48,34 +48,33 @@
;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V38 tmp29 [V38,T11] ( 4, 11.87) ref -> x21 single-def "field V07._list (fldOffset=0x0)" P-INDEP
; V39 tmp30 [V39,T16] ( 2, 5.37) ref -> x0 "field V07._current (fldOffset=0x8)" P-INDEP
-; V40 tmp31 [V40,T03] ( 6, 18.00) int -> x19 "field V07._index (fldOffset=0x10)" P-INDEP
-; V41 tmp32 [V41,T29] ( 2, 4.50) int -> x20 single-def "field V07._version (fldOffset=0x14)" P-INDEP
+; V40 tmp31 [V40,T03] ( 6, 18.00) int -> x20 "field V07._index (fldOffset=0x10)" P-INDEP
+; V41 tmp32 [V41,T29] ( 2, 4.50) int -> x19 single-def "field V07._version (fldOffset=0x14)" P-INDEP
; V42 tmp33 [V42,T30] ( 2, 2.52) byref -> x1 "field V26._reference (fldOffset=0x0)" P-INDEP
; V43 tmp34 [V43,T31] ( 2, 2.52) int -> x2 "field V26._length (fldOffset=0x8)" P-INDEP
; V44 tmp35 [V44,T35] ( 3, 1.50) ref -> x21 single-def "field V35._list (fldOffset=0x0)" P-INDEP
;* V45 tmp36 [V45 ] ( 0, 0 ) ref -> zero-ref single-def "field V35._current (fldOffset=0x8)" P-INDEP
;* V46 tmp37 [V46,T39] ( 0, 0 ) int -> zero-ref single-def "field V35._index (fldOffset=0x10)" P-INDEP
-; V47 tmp38 [V47,T37] ( 2, 1 ) int -> x20 single-def "field V35._version (fldOffset=0x14)" P-INDEP
+; V47 tmp38 [V47,T37] ( 2, 1 ) int -> x19 single-def "field V35._version (fldOffset=0x14)" P-INDEP
; V48 tmp39 [V48,T04] ( 3, 20.25) ref -> x0 "arr expr"
-; V49 PSPSym [V49,T38] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V49 PSPSym [V49,T38] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
; V50 cse0 [V50,T10] ( 2, 8.00) int -> x0 "CSE - aggressive"
; V51 cse1 [V51,T22] ( 4, 7.26) int -> x22 "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M13764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- str x23, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
- add x2, sp, #80
- str x2, [fp, #0x20] // [V49 PSPSym]
+ add x2, sp, #64
+ str x2, [fp, #0x18] // [V49 PSPSym]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.00
G_M13764_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
; gcrRegs +[x21]
@@ -142,7 +141,7 @@ G_M13764_IG08: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x20]
; byrRegs -[x14]
- str x1, [fp, #0x18] // [V04 loc2]
+ str x1, [fp, #0x10] // [V04 loc2]
; GC ptr vars +{V04}
;; size=36 bbWeight=1 PerfScore 8.50
G_M13764_IG09: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=680002 {x1 x19 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
@@ -158,7 +157,7 @@ G_M13764_IG09: ; bbWeight=1, gcVars=0000000000004000 {V04}, gcrefRegs=680
cbz w0, G_M13764_IG33
;; size=28 bbWeight=1 PerfScore 7.00
G_M13764_IG10: ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V04 loc2]
+ ldr x0, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -246,25 +245,26 @@ G_M13764_IG15: ; bbWeight=2, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs
ble G_M13764_IG19
;; size=12 bbWeight=2 PerfScore 5.00
G_M13764_IG16: ; bbWeight=1.26, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr x23, [x19, #0x08]
- ; gcrRegs +[x23]
- cbz x23, G_M13764_IG32
- ;; size=8 bbWeight=1.26 PerfScore 5.03
-G_M13764_IG17: ; bbWeight=1.26, gcrefRegs=B80008 {x3 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x23]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
+ ldr x1, [x19, #0x08]
+ ; gcrRegs +[x1]
+ sxtw w2, w22
+ cbz x1, G_M13764_IG32
+ ;; size=12 bbWeight=1.26 PerfScore 5.66
+G_M13764_IG17: ; bbWeight=1.26, gcrefRegs=38000A {x1 x3 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x1]
+ movz x4, #0xD1FFAB1E
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ cmp x0, x4
bne G_M13764_IG31
;; size=24 bbWeight=1.26 PerfScore 7.57
-G_M13764_IG18: ; bbWeight=1.26, gcrefRegs=B80008 {x3 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- ldr w1, [x23, #0x08]
- cmp w1, w22
+G_M13764_IG18: ; bbWeight=1.26, gcrefRegs=38000A {x1 x3 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x1, #0x08]
+ cmp w0, w2
blo G_M13764_IG32
- add x1, x23, #16
+ add x1, x1, #16
+ ; gcrRegs -[x1]
; byrRegs +[x1]
- sxtw w2, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -273,10 +273,10 @@ G_M13764_IG18: ; bbWeight=1.26, gcrefRegs=B80008 {x3 x19 x20 x21 x23}, by
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x3 x23]
+ ; gcrRegs -[x3]
; byrRegs -[x1]
; gcr arg pop 0
- ;; size=52 bbWeight=1.26 PerfScore 15.73
+ ;; size=48 bbWeight=1.26 PerfScore 15.10
G_M13764_IG19: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x14]
add w0, w0, #1
@@ -315,8 +315,8 @@ G_M13764_IG20: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x22, x0
+ ; gcrRegs +[x22]
mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -335,30 +335,30 @@ G_M13764_IG20: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
cmp w1, w0
bls G_M13764_IG22
;; size=72 bbWeight=2 PerfScore 42.00
-G_M13764_IG21: ; bbWeight=1.80, gcrefRegs=B80004 {x2 x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M13764_IG21: ; bbWeight=1.80, gcrefRegs=780004 {x2 x19 x20 x21 x22}, byrefRegs=0000 {}, byref
add w1, w0, #1
str w1, [x21, #0x10]
sxtw x1, w0
mov x0, x2
; gcrRegs +[x0]
- mov x2, x23
+ mov x2, x22
bl CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[x0 x2 x23]
+ ; gcrRegs -[x0 x2 x22]
; gcr arg pop 0
b G_M13764_IG23
;; size=28 bbWeight=1.80 PerfScore 9.01
-G_M13764_IG22: ; bbWeight=0.20, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x23]
+G_M13764_IG22: ; bbWeight=0.20, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x22]
mov x0, x21
; gcrRegs +[x0]
- mov x1, x23
+ mov x1, x22
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0-x1 x23]
+ ; gcrRegs -[x0-x1 x22]
; gcr arg pop 0
;; size=28 bbWeight=0.20 PerfScore 1.28
G_M13764_IG23: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
@@ -419,7 +419,7 @@ G_M13764_IG27: ; bbWeight=0.20, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
; gcr arg pop 0
;; size=28 bbWeight=0.20 PerfScore 1.28
G_M13764_IG28: ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V04 loc2]
+ ldr x0, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -465,7 +465,7 @@ G_M13764_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=24 bbWeight=0 PerfScore 0.00
G_M13764_IG33: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21]
- ldr x1, [fp, #0x18] // [V04 loc2]
+ ldr x1, [fp, #0x10] // [V04 loc2]
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -528,8 +528,8 @@ G_M13764_IG39: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
cbz x21, G_M13764_IG45
;; size=4 bbWeight=1 PerfScore 1.00
G_M13764_IG40: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ldr w20, [x21, #0x14]
- mov w19, wzr
+ ldr w19, [x21, #0x14]
+ mov w20, wzr
b G_M13764_IG42
;; size=12 bbWeight=0.50 PerfScore 2.25
G_M13764_IG41: ; bbWeight=2, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
@@ -544,37 +544,36 @@ G_M13764_IG41: ; bbWeight=2, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}
;; size=20 bbWeight=2 PerfScore 11.00
G_M13764_IG42: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x14]
- cmp w20, w0
+ cmp w19, w0
bne G_M13764_IG47
;; size=12 bbWeight=4 PerfScore 18.00
G_M13764_IG43: ; bbWeight=4.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x10]
- cmp w19, w0
+ cmp w20, w0
bhs G_M13764_IG45
;; size=12 bbWeight=4.00 PerfScore 18.00
G_M13764_IG44: ; bbWeight=3.37, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
ldr x0, [x21, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
- cmp w19, w1
+ cmp w20, w1
bhs G_M13764_IG46
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
...
+28 (+2.22%) : 297244.dasm - System.Threading.RateLimiting.ConcurrencyLimiter:Release(int):this (FullOpts)
@@ -10,9 +10,9 @@
;
; V00 this [V00,T00] ( 32, 53.50) ref -> x19 this class-hnd single-def <System.Threading.RateLimiting.ConcurrencyLimiter>
; V01 arg1 [V01,T23] ( 3, 2.50) int -> x20 single-def
-; V02 loc0 [V02 ] ( 4, 9 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer>
-; V03 loc1 [V03,T28] ( 4, 1.50) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <<unknown class>>
-; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V02 loc0 [V02 ] ( 4, 9 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer>
+; V03 loc1 [V03,T28] ( 4, 1.50) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <<unknown class>>
+; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V05 loc3 [V05,T03] ( 8, 20 ) ref -> x21 class-hnd <System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration>
; V06 loc4 [V06,T25] ( 2, 4.00) ref -> x15 class-hnd <System.Threading.RateLimiting.ConcurrencyLimiter+ConcurrencyLease>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -43,9 +43,9 @@
; V32 tmp25 [V32,T21] ( 3, 6.00) ubyte -> x22 "Inline stloc first use temp"
; V33 tmp26 [V33,T02] ( 7, 21.84) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
; V34 tmp27 [V34,T26] ( 3, 4.00) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V35 tmp28 [V35,T27] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V35 tmp28 [V35,T27] ( 2, 0 ) ubyte -> x25 "Inline return value spill temp"
; V36 tmp29 [V36,T13] ( 5, 10.00) int -> x14 "Inline stloc first use temp"
-; V37 tmp30 [V37,T35] ( 3, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V37 tmp30 [V37,T35] ( 3, 0 ) ubyte -> x25 "Inline return value spill temp"
; V38 tmp31 [V38,T33] ( 6, 0 ) int -> x0 "Inline stloc first use temp"
; V39 tmp32 [V39,T36] ( 3, 0 ) int -> x2 "Inline stloc first use temp"
; V40 tmp33 [V40,T34] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -56,47 +56,48 @@
;* V45 tmp38 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V46 tmp39 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.RateLimiting.ConcurrencyLimiterOptions>
;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V48 tmp41 [V48 ] ( 4, 9 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._next (fldOffset=0x0)" P-DEP
+; V48 tmp41 [V48 ] ( 4, 9 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._next (fldOffset=0x0)" P-DEP
;* V49 tmp42 [V49,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V19.hasValue (fldOffset=0x0)" P-INDEP
; V50 tmp43 [V50,T30] ( 2, 1 ) long -> x0 single-def "field V19.value (fldOffset=0x8)" P-INDEP
; V51 tmp44 [V51,T06] ( 3, 12 ) ref -> x1 "arr expr"
; V52 tmp45 [V52,T08] ( 3, 12 ) int -> x0 "index expr"
; V53 tmp46 [V53,T07] ( 3, 12 ) ref -> x0 "arr expr"
-; V54 PSPSym [V54,T31] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V54 PSPSym [V54,T31] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V55 cse0 [V55,T11] ( 5, 10 ) int -> x20 "CSE - aggressive"
; V56 cse1 [V56,T20] ( 3, 6 ) int -> x12 "CSE - moderate"
; V57 cse2 [V57,T14] ( 7, 10.00) byref -> x23 "CSE - moderate"
; V58 cse3 [V58,T29] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M60402_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x30]
- stp x21, x22, [sp, #0x40]
- stp x23, x24, [sp, #0x50]
+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x38]
+ stp x21, x22, [sp, #0x48]
+ stp x23, x24, [sp, #0x58]
+ str x25, [sp, #0x68]
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V04 loc2], [V02 loc0]
- add x2, sp, #96
- str x2, [fp, #0x28] // [V54 PSPSym]
+ stp xzr, xzr, [fp, #0x20] // [V04 loc2], [V02 loc0]
+ add x2, sp, #112
+ str x2, [fp, #0x30] // [V54 PSPSym]
mov x19, x0
; gcrRegs +[x19]
mov w20, w1
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M60402_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V03 loc1]
+ str x0, [fp, #0x18] // [V03 loc1]
; GC ptr vars +{V03}
;; size=8 bbWeight=1 PerfScore 4.00
G_M60402_IG03: ; bbWeight=1, gcVars=0000000010000000 {V03}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb w1, [fp, #0x18] // [V04 loc2]
+ ldrb w1, [fp, #0x20] // [V04 loc2]
cbnz w1, G_M60402_IG17
- add x1, fp, #24 // [V04 loc2]
+ add x1, fp, #32 // [V04 loc2]
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
- ldrb w0, [fp, #0x18] // [V04 loc2]
+ ldrb w0, [fp, #0x20] // [V04 loc2]
cbnz w0, G_M60402_IG05
;; size=24 bbWeight=1 PerfScore 7.50
G_M60402_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
@@ -115,7 +116,7 @@ G_M60402_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
;; size=36 bbWeight=0.50 PerfScore 3.75
G_M60402_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x30]
- cbnz w0, G_M60402_IG40
+ cbnz w0, G_M60402_IG41
;; size=8 bbWeight=1 PerfScore 4.00
G_M60402_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x28]
@@ -195,12 +196,12 @@ G_M60402_IG12: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; gcrRegs -[x0]
add x14, x21, #16
; byrRegs +[x14]
- ldr x15, [fp, #0x20] // [V48 tmp41]
+ ldr x15, [fp, #0x28] // [V48 tmp41]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- str x21, [fp, #0x20] // [V48 tmp41]
+ str x21, [fp, #0x28] // [V48 tmp41]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr w0, [x0, #0x18]
@@ -216,7 +217,7 @@ G_M60402_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w0, w1
- bne G_M60402_IG40
+ bne G_M60402_IG41
movz x0, #0xD1FFAB1E // code for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -226,7 +227,7 @@ G_M60402_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
mov w1, #1
strb w1, [x19, #0x38]
str x0, [x19, #0x40]
- b G_M60402_IG40
+ b G_M60402_IG41
;; size=56 bbWeight=0.50 PerfScore 9.75
G_M60402_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
@@ -241,7 +242,7 @@ G_M60402_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M60402_IG15: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs +[x15 x19-x21]
; byrRegs +[x23]
- cbz w0, G_M60402_IG34
+ cbz w25, G_M60402_IG34
b G_M60402_IG30
;; size=8 bbWeight=0 PerfScore 0.00
G_M60402_IG16: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
@@ -289,15 +290,9 @@ G_M60402_IG18: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefReg
G_M60402_IG19: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz
mov w1, #0xD1FFAB1E
tst w0, w1
- bne G_M60402_IG36
- orr w1, w0, #0xD1FFAB1E
- mov w2, w0
- casal w2, w1, [x23]
- cmp w2, w0
- beq G_M60402_IG37
- sxtw w0, w2
- b G_M60402_IG19
- ;; size=40 bbWeight=0 PerfScore 0.00
+ beq G_M60402_IG36
+ b G_M60402_IG37
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M60402_IG20: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x15 x20]
; byrRegs -[x23]
@@ -493,7 +488,7 @@ G_M60402_IG33: ; bbWeight=2.00, gcrefRegs=280000 {x19 x21}, byrefRegs=000
mov w22, #1
;; size=4 bbWeight=2.00 PerfScore 1.00
G_M60402_IG34: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- cbnz w22, G_M60402_IG39
+ cbnz w22, G_M60402_IG40
ldr x0, [x21, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:SpinUntilCompleted():this
@@ -517,19 +512,28 @@ G_M60402_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60402_IG36: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
+G_M60402_IG36: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs +[x15 x19-x21]
; byrRegs +[x23]
- mov w0, wzr
- b G_M60402_IG38
- ;; size=8 bbWeight=0 PerfScore 0.00
+ orr w1, w0, #0xD1FFAB1E
+ mov w2, w0
+ casal w2, w1, [x23]
+ cmp w2, w0
+ beq G_M60402_IG38
+ sxtw w0, w2
+ b G_M60402_IG19
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M60402_IG37: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
+ mov w25, wzr
+ b G_M60402_IG39
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M60402_IG38: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
+ mov w25, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M60402_IG39: ; bbWeight=0, gcrefRegs=388000 {x15 x19 x20 x21}, byrefRegs=800000 {x23}, byref
b G_M60402_IG15
;; size=4 bbWeight=0 PerfScore 0.00
-G_M60402_IG39: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M60402_IG40: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x15 x20]
; byrRegs -[x23]
add x14, x19, #32
@@ -539,21 +543,21 @@ G_M60402_IG39: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
; byrRegs -[x14]
b G_M60402_IG12
;; size=16 bbWeight=2 PerfScore 10.00
-G_M60402_IG40: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60402_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x21]
- ldrb w0, [fp, #0x18] // [V04 loc2]
- cbz w0, G_M60402_IG42
+ ldrb w0, [fp, #0x20] // [V04 loc2]
+ cbz w0, G_M60402_IG43
;; size=8 bbWeight=1 PerfScore 3.00
-G_M60402_IG41: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x10] // [V03 loc1]
+G_M60402_IG42: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x18] // [V03 loc1]
; gcrRegs +[x0]
; GC ptr vars -{V03}
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M60402_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #32 // [V02 loc0]
+G_M60402_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add x0, fp, #40 // [V02 loc0]
movz x1, #0xD1FFAB1E // code for System.Threading.RateLimiting.ConcurrencyLimiter+RequestRegistration+Disposer:Dispose():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -561,49 +565,53 @@ G_M60402_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x1
; gcr arg pop 0
;; size=24 bbWeight=1 PerfScore 6.00
-G_M60402_IG43: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x50]
- ldp x21, x22, [sp, #0x40]
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x60
+G_M60402_IG44: ; bbWeight=1, epilog, nogc, extend
+ ldr x25, [sp, #0x68]
+ ldp x23, x24, [sp, #0x58]
+ ldp x21, x22, [sp, #0x48]
+ ldp x19, x20, [sp, #0x38]
+ ldp fp, lr, [sp], #0x70
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
...
+32 (+3.98%) : 168818.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75
-G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00
+G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M3645_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M3645_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M3645_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M3645_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M3645_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M3645_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M3645_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M3645_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M3645_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M3645_IG17
...
+32 (+3.98%) : 137619.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ubyte]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -103,95 +103,73 @@ G_M3645_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=104 bbWeight=0.50 PerfScore 13.75
-G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=108 bbWeight=0.50 PerfScore 14.00
+G_M3645_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M3645_IG11
+ ble G_M3645_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M3645_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M3645_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M3645_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M3645_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M3645_IG10
+G_M3645_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M3645_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M3645_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M3645_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M3645_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M3645_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M3645_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M3645_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M3645_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M3645_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ubyte]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -204,28 +182,32 @@ G_M3645_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRe
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M3645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M3645_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M3645_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ubyte]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -235,22 +217,38 @@ G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M3645_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M3645_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M3645_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M3645_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M3645_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M3645_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M3645_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M3645_IG17
...
libraries_tests.run.windows.arm64.Release.mch
-40 (-27.03%) : 328887.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,13 +8,13 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 153
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 3.50) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 4.49) int -> x1 single-def
-; V02 loc0 [V02,T02] ( 11, 3.01) int -> x3
-; V03 loc1 [V03,T04] ( 6, 1.51) ushort -> x5
+; V00 arg0 [V00,T01] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 6, 3.99) int -> x1 single-def
+; V02 loc0 [V02,T02] ( 7, 3.51) int -> x3
+; V03 loc1 [V03,T04] ( 3, 1.51) ushort -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.51) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 1.01) byref -> x4 hoist multi-def "CSE - moderate"
+; V05 cse0 [V05,T03] ( 5, 3.01) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 1 ) byref -> x4 hoist "CSE - moderate"
;
; Lcl frame size = 0
@@ -36,66 +36,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.01
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG07
add x4, x0, #12
; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 0.99
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG08
+ cmp w3, w2
+ bhs G_M3357_IG09
+ ldrh w0, [x4, w3, UXTW #2]
+ cmp w0, #32
+ ccmp w0, #9, z, ne
+ bne G_M3357_IG07
add w3, w3, #1
cmp w2, w3
- ble G_M3357_IG12
+ ble G_M3357_IG10
b G_M3357_IG06
- ;; size=32 bbWeight=0.50 PerfScore 3.99
-G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs -[x4]
- cmp w3, w2
- bhs G_M3357_IG11
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- beq G_M3357_IG10
- ;; size=28 bbWeight=0.01 PerfScore 0.04
-G_M3357_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ ;; size=40 bbWeight=0.50 PerfScore 4.78
+G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w0, w3, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 0.99
-G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0]
- add w3, w3, #1
- cmp w2, w3
- ble G_M3357_IG12
- b G_M3357_IG07
- ;; size=16 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M3357_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w2, w1
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 13.53, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 13.78, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-27.03%) : 325340.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,13 +8,13 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 24914
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 3.95) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 5.84) int -> x1 single-def
-; V02 loc0 [V02,T01] ( 11, 7.20) int -> x3
-; V03 loc1 [V03,T03] ( 6, 3.96) ushort -> x5
+; V00 arg0 [V00,T02] ( 4, 3.95) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 4.89) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 8.51) int -> x3
+; V03 loc1 [V03,T04] ( 3, 3.96) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 3.35) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 2.27) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 4.65) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 2.27) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -26,78 +26,56 @@ G_M3357_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr w2, [x0, #0x08]
cmp w2, w1
- ble G_M3357_IG08
+ ble G_M3357_IG10
;; size=12 bbWeight=1 PerfScore 4.50
-G_M3357_IG03: ; bbWeight=0.95, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG03: ; bbWeight=0.95, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG10
- ;; size=8 bbWeight=0.95 PerfScore 1.42
-G_M3357_IG04: ; bbWeight=0.94, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=4 bbWeight=0.94 PerfScore 0.47
-G_M3357_IG05: ; bbWeight=1.31, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG14
- ;; size=16 bbWeight=1.31 PerfScore 6.53
-G_M3357_IG06: ; bbWeight=1.31, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG05
- ;; size=12 bbWeight=1.31 PerfScore 2.63
-G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG12
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0.05 PerfScore 0.03
-G_M3357_IG09: ; bbWeight=0.05, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.05 PerfScore 0.11
-G_M3357_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0]
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.95 PerfScore 0.95
+G_M3357_IG04: ; bbWeight=1.32, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w3, w2
- bhs G_M3357_IG16
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG14
- ;; size=28 bbWeight=0.01 PerfScore 0.09
-G_M3357_IG11: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x4]
+ bhs G_M3357_IG12
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG08
+ ;; size=24 bbWeight=1.32 PerfScore 8.57
+G_M3357_IG05: ; bbWeight=1.33, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w3, w3, #1
cmp w2, w3
- bgt G_M3357_IG10
- ;; size=12 bbWeight=0.01 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ bgt G_M3357_IG04
+ ;; size=12 bbWeight=1.33 PerfScore 2.65
+G_M3357_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.01 PerfScore 0.00
-G_M3357_IG13: ; bbWeight=0.01, epilog, nogc, extend
+G_M3357_IG07: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG14: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG08: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub w0, w3, w1
;; size=4 bbWeight=0.94 PerfScore 0.47
-G_M3357_IG15: ; bbWeight=0.94, epilog, nogc, extend
+G_M3357_IG09: ; bbWeight=0.94, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.94 PerfScore 1.88
-G_M3357_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG10: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.05 PerfScore 0.03
+G_M3357_IG11: ; bbWeight=0.05, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.05 PerfScore 0.11
+G_M3357_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 19.67, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 20.67, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-27.03%) : 352216.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,13 +8,13 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 483
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 3.52) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 4.53) int -> x1 single-def
-; V02 loc0 [V02,T02] ( 11, 3.08) int -> x3
-; V03 loc1 [V03,T04] ( 6, 1.54) ushort -> x5
+; V00 arg0 [V00,T01] ( 4, 3.51) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 6, 4.02) int -> x1 single-def
+; V02 loc0 [V02,T02] ( 7, 3.59) int -> x3
+; V03 loc1 [V03,T04] ( 3, 1.54) ushort -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.52) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 1.03) byref -> x4 hoist multi-def "CSE - moderate"
+; V05 cse0 [V05,T03] ( 5, 3.03) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 1.02) byref -> x4 hoist "CSE - moderate"
;
; Lcl frame size = 0
@@ -36,62 +36,46 @@ G_M3357_IG04: ; bbWeight=0.49, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.49 PerfScore 0.98
-G_M3357_IG05: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG07
add x4, x0, #12
; byrRegs +[x4]
- ;; size=12 bbWeight=0.51 PerfScore 1.02
+ ;; size=8 bbWeight=0.51 PerfScore 0.51
G_M3357_IG06: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG08
- add w3, w3, #1
- cmp w2, w3
- ble G_M3357_IG11
- b G_M3357_IG06
- ;; size=32 bbWeight=0.51 PerfScore 4.07
-G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs -[x4]
cmp w3, w2
- bhs G_M3357_IG10
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG08
+ bhs G_M3357_IG09
+ ldrh w0, [x4, w3, UXTW #2]
+ cmp w0, #32
+ ccmp w0, #9, z, ne
+ bne G_M3357_IG07
add w3, w3, #1
cmp w2, w3
- ble G_M3357_IG11
- b G_M3357_IG07
- ;; size=44 bbWeight=0.01 PerfScore 0.05
-G_M3357_IG08: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ ble G_M3357_IG10
+ b G_M3357_IG06
+ ;; size=40 bbWeight=0.51 PerfScore 4.88
+G_M3357_IG07: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4]
sub w0, w3, w1
;; size=4 bbWeight=0.51 PerfScore 0.26
-G_M3357_IG09: ; bbWeight=0.51, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.51, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.51 PerfScore 1.02
-G_M3357_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w2, w1
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3357_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 13.64, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 108, prolog size 8, PerfScore 13.89, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
@@ -102,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+4.52%) : 231586.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -23,22 +23,23 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp"
; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M10785_IG13
cmp x20, x19
@@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov w0, #1
;; size=16 bbWeight=1 PerfScore 3.00
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19, #0x30]
cmn x0, #1
@@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x1, [x19, #0x18]
cmp x0, x1
bne G_M10785_IG13
+ ldr x0, [x20, #0x20]
+ ldr x1, [x19, #0x20]
+ cmp x0, x1
+ cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
@@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2, #0x10]
;; size=40 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x0, [x20, #0x28]
@@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- cset x0, eq
- uxtb w0, w0
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ uxtb w0, w21
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20]
ldr x1, [x19]
cmp x0, x1
@@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M10785_IG02
;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -273,7 +280,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -296,10 +303,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+28 (+4.52%) : 339938.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -23,22 +23,23 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp"
; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M10785_IG13
cmp x20, x19
@@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov w0, #1
;; size=16 bbWeight=1 PerfScore 3.00
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19, #0x30]
cmn x0, #1
@@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x1, [x19, #0x18]
cmp x0, x1
bne G_M10785_IG13
+ ldr x0, [x20, #0x20]
+ ldr x1, [x19, #0x20]
+ cmp x0, x1
+ cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
@@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2, #0x10]
;; size=40 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x0, [x20, #0x28]
@@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- cset x0, eq
- uxtb w0, w0
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ uxtb w0, w21
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20]
ldr x1, [x19]
cmp x0, x1
@@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M10785_IG02
;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -273,7 +280,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -296,10 +303,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+28 (+4.52%) : 408055.dasm - System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
@@ -23,22 +23,23 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x0 "Single return block return value"
+; V14 tmp10 [V14,T10] ( 2, 0 ) int -> x21 "Single return block return value"
; V15 tmp11 [V15,T08] ( 2, 0 ) ref -> x19 single-def "arg temp"
; V16 tmp12 [V16,T03] ( 3, 0 ) ref -> x0 "argument with side effect"
; V17 tmp13 [V17,T09] ( 2, 0 ) ref -> x19 single-def "arg temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10785_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M10785_IG13
cmp x20, x19
@@ -46,10 +47,11 @@ G_M10785_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov w0, #1
;; size=16 bbWeight=1 PerfScore 3.00
G_M10785_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19, #0x30]
cmn x0, #1
@@ -58,8 +60,12 @@ G_M10785_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x1, [x19, #0x18]
cmp x0, x1
bne G_M10785_IG13
+ ldr x0, [x20, #0x20]
+ ldr x1, [x19, #0x20]
+ cmp x0, x1
+ cset x21, eq
b G_M10785_IG15
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
@@ -71,10 +77,11 @@ G_M10785_IG05: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG06: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -92,10 +99,11 @@ G_M10785_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr x2, [x2, #0x10]
;; size=40 bbWeight=0 PerfScore 0.00
G_M10785_IG08: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x1, [x20, #0x28]
@@ -130,10 +138,11 @@ G_M10785_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
;; size=24 bbWeight=0 PerfScore 0.00
G_M10785_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
br x2
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x0, [x20, #0x28]
@@ -152,24 +161,22 @@ G_M10785_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- cset x0, eq
- uxtb w0, w0
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M10785_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ uxtb w0, w21
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M10785_IG16: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10785_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x20]
ldr x1, [x19]
cmp x0, x1
@@ -262,7 +269,7 @@ G_M10785_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M10785_IG02
;; size=60 bbWeight=0 PerfScore 0.00
-Total bytes of code 620, prolog size 12, PerfScore 9.50, instruction count 155, allocated bytes for code 620 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
+Total bytes of code 648, prolog size 16, PerfScore 12.50, instruction count 162, allocated bytes for code 648 (MethodHash=9c84d5de) for method System.MulticastDelegate:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -273,7 +280,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 155 (0x0009b) Actual length = 620 (0x00026c)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -296,10 +303,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-40 (-27.03%) : 150993.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-27.03%) : 20551.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-4.49%) : 224514.dasm - System.Security.Cryptography.LiteHashProvider:ProcessStreamSystem.Security.Cryptography.LiteHash:int (FullOpts)
@@ -8,26 +8,26 @@
; 3 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 9, 10 ) struct (16) [fp+0x30] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Security.Cryptography.LiteHash>
+; V00 arg0 [V00 ] ( 9, 10 ) struct (16) [fp+0x28] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Security.Cryptography.LiteHash>
; V01 arg1 [V01,T01] ( 4, 18 ) ref -> x19 class-hnd single-def <System.IO.Stream>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Security.Cryptography.LiteHash>
-; V04 loc1 [V04,T02] ( 9, 19 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <ubyte[]>
-; V05 loc2 [V05,T07] ( 6, 7.54) int -> [fp+0x2C] do-not-enreg[Z] EH-live
+; V04 loc1 [V04,T02] ( 9, 19 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <ubyte[]>
+; V05 loc2 [V05,T07] ( 6, 7.54) int -> [fp+0x24] do-not-enreg[Z] EH-live
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Security.Cryptography.LiteHash>
-; V08 loc5 [V08,T18] ( 2, 2 ) int -> x22
+; V08 loc5 [V08,T18] ( 2, 2 ) int -> x19
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V11 tmp2 [V11,T00] ( 6, 44.92) int -> x0 "dup spill"
-; V12 tmp3 [V12,T10] ( 2, 4 ) byref -> x22
+; V12 tmp3 [V12,T10] ( 2, 4 ) byref -> x3
;* V13 tmp4 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V15 tmp6 [V15,T08] ( 3, 4 ) int -> x1 "Inline return value spill temp"
;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V19 tmp10 [V19,T03] ( 4, 16 ) int -> x3 "Inlining Arg"
+; V19 tmp10 [V19,T03] ( 4, 16 ) int -> x2 "Inlining Arg"
; V20 tmp11 [V20,T06] ( 2, 8 ) byref -> x1 "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -35,11 +35,11 @@
; V24 tmp15 [V24,T09] ( 3, 4 ) int -> registers "Inline stloc first use temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V26 tmp17 [V26,T17] ( 3, 2 ) int -> x0 "Inline stloc first use temp"
-; V27 tmp18 [V27 ] ( 6, 7 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed single-def "field V00._hashHandle (fldOffset=0x0)" P-DEP
-; V28 tmp19 [V28 ] ( 6, 7 ) int -> [fp+0x38] do-not-enreg[X] addr-exposed single-def "field V00._hashSizeInBytes (fldOffset=0x8)" P-DEP
+; V27 tmp18 [V27 ] ( 6, 7 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed single-def "field V00._hashHandle (fldOffset=0x0)" P-DEP
+; V28 tmp19 [V28 ] ( 6, 7 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed single-def "field V00._hashSizeInBytes (fldOffset=0x8)" P-DEP
; V29 tmp20 [V29,T11] ( 2, 2 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V30 tmp21 [V30,T14] ( 2, 2 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V31 tmp22 [V31,T19] ( 3, 1 ) ref -> [fp+0x18] EH-live spill-single-def "field V03._hashHandle (fldOffset=0x0)" P-INDEP
+; V31 tmp22 [V31,T19] ( 3, 1 ) ref -> [fp+0x10] EH-live spill-single-def "field V03._hashHandle (fldOffset=0x0)" P-INDEP
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "field V03._hashSizeInBytes (fldOffset=0x8)" P-INDEP
;* V33 tmp24 [V33 ] ( 0, 0 ) ref -> zero-ref "field V07._hashHandle (fldOffset=0x0)" P-INDEP
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref "field V07._hashSizeInBytes (fldOffset=0x8)" P-INDEP
@@ -50,38 +50,37 @@
;* V39 tmp30 [V39 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
; V41 tmp32 [V41,T12] ( 2, 4 ) byref -> x1 "field V16._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp33 [V42,T15] ( 2, 4 ) int -> x3 "field V16._length (fldOffset=0x8)" P-INDEP
+; V42 tmp33 [V42,T15] ( 2, 4 ) int -> x2 "field V16._length (fldOffset=0x8)" P-INDEP
;* V43 tmp34 [V43 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
; V45 tmp36 [V45,T13] ( 2, 4 ) byref -> x1 "field V18._reference (fldOffset=0x0)" P-INDEP
-; V46 tmp37 [V46,T16] ( 2, 4 ) int -> x2 "field V18._length (fldOffset=0x8)" P-INDEP
+; V46 tmp37 [V46,T16] ( 2, 4 ) int -> x0 "field V18._length (fldOffset=0x8)" P-INDEP
;* V47 tmp38 [V47 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
; V49 tmp40 [V49,T04] ( 3, 10 ) byref -> x1 "field V25._reference (fldOffset=0x0)" P-INDEP
; V50 tmp41 [V50,T05] ( 3, 10 ) int -> x2 "field V25._length (fldOffset=0x8)" P-INDEP
-; V51 PSPSym [V51,T20] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V51 PSPSym [V51,T20] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M44613_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x48]
- stp x21, x22, [sp, #0x58]
- str x23, [sp, #0x68]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
mov fp, sp
- add x5, sp, #112
- str x5, [fp, #0x40] // [V51 PSPSym]
- stp x0, x1, [fp, #0x30] // [V00 arg0], [V00 arg0+0x08]
+ add x5, sp, #96
+ str x5, [fp, #0x38] // [V51 PSPSym]
+ stp x0, x1, [fp, #0x28] // [V00 arg0], [V00 arg0+0x08]
mov x19, x2
; gcrRegs +[x19]
mov x20, x3
; byrRegs +[x20]
mov w21, w4
- ;; size=44 bbWeight=1 PerfScore 8.50
+ ;; size=40 bbWeight=1 PerfScore 7.50
G_M44613_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- ldr x0, [fp, #0x30] // [V27 tmp18]
+ ldr x0, [fp, #0x28] // [V27 tmp18]
; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V31 tmp22]
+ str x0, [fp, #0x10] // [V31 tmp22]
; GC ptr vars +{V31}
;; size=8 bbWeight=1 PerfScore 3.00
G_M44613_IG03: ; bbWeight=1, gcVars=0000000000080000 {V31}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref
@@ -98,53 +97,54 @@ G_M44613_IG03: ; bbWeight=1, gcVars=0000000000080000 {V31}, gcrefRegs=800
ldr x2, [x2]
blr x2
; gcr arg pop 0
- str x0, [fp, #0x20] // [V04 loc1]
+ str x0, [fp, #0x18] // [V04 loc1]
; GC ptr vars +{V04}
- str wzr, [fp, #0x2C] // [V05 loc2]
+ str wzr, [fp, #0x24] // [V05 loc2]
;; size=48 bbWeight=1 PerfScore 12.50
G_M44613_IG04: ; bbWeight=1, gcVars=0000000000080004 {V04 V31}, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, gcvars, byref
b G_M44613_IG08
;; size=4 bbWeight=1 PerfScore 1.00
G_M44613_IG05: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x0]
- ldr w1, [fp, #0x2C] // [V05 loc2]
+ ldr w1, [fp, #0x24] // [V05 loc2]
cmp w1, w0
blt G_M44613_IG16
;; size=12 bbWeight=2.00 PerfScore 7.00
G_M44613_IG06: ; bbWeight=1.54, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- ldr w1, [fp, #0x2C] // [V05 loc2]
+ ldr w1, [fp, #0x24] // [V05 loc2]
;; size=4 bbWeight=1.54 PerfScore 3.08
G_M44613_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- str w1, [fp, #0x2C] // [V05 loc2]
- add x22, fp, #48 // [V00 arg0]
- ; byrRegs +[x22]
- ldr x23, [fp, #0x20] // [V04 loc1]
- ; gcrRegs +[x23]
- cbz x23, G_M44613_IG13
- ldr w1, [x23, #0x08]
+ str w1, [fp, #0x24] // [V05 loc2]
+ add x3, fp, #40 // [V00 arg0]
+ ; byrRegs +[x3]
+ ldr x22, [fp, #0x18] // [V04 loc1]
+ ; gcrRegs +[x22]
+ cbz x22, G_M44613_IG13
+ ldr w1, [x22, #0x08]
cmp w1, w0
blo G_M44613_IG13
- add x1, x23, #16
+ add x1, x22, #16
; byrRegs +[x1]
- sxtw w3, w0
- sxtw w2, w3
- cbz w2, G_M44613_IG08
- mov w2, w3
- ldr x0, [x22]
+ sxtw w2, w0
+ sxtw w0, w2
+ cbz w0, G_M44613_IG08
+ ldr x0, [x3]
; gcrRegs +[x0]
+ mov w3, w2
+ ; byrRegs -[x3]
mov w4, wzr
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
- ; gcrRegs -[x0 x23]
- ; byrRegs -[x1 x22]
+ ; gcrRegs -[x0 x22]
+ ; byrRegs -[x1]
; gcr arg pop 0
cbnz w0, G_M44613_IG14
;; size=80 bbWeight=2 PerfScore 44.00
G_M44613_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- ldr x0, [fp, #0x20] // [V04 loc1]
+ ldr x0, [fp, #0x18] // [V04 loc1]
; gcrRegs +[x0]
cbz x0, G_M44613_IG15
;; size=8 bbWeight=8 PerfScore 24.00
@@ -169,14 +169,12 @@ G_M44613_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=100002 {x1
;; size=28 bbWeight=8 PerfScore 96.00
G_M44613_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x19]
- ldr x23, [fp, #0x20] // [V04 loc1]
- ; gcrRegs +[x23]
mov x1, x20
; byrRegs +[x1]
mov w2, w21
- ldr x0, [fp, #0x30] // [V27 tmp18]
+ ldr x0, [fp, #0x28] // [V27 tmp18]
; gcrRegs +[x0]
- ldr w3, [fp, #0x38] // [V28 tmp19]
+ ldr w3, [fp, #0x30] // [V28 tmp19]
mov w4, wzr
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
@@ -187,10 +185,10 @@ G_M44613_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
; byrRegs -[x1 x20]
; gcr arg pop 0
cbnz w0, G_M44613_IG12
- ldr w22, [fp, #0x38] // [V28 tmp19]
+ ldr w19, [fp, #0x30] // [V28 tmp19]
b G_M44613_IG17
- ;; size=56 bbWeight=1 PerfScore 17.00
-G_M44613_IG12: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M44613_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -202,7 +200,8 @@ G_M44613_IG12: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M44613_IG13: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+G_M44613_IG13: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -212,7 +211,7 @@ G_M44613_IG13: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
G_M44613_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23]
+ ; gcrRegs -[x22]
mov w1, w0
mov w0, w1
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -240,23 +239,23 @@ G_M44613_IG16: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=100000 {
sxtw w1, w0
b G_M44613_IG07
;; size=8 bbWeight=0.46 PerfScore 0.69
-G_M44613_IG17: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] +[x23]
+G_M44613_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
; byrRegs -[x20]
- mov x0, x23
+ ldr x0, [fp, #0x18] // [V04 loc1]
; gcrRegs +[x0]
- ldr w1, [fp, #0x2C] // [V05 loc2]
+ ldr w1, [fp, #0x24] // [V05 loc2]
movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.CryptoPool:Return(ubyte[],int)
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
; GC ptr vars -{V04}
blr x2
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=28 bbWeight=1 PerfScore 8.00
+ ;; size=28 bbWeight=1 PerfScore 9.50
...
+40 (+3.65%) : 35085.dasm - System.Collections.Generic.GenericArraySortHelper1[DryIoc.ServiceRegistrationInfo]:IntroSort(System.Span
1[DryIoc.ServiceRegistrationInfo],int) (FullOpts)
@@ -9,8 +9,8 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[DryIoc.ServiceRegistrationInfo]>
-; V01 arg1 [V01,T03] ( 7, 19 ) int -> x20
-; V02 loc0 [V02,T01] ( 15, 29 ) int -> x22
+; V01 arg1 [V01,T04] ( 7, 19 ) int -> x20
+; V02 loc0 [V02,T00] ( 16, 33 ) int -> x22
; V03 loc1 [V03,T07] ( 3, 12 ) int -> x23
; V04 loc2 [V04,T14] ( 13, 6.50) byref -> x21 single-def
; V05 loc3 [V05,T15] ( 13, 6.50) byref -> x22 single-def
@@ -72,7 +72,7 @@
;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V62 tmp54 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V64 tmp56 [V64,T00] ( 4, 32 ) int -> x22 "Inlining Arg"
+; V64 tmp56 [V64,T01] ( 4, 32 ) int -> x22 "Inlining Arg"
;* V65 tmp57 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[DryIoc.ServiceRegistrationInfo]>
; V66 tmp58 [V66,T05] ( 2, 16 ) byref -> x24 "Inlining Arg"
;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -131,7 +131,7 @@
; V120 tmp112 [V120,T11] ( 2, 8 ) int -> x1 "field V60._length (fldOffset=0x8)" P-INDEP
; V121 tmp113 [V121,T10] ( 2, 8 ) byref -> x0 "field V65._reference (fldOffset=0x0)" P-INDEP
; V122 tmp114 [V122,T12] ( 2, 8 ) int -> x1 "field V65._length (fldOffset=0x8)" P-INDEP
-; V123 cse0 [V123,T04] ( 24, 16.50) ref -> x1 multi-def "CSE - aggressive"
+; V123 cse0 [V123,T03] ( 27, 22.50) ref -> x1 multi-def "CSE - aggressive"
; V124 cse1 [V124,T09] ( 3, 12 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -182,15 +182,31 @@ G_M32486_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
G_M32486_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w22, w21
cmp w21, #1
- ble G_M32486_IG22
+ ble G_M32486_IG24
;; size=12 bbWeight=1 PerfScore 2.00
G_M32486_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, #16
- ble G_M32486_IG11
- cbz w20, G_M32486_IG21
+ ble G_M32486_IG13
+ cbz w20, G_M32486_IG23
sub w20, w20, #1
cmp w22, w21
- bhi G_M32486_IG24
+ bhi G_M32486_IG26
+ tbz w22, #31, G_M32486_IG09
+ ;; size=28 bbWeight=4 PerfScore 22.00
+G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ movz x1, #8
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x1
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=2 PerfScore 15.00
+G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
sxtw w1, w22
mov x0, x19
; byrRegs +[x0]
@@ -207,14 +223,14 @@ G_M32486_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
add x1, x0, w22, UXTW
mov w2, w21
cmp x1, x2
- bhi G_M32486_IG24
+ bhi G_M32486_IG26
mov x1, #24
mul x0, x0, x1
add x24, x19, x0
; byrRegs +[x24]
- tbz w22, #31, G_M32486_IG09
- ;; size=100 bbWeight=4 PerfScore 80.00
-G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
+ tbz w22, #31, G_M32486_IG11
+ ;; size=76 bbWeight=4 PerfScore 62.00
+G_M32486_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -227,7 +243,7 @@ G_M32486_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=2 PerfScore 15.00
-G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
+G_M32486_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x24}, byref, isz
mov x0, x24
; byrRegs +[x0]
sxtw w1, w22
@@ -242,14 +258,14 @@ G_M32486_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1080000 {x19 x2
cmp w22, #1
bgt G_M32486_IG07
;; size=44 bbWeight=4 PerfScore 36.00
-G_M32486_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32486_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
cmp w22, #2
- bne G_M32486_IG13
+ bne G_M32486_IG15
add x22, x19, #24
; byrRegs +[x22]
ldrsb wzr, [x19]
@@ -263,9 +279,9 @@ G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
; gcrRegs -[x0]
sub w0, w1, w0
cmp w0, #0
- ble G_M32486_IG22
+ ble G_M32486_IG24
cmp x19, x22
- bne G_M32486_IG12
+ bne G_M32486_IG14
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -278,7 +294,7 @@ G_M32486_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
blr x2
; gcrRegs -[x0]
;; size=88 bbWeight=0.50 PerfScore 14.00
-G_M32486_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
+G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, byref
ldp x0, x1, [x19]
; gcrRegs +[x0-x1]
ldr x2, [x19, #0x10]
@@ -311,14 +327,14 @@ G_M32486_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=480000 {x19
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x2 x15]
; byrRegs -[x14 x22]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
cmp w22, #3
- bne G_M32486_IG19
+ bne G_M32486_IG21
cmp w21, #2
- bls G_M32486_IG23
+ bls G_M32486_IG25
add x21, x19, #48
; byrRegs +[x21]
add x22, x19, #24
@@ -334,9 +350,9 @@ G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
; gcrRegs -[x0]
sub w0, w1, w0
cmp w0, #0
- ble G_M32486_IG15
+ ble G_M32486_IG17
cmp x19, x22
- bne G_M32486_IG14
+ bne G_M32486_IG16
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -349,7 +365,7 @@ G_M32486_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
blr x2
; gcrRegs -[x0]
;; size=100 bbWeight=0.50 PerfScore 15.00
-G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp x0, x1, [x19]
; gcrRegs +[x0-x1]
ldr x2, [x19, #0x10]
@@ -382,7 +398,7 @@ G_M32486_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
; gcrRegs -[x2 x15]
; byrRegs -[x14]
;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
+G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref, isz
ldr x0, [x21]
; gcrRegs +[x0]
ldr x1, [x19]
@@ -393,9 +409,9 @@ G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
; gcrRegs -[x0]
sub w0, w1, w0
cmp w0, #0
- ble G_M32486_IG17
+ ble G_M32486_IG19
cmp x19, x21
- bne G_M32486_IG16
+ bne G_M32486_IG18
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -408,7 +424,7 @@ G_M32486_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
blr x2
; gcrRegs -[x0]
;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
+G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19 x21 x22}, byref
ldp x0, x1, [x19]
; gcrRegs +[x0-x1]
ldr x2, [x19, #0x10]
@@ -442,7 +458,7 @@ G_M32486_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=680000 {x19
; gcrRegs -[x2 x15]
; byrRegs -[x14]
;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M32486_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz
ldr x0, [x21]
; gcrRegs +[x0]
ldr x1, [x22]
@@ -453,9 +469,9 @@ G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21
; gcrRegs -[x0]
sub w0, w1, w0
cmp w0, #0
- ble G_M32486_IG22
+ ble G_M32486_IG24
cmp x22, x21
- bne G_M32486_IG18
+ bne G_M32486_IG20
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -468,7 +484,7 @@ G_M32486_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21
blr x2
; gcrRegs -[x0]
;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
+G_M32486_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref
ldp x0, x1, [x22]
; gcrRegs +[x0-x1]
ldr x2, [x22, #0x10]
@@ -501,13 +517,13 @@ G_M32486_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=600000 {x21
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x2 x15]
; byrRegs -[x14 x21]
- b G_M32486_IG22
+ b G_M32486_IG24
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M32486_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M32486_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
cmp w22, w21
- bhi G_M32486_IG24
- tbz w22, #31, G_M32486_IG20
+ bhi G_M32486_IG26
+ tbz w22, #31, G_M32486_IG22
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
...
+32 (+4.08%) : 12749.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x3 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> x4 "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> x19 "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> x1 single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x4 "field V03._index (fldOffset=0x8)" P-INDEP
-; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x5 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> x5 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> x6 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x3 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> x4 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [fp+0x18] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x21 "field V06.array (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> x20 "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> x1 single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> x1 single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x3 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> x4 "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> x2 "CSE - aggressive"
;
@@ -97,95 +97,73 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x20] // [V02 loc1]
+ mov x3, x0
+ ; gcrRegs +[x3]
+ str x3, [fp, #0x20] // [V02 loc1]
; GC ptr vars +{V02}
- ;; size=84 bbWeight=0.50 PerfScore 12.25
-G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=88 bbWeight=0.50 PerfScore 12.50
+G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x20, [fp, #0x28] // [V00 this]
- ; gcrRegs +[x20]
- ldr x1, [x20, #0x68]
+ ldr x0, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x1, [x0, #0x68]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
- mov w3, wzr
mov w4, wzr
+ mov w5, wzr
cmp w2, #0
- ble G_M10501_IG11
+ ble G_M10501_IG17
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M10501_IG07: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov w5, #24
- mov x6, #16
- umaddl x3, w3, w5, x6
- add x3, x1, x3
- ; byrRegs +[x3]
- ldr x5, [x3]
- ; gcrRegs +[x5]
- ldr x3, [x3, #0x10]
- ; gcrRegs +[x3]
- ; byrRegs -[x3]
- ldr x6, [x20, #0x50]
+G_M10501_IG07: ; bbWeight=4, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, #24
+ mov x7, #16
+ umaddl x4, w4, w6, x7
+ add x4, x1, x4
+ ; byrRegs +[x4]
+ ldr x6, [x4]
; gcrRegs +[x6]
- cmp x5, x6
+ ldr x4, [x4, #0x10]
+ ; gcrRegs +[x4]
+ ; byrRegs -[x4]
+ ldr x7, [x0, #0x50]
+ ; gcrRegs +[x7]
+ cmp x6, x7
beq G_M10501_IG09
;; size=36 bbWeight=4 PerfScore 68.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=18002A {x1 x3 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x6]
- ldr x6, [x20, #0x48]
- ; gcrRegs +[x6]
- cmp x5, x6
- bne G_M10501_IG10
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=8005B {x0 x1 x3 x4 x6 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x7]
+ ldr x7, [x0, #0x48]
+ ; gcrRegs +[x7]
+ cmp x6, x7
+ bne G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG09: ; bbWeight=2, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x5-x6 x19]
- mov x19, x3
+G_M10501_IG09: ; bbWeight=2, gcrefRegs=001B {x0 x1 x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x6-x7 x19]
+ mov x19, x4
; gcrRegs +[x19]
- ldr w3, [x19, #0x08]
- ; gcrRegs -[x3]
- cbnz w3, G_M10501_IG12
+ ldr w4, [x19, #0x08]
+ ; gcrRegs -[x4]
+ cbz w4, G_M10501_IG12
;; size=12 bbWeight=2 PerfScore 9.00
-G_M10501_IG10: ; bbWeight=4, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
- add w3, w4, #1
- sxtw w4, w3
- cmp w2, w4
- bgt G_M10501_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
- ; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00}
- blr x3
- ; gcrRegs -[x0-x2 x19-x20]
- ; gcr arg pop 0
- b G_M10501_IG17
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00}
- ldrb w1, [x20, #0x42]
- ldrb w2, [x20, #0x44]
+ ldrb w1, [x0, #0x42]
+ ldrb w2, [x0, #0x44]
orr w1, w1, w2
- cbz w1, G_M10501_IG13
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ cbz w1, G_M10501_IG11
+ ldr x0, [x0, #0x08]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V02 loc1]
+ mov x2, x3
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x0-x3]
; gcr arg pop 0
ldp x0, x1, [x20, #0x10]
; gcrRegs +[x0-x1]
@@ -198,28 +176,32 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=0.50 PerfScore 16.50
+G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x28] // [V00 this]
+ ; gcrRegs +[x20]
ldrb w2, [x20, #0x43]
ldrb w1, [x20, #0x44]
orr w2, w2, w1
- cbz w2, G_M10501_IG11
- ldr x2, [x20, #0x70]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ cbz w2, G_M10501_IG17
+ ldr x2, [x0, #0x70]
; gcrRegs +[x2]
- ldr x1, [x20, #0x28]
+ ldr x1, [x0, #0x28]
; gcrRegs +[x1]
mov x0, x19
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
+ movz x4, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1-x2 x20]
; gcr arg pop 0
str x0, [fp, #0x18] // [V21 tmp14]
; GC ptr vars +{V21}
- mov x0, x20
+ ldr x0, [fp, #0x28] // [V00 this]
ldr x1, [fp, #0x18] // [V21 tmp14]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -229,22 +211,38 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cbz w2, G_M10501_IG11
- ;; size=92 bbWeight=0.50 PerfScore 16.50
-G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w2, [x20, #0x43]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr w2, [x20, #0x08]
+ ldr x0, [fp, #0x28] // [V00 this]
+ cbz w2, G_M10501_IG17
+ ldr x3, [fp, #0x20] // [V02 loc1]
+ ; gcrRegs +[x3]
+ b G_M10501_IG14
+ ;; size=112 bbWeight=0.50 PerfScore 21.00
+G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20] +[x1]
+ ; GC ptr vars -{V21}
+ add w4, w5, #1
+ sxtw w5, w4
+ cmp w2, w5
+ bgt G_M10501_IG07
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ b G_M10501_IG17
...
+36 (+4.64%) : 100193.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
@@ -12,41 +12,43 @@
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V02 loc1 [V02,T03] ( 3, 9 ) ref -> x19 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03 ] ( 8, 14 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x21 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
+; V04 loc3 [V04,T02] ( 3, 12 ) ref -> x23 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T01] ( 7, 14 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp2 [V07,T07] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V07 tmp2 [V07,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp5 [V10,T09] ( 4, 3.50) ref -> x2
+; V10 tmp5 [V10,T11] ( 4, 3.50) ref -> x2
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass6_0>
; V12 tmp7 [V12,T00] ( 4, 32 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V13 tmp8 [V13,T05] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T12] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V18 tmp13 [V18,T08] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V19 tmp14 [V19,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V18 tmp13 [V18,T10] ( 2, 4 ) struct (40) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V19 tmp14 [V19,T15] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "V18.[000..008)"
-; V22 tmp17 [V22,T13] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
+; V22 tmp17 [V22,T14] ( 2, 2 ) int -> x0 single-def "V18.[008..012)"
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "V18.[012..016)"
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "V18.[016..020)"
;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V27 tmp22 [V27,T15] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V28 tmp23 [V28,T16] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V29 cse0 [V29,T04] ( 3, 6 ) long -> x20 "CSE - aggressive"
-; V30 cse1 [V30,T10] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
-; V31 cse2 [V31,T11] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V27 tmp22 [V27,T16] ( 2, 0 ) ref -> x0 "argument with side effect"
+; V28 tmp23 [V28,T17] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V29 cse0 [V29,T07] ( 2, 5 ) long -> x21 hoist "CSE - aggressive"
+; V30 cse1 [V30,T08] ( 2, 5 ) long -> x22 hoist "CSE - aggressive"
+; V31 cse2 [V31,T04] ( 3, 6 ) long -> x20 "CSE - aggressive"
+; V32 cse3 [V32,T12] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
;
; Lcl frame size = 88
G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x68]
- str x21, [sp, #0x78]
+ stp x21, x22, [sp, #0x78]
+ str x23, [sp, #0x88]
mov fp, sp
add x9, fp, #24
movi v16.16b, #0
@@ -55,7 +57,7 @@ G_M64326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, xzr, [x9, #0x40]
mov x19, x0
; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M64326_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -139,10 +141,10 @@ G_M64326_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 3.75
G_M64326_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- ldr x2, [x21]
+ movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x2, [x0]
; gcrRegs +[x2]
cbnz x2, G_M64326_IG08
;; size=20 bbWeight=1 PerfScore 5.50
@@ -155,7 +157,10 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]
- ldr x15, [x21, #-0x68]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ ldr x15, [x14]
; gcrRegs +[x15]
add x14, x2, #8
; byrRegs +[x14]
@@ -166,12 +171,14 @@ G_M64326_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
str x14, [x2, #0x18]
- mov x14, x21
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=80 bbWeight=0.50 PerfScore 7.25
G_M64326_IG08: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
@@ -213,34 +220,36 @@ G_M64326_IG10: ; bbWeight=1, isz, extend
ldr x2, [x2]
blr x2
cbz w0, G_M64326_IG12
- ;; size=60 bbWeight=1 PerfScore 12.50
+ movz x21, #0xD1FFAB1E
+ movk x21, #0xD1FFAB1E LSL #16
+ movk x21, #0xD1FFAB1E LSL #32
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #0xD1FFAB1E LSL #32
+ ;; size=84 bbWeight=1 PerfScore 15.50
G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x21
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #8
+ mov x23, x0
+ ; gcrRegs +[x23]
+ add x14, x23, #8
; byrRegs +[x14]
add x13, fp, #88 // [V03 loc2+0x18]
; byrRegs +[x13]
bl CORINFO_HELP_ASSIGN_BYREF
; gcrRegs -[x0]
bl CORINFO_HELP_ASSIGN_BYREF
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x22
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; byrRegs -[x13-x14]
add x14, x0, #8
; byrRegs +[x14]
- mov x15, x21
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x21]
+ ; gcrRegs -[x15 x23]
; byrRegs -[x14]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -273,14 +282,15 @@ G_M64326_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x2]
blr x2
cbnz w0, G_M64326_IG11
- ;; size=168 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 116.00
G_M64326_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
- ldr x21, [sp, #0x78]
+ ldr x23, [sp, #0x88]
+ ldp x21, x22, [sp, #0x78]
ldp x19, x20, [sp, #0x68]
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -318,7 +328,7 @@ G_M64326_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=104 bbWeight=0 PerfScore 0.00
-Total bytes of code 776, prolog size 36, PerfScore 223.00, instruction count 194, allocated bytes for code 776 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
+Total bytes of code 812, prolog size 40, PerfScore 221.25, instruction count 203, allocated bytes for code 812 (MethodHash=de3304b9) for method System.Diagnostics.Tests.ProcessStartInfoTests:EnvironmentGetEnvironmentVariablesIsCaseSensitive():this (FullOpts)
; ============================================================
Unwind Info:
@@ -329,7 +339,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 194 (0x000c2) Actual length = 776 (0x000308)
+ Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -337,9 +347,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ D1 11 save_reg X#4 Z#17 (0x11); str x23, [sp, #136]
+ E6 save_next
C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
- E4 end
+ 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
E4 end
realworld.run.windows.arm64.checked.mch
-40 (-27.03%) : 14768.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,13 +7,13 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 7, 5 ) int -> x1 single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> x3
-; V03 loc1 [V03,T01] ( 6, 12 ) ushort -> x5
+; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T03] ( 6, 4.50) int -> x1 single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> x3
+; V03 loc1 [V03,T01] ( 3, 12 ) ushort -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 6.54) int -> x2 "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 4, 4.54) byref -> x4 hoist multi-def "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 5, 10.50) int -> x2 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,64 +35,46 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
sxtw w3, w1
- tbnz w1, #31, G_M3357_IG08
- add x4, x0, #12
- ; byrRegs +[x4]
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
+ add x0, x0, #12
; gcrRegs -[x0]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
+ ; byrRegs +[x0]
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w3, w2
+ bhs G_M3357_IG11
+ ldrh w4, [x0, w3, UXTW #2]
+ cmp w4, #32
+ ccmp w4, #9, z, ne
+ bne G_M3357_IG09
add w3, w3, #1
cmp w2, w3
bgt G_M3357_IG06
- ;; size=28 bbWeight=3.96 PerfScore 27.72
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x4]
- b G_M3357_IG09
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3357_IG08: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- cmp w3, w2
- bhs G_M3357_IG13
- add x4, x0, #12
- ; byrRegs +[x4]
- ldrh w5, [x4, w3, UXTW #2]
- cmp w5, #32
- ccmp w5, #9, z, ne
- bne G_M3357_IG11
- add w3, w3, #1
- cmp w2, w3
- bgt G_M3357_IG08
- ;; size=40 bbWeight=0.04 PerfScore 0.36
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x4]
+ ; byrRegs -[x0]
sub w0, w2, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M3357_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M3357_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ sub w0, w3, w1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- sub w0, w3, w1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 8, PerfScore 39.33, instruction count 37, allocated bytes for code 148 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 108, prolog size 8, PerfScore 44.25, instruction count 27, allocated bytes for code 108 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.77%) : 20324.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)
@@ -74,7 +74,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cmp w1, #1
beq G_M39186_IG23
mov w19, wzr
- b G_M39186_IG35
+ b G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w1, #0
@@ -290,7 +290,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
mov w21, wzr
ldr w11, [x0, #0x30]
cmp w11, #0
- ble G_M39186_IG29
+ ble G_M39186_IG37
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -300,11 +300,11 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x11]
ldr w1, [x11, #0x10]
cmp w21, w1
- bhs G_M39186_IG30
+ bhs G_M39186_IG27
ldr x11, [x11, #0x08]
ldr w1, [x11, #0x08]
cmp w21, w1
- bhs G_M39186_IG31
+ bhs G_M39186_IG26
add x11, x11, #16
; gcrRegs -[x11]
; byrRegs +[x11]
@@ -320,10 +320,40 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M39186_IG34
- cbnz x20, G_M39186_IG27
- ;; size=80 bbWeight=4 PerfScore 116.00
-G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M39186_IG28
+ ;; size=76 bbWeight=4 PerfScore 112.00
+G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20 x22]
+ mov w19, wzr
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ movz x1, #0xD1FFAB1E // code for <unknown method>
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ b G_M39186_IG38
+ ;; size=32 bbWeight=0.50 PerfScore 4.50
+G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M39186_IG28: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20 x22]
+ cbnz x20, G_M39186_IG33
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M39186_IG29: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
@@ -331,10 +361,22 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
ldr x2, [x1, #0x38]
ldr x2, [x2]
ldr x2, [x2, #0x38]
- cbz x2, G_M39186_IG32
+ cbz x2, G_M39186_IG31
;; size=24 bbWeight=2 PerfScore 30.00
-G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ b G_M39186_IG32
+ ;; size=4 bbWeight=1.60 PerfScore 1.60
+G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov x2, x0
+ ;; size=24 bbWeight=0.40 PerfScore 1.40
+G_M39186_IG32: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x2
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -345,7 +387,7 @@ G_M39186_IG26: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
mov x20, x0
; gcrRegs +[x20]
;; size=20 bbWeight=2 PerfScore 14.00
-G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19]
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -353,9 +395,20 @@ G_M39186_IG27: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x11, [x1, #0x30]
- cbz x11, G_M39186_IG33
+ cbz x11, G_M39186_IG35
;; size=24 bbWeight=4 PerfScore 60.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ b G_M39186_IG36
+ ;; size=4 bbWeight=3.20 PerfScore 3.20
+G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov x11, x0
+ ;; size=20 bbWeight=0.80 PerfScore 2.40
+G_M39186_IG36: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
ldr x1, [x11]
@@ -374,7 +427,7 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00
cmp w21, w14
blt G_M39186_IG24
;; size=44 bbWeight=4 PerfScore 48.00
-G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
ldr x19, [fp, #0x18] // [V00 this]
; gcrRegs +[x19]
@@ -390,68 +443,17 @@ G_M39186_IG29: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
sxtw w20, w0
mov w19, w20
; gcrRegs -[x19]
- b G_M39186_IG35
- ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M39186_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcr arg pop 0
- brk_windows #0
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M39186_IG32: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x22]
- mov x0, x1
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov x2, x0
- b G_M39186_IG26
- ;; size=28 bbWeight=0.40 PerfScore 1.80
-G_M39186_IG33: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov x11, x0
- b G_M39186_IG28
- ;; size=24 bbWeight=0.80 PerfScore 3.20
-G_M39186_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20 x22]
- ldr x19, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x19]
- mov w20, wzr
- mov x0, x19
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0 x19]
- ; gcr arg pop 0
- mov w19, w20
- ;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M39186_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.25
+G_M39186_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w19
;; size=4 bbWeight=1 PerfScore 0.50
-G_M39186_IG36: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x50
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V03 V24}
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
@@ -459,10 +461,10 @@ G_M39186_IG37: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs
add x3, fp, #80
str x3, [sp, #0x18]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x10] // [V03 loc2]
; gcrRegs +[x0]
- cbz x0, G_M39186_IG39
+ cbz x0, G_M39186_IG42
movz x19, #0xD1FFAB1E
movk x19, #0xD1FFAB1E LSL #16
movk x19, #0xD1FFAB1E LSL #32
@@ -473,20 +475,20 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
add x3, fp, #80
str x3, [sp, #0x18]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG44: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
-4 (-0.15%) : 2117.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -23,24 +23,24 @@
; V12 loc8 [V12,T17] ( 6, 32 ) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T16] ( 7, 42 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def
+; V15 loc11 [V15,T30] ( 5, 20 ) int -> [fp+0x5C] spill-single-def
; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T71] ( 3, 2 ) ref -> x1
;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> x27
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> x27
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V27 tmp5 [V27,T38] ( 2, 16 ) int -> x1 "impAppendStmt"
;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [fp+0x4C] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T35] ( 2, 16 ) byref -> x28 "Inlining Arg"
;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -67,13 +67,13 @@
;* V56 tmp34 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V57 tmp35 [V57,T52] ( 2, 8 ) byref -> [fp+0x20] spill-single-def "Inlining Arg"
;* V58 tmp36 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp37 [V59,T23] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
-; V60 tmp38 [V60,T26] ( 3, 24 ) int -> x2 "Inlining Arg"
-; V61 tmp39 [V61,T27] ( 3, 24 ) int -> x4 "Inlining Arg"
+; V59 tmp37 [V59,T22] ( 3, 24 ) ref -> x5 class-hnd "Inlining Arg" <ushort[]>
+; V60 tmp38 [V60,T25] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V61 tmp39 [V61,T26] ( 3, 24 ) int -> x4 "Inlining Arg"
;* V62 tmp40 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V63 tmp41 [V63,T36] ( 2, 16 ) ref -> x2 class-hnd "Inlining Arg" <ushort[]>
; V64 tmp42 [V64,T39] ( 2, 16 ) int -> x4 "Inlining Arg"
-; V65 tmp43 [V65,T28] ( 3, 24 ) int -> x5 "Inlining Arg"
+; V65 tmp43 [V65,T27] ( 3, 24 ) int -> x5 "Inlining Arg"
;* V66 tmp44 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V67 tmp45 [V67,T15] ( 8, 40 ) int -> x26 "Inlining Arg"
; V68 tmp46 [V68,T64] ( 3, 6 ) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]>
@@ -90,14 +90,14 @@
;* V79 tmp57 [V79 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V81 tmp59 [V81,T04] ( 8, 256 ) int -> x26 "Inlining Arg"
-; V82 tmp60 [V82,T24] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
-; V83 tmp61 [V83,T29] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
+; V82 tmp60 [V82,T23] ( 3, 24 ) ref -> x1 class-hnd "Inline stloc first use temp" <ushort[]>
+; V83 tmp61 [V83,T28] ( 3, 24 ) int -> x0 "Inline stloc first use temp"
;* V84 tmp62 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V85 tmp63 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
; V87 tmp65 [V87,T62] ( 2, 5 ) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V88 tmp66 [V88,T63] ( 2, 5 ) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V89 tmp67 [V89,T30] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T29] ( 5, 20 ) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
; V90 tmp68 [V90,T19] ( 7, 30 ) int -> [fp+0x44] "field V09._length (fldOffset=0x8)" P-INDEP
;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
@@ -263,8 +263,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x40] // [V100 tmp78]
cmp w1, w2
bhi G_M4730_IG74
- cmp w1, #0
- cset x0, ge
+ mov w0, #1
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -301,7 +300,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w3, [x1, #0x08]
cmp w3, w0
bls G_M4730_IG09
- ;; size=240 bbWeight=4 PerfScore 262.00
+ ;; size=236 bbWeight=4 PerfScore 260.00
G_M4730_IG08: ; bbWeight=2, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref
; byrRegs -[x27]
add x1, x1, #16
@@ -496,7 +495,7 @@ G_M4730_IG27: ; bbWeight=16, gcVars=00000000000000000000000000000000 {},
beq G_M4730_IG67
b G_M4730_IG27
;; size=36 bbWeight=16 PerfScore 144.00
-G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
+G_M4730_IG28: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref
; GC ptr vars +{V89}
str w1, [fp, #0x60] // [V10 loc6]
mov w28, w2
@@ -538,7 +537,7 @@ G_M4730_IG29: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; GC ptr vars +{V89}
ldr w28, [fp, #0x68] // [V07 loc3]
;; size=104 bbWeight=2 PerfScore 50.00
-G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V89}, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; byrRegs -[x1 x3]
; GC ptr vars -{V57}
cmp w25, w26
@@ -567,7 +566,7 @@ G_M4730_IG30: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V89}
; GC ptr vars +{V13}
cbz x24, G_M4730_IG39
;; size=76 bbWeight=4 PerfScore 84.00
-G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs -[x2 x26]
ldr w26, [fp, #0x44] // [V90 tmp68]
cbz w26, G_M4730_IG32
@@ -718,7 +717,7 @@ G_M4730_IG36: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
str w0, [x19, #0x18]
b G_M4730_IG41
;; size=76 bbWeight=2 PerfScore 40.00
-G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG37: ; bbWeight=1, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380004 {x2 x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x2 x27]
; GC ptr vars +{V13 V16 V89}
b G_M4730_IG42
@@ -732,7 +731,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
; gcrRegs -[x26]
b G_M4730_IG47
;; size=12 bbWeight=2 PerfScore 7.00
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs +[x26]
; GC ptr vars +{V13 V16 V89}
ldr x2, [fp, #0x30] // [V13 loc9]
@@ -766,7 +765,7 @@ G_M4730_IG41: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcr arg pop 0
b G_M4730_IG06
;; size=28 bbWeight=16 PerfScore 112.00
-G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000040010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M4730_IG42: ; bbWeight=8, gcVars=00000000000000000000000020010000 {V13 V89}, gcrefRegs=9380000 {x19 x20 x21 x24 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
; gcrRegs +[x27]
; GC ptr vars +{V13 V16 V89}
ldr x1, [fp, #0x30] // [V13 loc9]
@@ -1216,7 +1215,7 @@ G_M4730_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 2704, prolog size 48, PerfScore 6977.50, instruction count 676, allocated bytes for code 2704 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2700, prolog size 48, PerfScore 6975.50, instruction count 675, allocated bytes for code 2700 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1227,7 +1226,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 676 (0x002a4) Actual length = 2704 (0x000a90)
+ Function Length : 675 (0x002a3) Actual length = 2700 (0x000a8c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+1.56%) : 23309.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
@@ -38,7 +38,7 @@ G_M17353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M17353_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x20, x19
; gcrRegs +[x20]
- cbz x19, G_M17353_IG09
+ cbz x19, G_M17353_IG08
;; size=8 bbWeight=1 PerfScore 1.50
G_M17353_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
@@ -69,7 +69,7 @@ G_M17353_IG04: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x8, x0
- bne G_M17353_IG11
+ bne G_M17353_IG12
mov x21, x20
; gcrRegs +[x21]
add x8, fp, #16 // [V03 loc2]
@@ -103,27 +103,31 @@ G_M17353_IG06: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=12 bbWeight=2 PerfScore 9.00
G_M17353_IG07: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
+ b G_M17353_IG10
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17353_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M17353_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M17353_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x21]
mov x0, x21
; gcrRegs +[x0]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M17353_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x21]
- mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17353_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x20]
+G_M17353_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x21] +[x20]
mov x1, x20
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
@@ -131,7 +135,7 @@ G_M17353_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
brk_windows #0
;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 256, prolog size 24, PerfScore 152.00, instruction count 64, allocated bytes for code 256 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
+Total bytes of code 260, prolog size 24, PerfScore 152.50, instruction count 65, allocated bytes for code 260 (MethodHash=d4d4bc36) for method Microsoft.CodeAnalysis.CSharp.SyntaxFactory:FindConditionalAccessNodeForBinding(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+1.96%) : 24840.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int
@@ -10,15 +10,15 @@
;
;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T03] ( 6, 10 ) ref -> x20 class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]>
-; V04 loc0 [V04 ] ( 8, 13.50) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
+; V04 loc0 [V04 ] ( 9, 14 ) struct ( 8) [fp+0x18] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
; V05 loc1 [V05,T06] ( 5, 8.50) ref -> x23 ld-addr-op class-hnd <System.__Canon>
;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
; V07 loc3 [V07,T00] ( 6, 18.50) int -> x24
; V08 loc4 [V08,T04] ( 4, 12 ) ref -> x26 class-hnd <System.__Canon>
; V09 loc5 [V09,T09] ( 4, 8 ) int -> x0
-; V10 loc6 [V10,T02] ( 6, 12.50) int -> x24
+; V10 loc6 [V10,T01] ( 7, 17 ) int -> x24
; V11 loc7 [V11,T12] ( 3, 6 ) ref -> x25 class-hnd <System.__Canon>
; V12 loc8 [V12,T13] ( 3, 6 ) int -> x0
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -28,7 +28,7 @@
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp5 [V18,T11] ( 4, 4.50) ref -> x21 single-def "field V01.array (fldOffset=0x0)" P-INDEP
; V19 tmp6 [V19,T10] ( 6, 7.50) ubyte -> [fp+0x18] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp7 [V20,T05] ( 5, 9 ) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
+; V20 tmp7 [V20,T05] ( 6, 9.50) int -> [fp+0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP
; V23 cse0 [V23,T14] ( 2, 1 ) int -> x0 "CSE - moderate"
@@ -143,13 +143,15 @@ G_M52223_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
mov w24, wzr
- b G_M52223_IG16
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ldr w1, [fp, #0x1C] // [V20 tmp7]
+ cmp w24, w1
+ bge G_M52223_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w22
- bhs G_M52223_IG21
+ bhs G_M52223_IG20
add x25, x21, #16
; byrRegs +[x25]
ldr x25, [x25, w24, UXTW #3]
@@ -174,21 +176,19 @@ G_M52223_IG14: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
; gcrRegs -[x0-x2 x25]
cbz w0, G_M52223_IG15
cmp w0, #3
- bne G_M52223_IG19
+ bne G_M52223_IG18
;; size=68 bbWeight=2 PerfScore 48.00
-G_M52223_IG15: ; bbWeight=2, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M52223_IG15: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M52223_IG16: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- ldr w1, [fp, #0x1C] // [V20 tmp7]
- cmp w24, w1
+ ldr w0, [fp, #0x1C] // [V20 tmp7]
+ cmp w24, w0
blt G_M52223_IG14
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M52223_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 16.00
+G_M52223_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21 x23]
ldr x0, [fp, #0x18] // [V04 loc0]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -196,10 +196,10 @@ G_M52223_IG18: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG19: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -207,12 +207,12 @@ G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M52223_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 408, prolog size 28, PerfScore 189.00, instruction count 102, allocated bytes for code 408 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 416, prolog size 28, PerfScore 191.25, instruction count 104, allocated bytes for code 416 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================
Unwind Info:
@@ -223,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 102 (0x00066) Actual length = 408 (0x000198)
+ Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+3.94%) : 2910.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 8, 30.50) ref -> x19 class-hnd <System.String[]>
+; V00 arg0 [V00,T08] ( 9, 30.50) ref -> x19 class-hnd <System.String[]>
; V01 loc0 [V01,T13] ( 5, 28 ) long -> x21
; V02 loc1 [V02,T14] ( 5, 24 ) int -> x21
; V03 loc2 [V03,T12] ( 5, 28.50) ref -> x23 class-hnd exact <System.String>
-; V04 loc3 [V04,T02] ( 8, 50 ) int -> x24
+; V04 loc3 [V04,T03] ( 8, 50 ) int -> x24
; V05 loc4 [V05,T00] ( 5, 68 ) int -> x0
; V06 loc5 [V06,T06] ( 3, 40 ) ref -> x1 class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> x25
@@ -28,8 +28,8 @@
;* V17 tmp7 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V18 tmp8 [V18,T18] ( 4, 5 ) ref -> x0 "Single return block return value"
; V19 tmp9 [V19,T16] ( 2, 16 ) ref -> x19 single-def "arg temp"
-; V20 cse0 [V20,T07] ( 3, 36 ) byref -> x22 hoist "CSE - aggressive"
-; V21 cse1 [V21,T03] ( 6, 49 ) int -> x20 "CSE - aggressive"
+; V20 cse0 [V20,T02] ( 8, 57 ) int -> x20 "CSE - aggressive"
+; V21 cse1 [V21,T07] ( 4, 36 ) byref -> x22 hoist multi-def "CSE - aggressive"
; V22 cse2 [V22,T05] ( 5, 40 ) int -> x27 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -46,37 +46,42 @@ G_M46295_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M46295_IG02: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M46295_IG20
+ cbz x19, G_M46295_IG22
ldr w20, [x19, #0x08]
cmp w20, #1
- ble G_M46295_IG14
+ ble G_M46295_IG16
;; size=16 bbWeight=8 PerfScore 44.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x21, xzr
mov w0, wzr
+ cmp w20, #0
+ ble G_M46295_IG08
+ ;; size=16 bbWeight=4 PerfScore 10.00
+G_M46295_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46295_IG04: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG05: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x22, w0, UXTW #3]
; gcrRegs +[x1]
- cbz x1, G_M46295_IG06
+ cbz x1, G_M46295_IG07
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG05: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
+G_M46295_IG06: ; bbWeight=8, gcrefRegs=80002 {x1 x19}, byrefRegs=400000 {x22}, byref
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
add x21, x21, w1, UXTW
;; size=8 bbWeight=8 PerfScore 32.00
-G_M46295_IG06: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG07: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w0, w0, #1
cmp w20, w0
- bgt G_M46295_IG04
+ bgt G_M46295_IG05
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x22]
mov x0, #0xD1FFAB1E
cmp x21, x0
- bgt G_M46295_IG21
- cbz w21, G_M46295_IG15
+ bgt G_M46295_IG23
+ cbz w21, G_M46295_IG17
mov w0, w21
bl <unknown method>
; gcrRegs +[x0]
@@ -85,20 +90,26 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22
; gcrRegs +[x23]
mov w24, wzr
mov w25, wzr
- ;; size=36 bbWeight=4 PerfScore 24.00
-G_M46295_IG08: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+ cmp w20, #0
+ ble G_M46295_IG15
+ ;; size=44 bbWeight=4 PerfScore 30.00
+G_M46295_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ add x22, x19, #16
+ ; byrRegs +[x22]
+ ;; size=4 bbWeight=2 PerfScore 1.00
+G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
ldr x26, [x22, w25, UXTW #3]
; gcrRegs +[x26]
- cbz x26, G_M46295_IG10
+ cbz x26, G_M46295_IG12
;; size=8 bbWeight=16 PerfScore 64.00
-G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG11: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x26, #0x08]
- cbz w27, G_M46295_IG10
+ cbz w27, G_M46295_IG12
sxtw w28, w27
sub w0, w21, w24
cmp w0, w28
- blt G_M46295_IG12
+ blt G_M46295_IG14
cmp x23, #0
cset x0, ne
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -144,21 +155,21 @@ G_M46295_IG09: ; bbWeight=8, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=4
; gcr arg pop 0
add w24, w24, w28
;; size=160 bbWeight=8 PerfScore 312.00
-G_M46295_IG10: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
+G_M46295_IG12: ; bbWeight=16, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
add w25, w25, #1
cmp w20, w25
- bgt G_M46295_IG08
+ bgt G_M46295_IG10
;; size=12 bbWeight=16 PerfScore 32.00
-G_M46295_IG11: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
- b G_M46295_IG13
+ b G_M46295_IG15
;; size=4 bbWeight=4 PerfScore 4.00
-G_M46295_IG12: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M46295_IG14: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movn w24, #0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG15: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cmp w24, w21
- beq G_M46295_IG18
+ beq G_M46295_IG20
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -172,28 +183,28 @@ G_M46295_IG13: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs +[x19]
b G_M46295_IG02
;; size=40 bbWeight=4 PerfScore 36.00
-G_M46295_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M46295_IG16
+ cbz w20, G_M46295_IG18
cmp w20, #0
- bls G_M46295_IG19
+ bls G_M46295_IG21
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M46295_IG17
+ cbnz x0, G_M46295_IG19
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46295_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- b G_M46295_IG17
+ b G_M46295_IG19
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M46295_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46295_IG19: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0]
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
@@ -203,18 +214,18 @@ G_M46295_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M46295_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
+G_M46295_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x23]
mov x0, x23
; gcrRegs +[x0]
- b G_M46295_IG17
+ b G_M46295_IG19
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46295_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46295_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -231,7 +242,7 @@ G_M46295_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46295_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -241,7 +252,7 @@ G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 508, prolog size 32, PerfScore 671.00, instruction count 127, allocated bytes for code 508 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 528, prolog size 32, PerfScore 683.00, instruction count 132, allocated bytes for code 528 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -252,7 +263,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 127 (0x0007f) Actual length = 508 (0x0001fc)
+ Function Length : 132 (0x00084) Actual length = 528 (0x000210)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.arm64.checked.mch |
20 |
7 |
6 |
7 |
-232 |
+372 |
benchmarks.run_pgo.windows.arm64.checked.mch |
474 |
357 |
70 |
47 |
-6,824 |
+2,748 |
benchmarks.run_tiered.windows.arm64.checked.mch |
8 |
0 |
3 |
5 |
-0 |
+140 |
coreclr_tests.run.windows.arm64.checked.mch |
225 |
40 |
87 |
98 |
-312 |
+1,028 |
libraries.crossgen2.windows.arm64.checked.mch |
1 |
0 |
0 |
1 |
-0 |
+0 |
libraries.pmi.windows.arm64.checked.mch |
192 |
50 |
63 |
79 |
-484 |
+1,896 |
libraries_tests.run.windows.arm64.Release.mch |
832 |
424 |
199 |
209 |
-5,584 |
+1,880 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
224 |
63 |
60 |
101 |
-944 |
+1,228 |
realworld.run.windows.arm64.checked.mch |
27 |
7 |
12 |
8 |
-68 |
+184 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2,003 |
948 |
500 |
555 |
-14,448 |
+9,476 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.arm64.checked.mch |
24,455 |
4 |
24,451 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.windows.arm64.checked.mch |
97,527 |
48,627 |
48,900 |
13 (0.01%) |
13 (0.01%) |
benchmarks.run_tiered.windows.arm64.checked.mch |
49,174 |
36,718 |
12,456 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.windows.arm64.checked.mch |
595,172 |
362,437 |
232,735 |
11 (0.00%) |
11 (0.00%) |
libraries.crossgen2.windows.arm64.checked.mch |
2,130 |
0 |
2,130 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.arm64.checked.mch |
305,519 |
6 |
305,513 |
3 (0.00%) |
3 (0.00%) |
libraries_tests.run.windows.arm64.Release.mch |
646,533 |
468,460 |
178,073 |
107 (0.02%) |
107 (0.02%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
317,022 |
21,598 |
295,424 |
4 (0.00%) |
4 (0.00%) |
realworld.run.windows.arm64.checked.mch |
33,241 |
3 |
33,238 |
1 (0.00%) |
1 (0.00%) |
smoke_tests.nativeaot.windows.arm64.checked.mch |
77 |
0 |
77 |
0 (0.00%) |
0 (0.00%) |
|
2,070,850 |
937,853 |
1,132,997 |
139 (0.01%) |
139 (0.01%) |
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10966596 (overridden on cmd)
Total bytes of diff: 10966736 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 20 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 46609220 (overridden on cmd)
Total bytes of diff: 46605144 (overridden on cmd)
Total bytes of delta: -4076 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 100 unchanged.
benchmarks.run_tiered.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15506140 (overridden on cmd)
Total bytes of diff: 15506280 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 8 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 496298628 (overridden on cmd)
Total bytes of diff: 496299344 (overridden on cmd)
Total bytes of delta: 716 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 84 unchanged.
libraries.crossgen2.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 338836 (overridden on cmd)
Total bytes of diff: 338836 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79834280 (overridden on cmd)
Total bytes of diff: 79835692 (overridden on cmd)
Total bytes of delta: 1412 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 72 unchanged.
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 326696628 (overridden on cmd)
Total bytes of diff: 326692924 (overridden on cmd)
Total bytes of delta: -3704 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 79 unchanged.
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 171564828 (overridden on cmd)
Total bytes of diff: 171565112 (overridden on cmd)
Total bytes of delta: 284 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 70 unchanged.
realworld.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15891320 (overridden on cmd)
Total bytes of diff: 15891436 (overridden on cmd)
Total bytes of delta: 116 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 27 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
windows x64
Diffs are based on 2,098,526 contexts (926,221 MinOpts, 1,172,305 FullOpts).
MISSED contexts: 138 (0.01%)
Overall (-9,853 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x64.checked.mch |
8,737,750 |
-4 |
benchmarks.run_pgo.windows.x64.checked.mch |
35,778,033 |
-6,318 |
benchmarks.run_tiered.windows.x64.checked.mch |
12,549,088 |
+97 |
coreclr_tests.run.windows.x64.checked.mch |
392,964,649 |
-153 |
libraries.crossgen2.windows.x64.checked.mch |
214,877 |
-1 |
libraries.pmi.windows.x64.checked.mch |
61,646,281 |
+1,038 |
libraries_tests.run.windows.x64.Release.mch |
278,843,071 |
-3,828 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
137,561,184 |
-698 |
realworld.run.windows.x64.checked.mch |
14,184,922 |
+14 |
FullOpts (-9,853 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x64.checked.mch |
8,737,387 |
-4 |
benchmarks.run_pgo.windows.x64.checked.mch |
21,745,952 |
-6,318 |
benchmarks.run_tiered.windows.x64.checked.mch |
3,453,351 |
+97 |
coreclr_tests.run.windows.x64.checked.mch |
120,242,671 |
-153 |
libraries.crossgen2.windows.x64.checked.mch |
214,877 |
-1 |
libraries.pmi.windows.x64.checked.mch |
61,532,760 |
+1,038 |
libraries_tests.run.windows.x64.Release.mch |
106,668,455 |
-3,828 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
126,635,118 |
-698 |
realworld.run.windows.x64.checked.mch |
13,798,313 |
+14 |
Example diffs
benchmarks.run.windows.x64.checked.mch
-35 (-30.97%) : 5566.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov r8d, edx
- test edx, edx
- jl SHORT G_M3357_IG10
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax
+ jae SHORT G_M3357_IG13
mov r10d, r8d
movzx r10, word ptr [rcx+2*r10+0x0C]
cmp r10d, 32
je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d
cmp eax, r8d
jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
- cmp r8d, eax
- jae SHORT G_M3357_IG17
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
- cmp r10d, 32
- je SHORT G_M3357_IG12
- ;; size=20 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- cmp eax, r8d
- jg SHORT G_M3357_IG10
- ;; size=8 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
sub eax, edx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d
sub eax, edx
;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-28 (-3.78%) : 1310.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+FullInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+FullNullabilityHandler[ulong]](System.ReadOnlySpan
1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (FullOpts)
@@ -126,63 +126,130 @@ G_M6149_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi
; gcrRegs +[rcx]
mov edx, dword ptr [rsi+0x08]
cmp edx, dword ptr [rcx+0x08]
- jae G_M6149_IG16
+ jae SHORT G_M6149_IG07
movzx r13, byte ptr [rcx+rdx+0x10]
test r13b, 1
je SHORT G_M6149_IG05
- ;; size=28 bbWeight=8 PerfScore 90.00
+ ;; size=24 bbWeight=8 PerfScore 90.00
G_M6149_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
; gcrRegs -[rcx]
mov ecx, dword ptr [rbp-0x3C]
mov dword ptr [rbp-0x4C], ecx
;; size=6 bbWeight=2 PerfScore 4.00
-G_M6149_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 2
- jne G_M6149_IG25
- ;; size=10 bbWeight=8 PerfScore 10.00
-G_M6149_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ je SHORT G_M6149_IG08
+ ;; size=6 bbWeight=8 PerfScore 10.00
+G_M6149_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi rdi]
+ mov ecx, 1
+ jmp G_M6149_IG28
+ ;; size=10 bbWeight=0.50 PerfScore 1.12
+G_M6149_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M6149_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs +[rbx]
+ ; byrRegs +[rsi rdi]
mov rcx, bword ptr [rdi]
; byrRegs +[rcx]
mov edx, dword ptr [rdi+0x08]
cmp dword ptr [rbp-0x3C], edx
- jb G_M6149_IG17
- ;; size=15 bbWeight=4 PerfScore 28.00
-G_M6149_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ jb SHORT G_M6149_IG10
+ ;; size=11 bbWeight=4 PerfScore 28.00
+G_M6149_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; byrRegs -[rcx]
mov r12d, -1
- ;; size=6 bbWeight=2 PerfScore 0.50
-G_M6149_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- test r13b, 4
+ jmp SHORT G_M6149_IG15
+ ;; size=8 bbWeight=2 PerfScore 4.50
+G_M6149_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref, isz
+ ; byrRegs +[rcx]
+ mov r12d, dword ptr [rbp-0x3C]
+ movzx rcx, word ptr [rcx+2*r12]
+ ; byrRegs -[rcx]
+ mov dword ptr [rbp-0x50], ecx
+ cmp ecx, 10
jne SHORT G_M6149_IG11
+ dec edx
+ cmp dword ptr [rbp-0x3C], edx
+ je SHORT G_M6149_IG14
+ ;; size=24 bbWeight=2 PerfScore 17.00
+G_M6149_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ mov rdx, gword ptr [rbx+0x50]
+ ; gcrRegs +[rdx]
+ mov r12, gword ptr [rdx+0x08]
+ ; gcrRegs +[r12]
+ mov eax, dword ptr [r12+0x08]
+ cmp eax, ecx
+ ja SHORT G_M6149_IG12
+ mov rcx, gword ptr [rdx+0x10]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rbp-0x50]
+ ; gcrRegs -[rdx]
+ cmp dword ptr [rcx], ecx
+ call [System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this]
+ ; gcrRegs -[rcx r12]
+ ; gcr arg pop 0
+ jmp SHORT G_M6149_IG13
+ ;; size=34 bbWeight=2 PerfScore 36.50
+G_M6149_IG12: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs +[r12]
+ mov eax, dword ptr [rbp-0x50]
+ mov eax, dword ptr [r12+4*rax+0x10]
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M6149_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs -[r12]
+ mov r12d, eax
+ jmp SHORT G_M6149_IG15
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M6149_IG14: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ mov rcx, gword ptr [rbx+0x90]
+ ; gcrRegs +[rcx]
+ mov r12d, dword ptr [rcx+0x08]
+ ;; size=11 bbWeight=2 PerfScore 8.00
+G_M6149_IG15: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs -[rcx]
+ test r13b, 4
+ jne SHORT G_M6149_IG19
;; size=6 bbWeight=4 PerfScore 5.00
-G_M6149_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M6149_IG16: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 8
- je SHORT G_M6149_IG12
+ je SHORT G_M6149_IG20
mov rcx, gword ptr [rbx+0x98]
; gcrRegs +[rcx]
lea edx, [r12+0x01]
cmp edx, dword ptr [rcx+0x08]
- jae G_M6149_IG16
+ jae G_M6149_IG07
mov edx, dword ptr [rcx+4*rdx+0x10]
mov rcx, gword ptr [rbx+0x10]
mov r13d, dword ptr [rsi+0x08]
cmp r13d, dword ptr [rcx+0x08]
- jae G_M6149_IG16
+ jae G_M6149_IG07
mov rcx, gword ptr [rcx+8*r13+0x10]
shl edx, 3
or edx, dword ptr [rcx+0x10]
mov rcx, gword ptr [rcx+0x08]
cmp gword ptr [rcx+0x18], 0
- je G_M6149_IG22
+ je SHORT G_M6149_IG17
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- ;; size=81 bbWeight=2 PerfScore 64.50
-G_M6149_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jmp SHORT G_M6149_IG18
+ ;; size=79 bbWeight=2 PerfScore 68.50
+G_M6149_IG17: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rcx+0x34]
+ and edx, 1
+ mov eax, edx
+ ;; size=8 bbWeight=2 PerfScore 5.00
+G_M6149_IG18: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs -[rcx]
test eax, eax
- je SHORT G_M6149_IG12
+ je SHORT G_M6149_IG20
;; size=4 bbWeight=2 PerfScore 2.50
-G_M6149_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG19: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov edx, dword ptr [rbp-0x3C]
mov dword ptr [rbp-0x40], edx
mov edx, dword ptr [rsi+0x08]
@@ -192,7 +259,7 @@ G_M6149_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi
test r15d, r15d
je G_M6149_IG26
;; size=27 bbWeight=2 PerfScore 16.50
-G_M6149_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M6149_IG20: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
cmp dword ptr [rbp-0x3C], r14d
jge G_M6149_IG27
mov edx, dword ptr [rsi+0x08]
@@ -203,96 +270,25 @@ G_M6149_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi
mov r13, gword ptr [rbx+0x20]
; gcrRegs +[r13]
cmp ecx, dword ptr [r13+0x08]
- jae SHORT G_M6149_IG16
+ jae G_M6149_IG07
mov eax, ecx
mov eax, dword ptr [r13+4*rax+0x10]
test eax, eax
- jle G_M6149_IG23
+ jle SHORT G_M6149_IG23
;; size=55 bbWeight=4 PerfScore 73.00
-G_M6149_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG21: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
; gcrRegs -[r13]
mov dword ptr [rsi+0x08], eax
;; size=3 bbWeight=2 PerfScore 2.00
-G_M6149_IG14: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG22: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov r13d, 1
- ;; size=6 bbWeight=8 PerfScore 2.00
-G_M6149_IG15: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- xor rax, rax
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x60], rax
- test r13d, r13d
- je G_M6149_IG27
- mov eax, dword ptr [rbp-0x3C]
- ; gcrRegs -[rax]
- inc eax
- mov dword ptr [rbp-0x3C], eax
- jmp G_M6149_IG03
- ;; size=28 bbWeight=4 PerfScore 27.00
-G_M6149_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[rsi rdi]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M6149_IG17: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[rcx rsi rdi]
- mov r12d, dword ptr [rbp-0x3C]
- movzx rcx, word ptr [rcx+2*r12]
- ; byrRegs -[rcx]
- mov dword ptr [rbp-0x50], ecx
- cmp ecx, 10
- jne SHORT G_M6149_IG18
- dec edx
- cmp dword ptr [rbp-0x3C], edx
- je SHORT G_M6149_IG21
- ;; size=24 bbWeight=2 PerfScore 17.00
-G_M6149_IG18: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov rdx, gword ptr [rbx+0x50]
- ; gcrRegs +[rdx]
- mov r12, gword ptr [rdx+0x08]
- ; gcrRegs +[r12]
- mov eax, dword ptr [r12+0x08]
- cmp eax, ecx
- ja SHORT G_M6149_IG19
- mov rcx, gword ptr [rdx+0x10]
- ; gcrRegs +[rcx]
- mov edx, dword ptr [rbp-0x50]
- ; gcrRegs -[rdx]
- cmp dword ptr [rcx], ecx
- call [System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this]
- ; gcrRegs -[rcx r12]
- ; gcr arg pop 0
- jmp SHORT G_M6149_IG20
- ;; size=34 bbWeight=2 PerfScore 36.50
-G_M6149_IG19: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref
- ; gcrRegs +[r12]
- mov eax, dword ptr [rbp-0x50]
- mov eax, dword ptr [r12+4*rax+0x10]
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M6149_IG20: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- ; gcrRegs -[r12]
- mov r12d, eax
- jmp G_M6149_IG08
- ;; size=8 bbWeight=2 PerfScore 4.50
-G_M6149_IG21: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- mov rcx, gword ptr [rbx+0x90]
- ; gcrRegs +[rcx]
- mov r12d, dword ptr [rcx+0x08]
- jmp G_M6149_IG08
- ;; size=16 bbWeight=2 PerfScore 12.00
-G_M6149_IG22: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=00C0 {rsi rdi}, byref
- mov edx, dword ptr [rcx+0x34]
- and edx, 1
...
-5 (-0.18%) : 17323.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)
@@ -8,19 +8,19 @@
; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T40] ( 4, 7 ) ref -> [rbp+0x10] this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
-; V01 arg1 [V01,T38] ( 5, 8 ) int -> rdi single-def
-; V02 arg2 [V02,T35] ( 6, 9 ) ref -> rsi class-hnd single-def <System.String>
-; V03 arg3 [V03,T39] ( 5, 8 ) long -> r14 single-def
-; V04 arg4 [V04,T51] ( 3, 6 ) int -> [rbp+0x30] single-def
-; V05 arg5 [V05,T52] ( 3, 6 ) int -> [rbp+0x38] single-def
-; V06 arg6 [V06,T42] ( 5, 8 ) int -> r13 single-def
-; V07 arg7 [V07,T30] ( 10, 10 ) ref -> rbx class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]>
-; V08 loc0 [V08,T41] ( 6, 5 ) ref -> [rbp-0x110] do-not-enreg[M] class-hnd EH-live <ubyte[]>
-; V09 loc1 [V09,T43] ( 5, 5 ) ubyte -> [rbp-0x3C]
-; V10 loc2 [V10,T16] ( 8, 22 ) int -> [rbp-0x40]
-; V11 loc3 [V11,T17] ( 8, 22 ) int -> [rbp-0x44]
-; V12 loc4 [V12,T53] ( 3, 3 ) int -> [rbp-0x48] spill-single-def
+; V00 this [V00,T41] ( 4, 7 ) ref -> [rbp+0x10] this class-hnd single-def <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
+; V01 arg1 [V01,T39] ( 5, 8 ) int -> rdi single-def
+; V02 arg2 [V02,T35] ( 6, 9 ) ref -> [rbp+0x20] class-hnd single-def <System.String>
+; V03 arg3 [V03,T40] ( 5, 8 ) long -> r14 single-def
+; V04 arg4 [V04,T52] ( 3, 6 ) int -> [rbp+0x30] single-def
+; V05 arg5 [V05,T53] ( 3, 6 ) int -> [rbp+0x38] single-def
+; V06 arg6 [V06,T44] ( 5, 8 ) int -> r13 single-def
+; V07 arg7 [V07,T26] ( 10, 13 ) ref -> rbx class-hnd <System.Diagnostics.Tracing.EventParameterInfo[]>
+; V08 loc0 [V08,T43] ( 6, 5 ) ref -> [rbp-0x110] do-not-enreg[M] class-hnd EH-live <ubyte[]>
+; V09 loc1 [V09,T36] ( 5, 8 ) ubyte -> [rbp-0x3C]
+; V10 loc2 [V10,T15] ( 8, 25 ) int -> [rbp-0x40]
+; V11 loc3 [V11,T16] ( 8, 25 ) int -> [rbp-0x44]
+; V12 loc4 [V12,T42] ( 3, 6 ) int -> [rbp-0x48] spill-single-def
;* V13 loc5 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 loc6 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 loc7 [V15 ] ( 0, 0 ) int -> zero-ref
@@ -32,7 +32,7 @@
; V21 loc13 [V21,T32] ( 2, 9 ) ref -> [rbp-0x120] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V22 loc14 [V22,T10] ( 5, 33 ) int -> [rbp-0x74]
;* V23 loc15 [V23 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V24 loc16 [V24,T13] ( 4, 32 ) int -> [rbp-0x78] ld-addr-op
+; V24 loc16 [V24,T13] ( 4, 32 ) int -> rsi ld-addr-op
; V25 loc17 [V25,T02] ( 20, 67 ) long -> [rbp-0x80]
; V26 loc18 [V26 ] ( 3, 3 ) ref -> [rbp-0x88] must-init pinned class-hnd <ubyte[]>
; V27 loc19 [V27 ] ( 62,124 ) int -> [rbp-0x90] do-not-enreg[X] addr-exposed ld-addr-op
@@ -41,33 +41,33 @@
; V30 loc22 [V30,T33] ( 2, 9 ) ref -> [rbp-0x128] class-hnd exact spill-single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V31 loc23 [V31,T11] ( 5, 33 ) int -> [rbp-0x9C]
; V32 loc24 [V32 ] ( 2, 16 ) struct (24) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
-; V33 loc25 [V33,T50] ( 3, 6 ) ref -> [rbp-0x130] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
+; V33 loc25 [V33,T51] ( 3, 6 ) ref -> [rbp-0x130] do-not-enreg[Z] must-init class-hnd EH-live <ubyte[]>
; V34 loc26 [V34,T34] ( 2, 9 ) ref -> rbx class-hnd exact single-def <System.Diagnostics.Tracing.EventParameterInfo[]>
; V35 loc27 [V35,T12] ( 5, 33 ) int -> [rbp-0xBC]
;* V36 loc28 [V36 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
; V37 OutArgs [V37 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V38 tmp1 [V38,T55] ( 2, 2 ) int -> r8
-; V39 tmp2 [V39,T56] ( 2, 2 ) int -> r10
+; V38 tmp1 [V38,T55] ( 2, 2 ) int -> r10
+; V39 tmp2 [V39,T56] ( 2, 2 ) int -> rcx
; V40 tmp3 [V40,T57] ( 2, 2 ) long -> r9
;* V41 tmp4 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V42 tmp5 [V42,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V42 tmp5 [V42,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V43 tmp6 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
; V45 tmp8 [V45 ] ( 2, 16 ) int -> [rbp-0xC8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V46 tmp9 [V46,T46] ( 2, 4 ) int -> [rbp-0xCC] spill-single-def "Inlining Arg"
+; V46 tmp9 [V46,T47] ( 2, 4 ) int -> [rbp-0xCC] spill-single-def "Inlining Arg"
;* V47 tmp10 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp11 [V48,T47] ( 2, 4 ) int -> [rbp-0xD0] spill-single-def "Inlining Arg"
-; V49 tmp12 [V49,T26] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
-; V50 tmp13 [V50,T27] ( 3, 12 ) ubyte -> rax "Inline return value spill temp"
+; V48 tmp11 [V48,T48] ( 2, 4 ) int -> [rbp-0xD0] spill-single-def "Inlining Arg"
+; V49 tmp12 [V49,T27] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
+; V50 tmp13 [V50,T28] ( 3, 12 ) ubyte -> rax "Inline return value spill temp"
;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V52 tmp15 [V52,T15] ( 3, 24 ) ref -> [rbp-0x138] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
+; V52 tmp15 [V52,T17] ( 3, 24 ) ref -> [rbp-0x138] class-hnd spill-single-def "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
; V53 tmp16 [V53,T21] ( 4, 16 ) int -> [rbp-0xD4] ld-addr-op "Inline ldloca(s) first use temp"
; V54 tmp17 [V54 ] ( 4, 16 ) byref -> [rbp-0xE0] must-init pinned "Inline stloc first use temp"
-; V55 tmp18 [V55,T36] ( 2, 8 ) long -> r10
+; V55 tmp18 [V55,T37] ( 2, 8 ) long -> r10
; V56 tmp19 [V56,T08] ( 2, 36 ) long -> [rbp-0xE8] spill-single-def "Inline stloc first use temp"
;* V57 tmp20 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V58 tmp21 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V59 tmp22 [V59,T37] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp22 [V59,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp23 [V60 ] ( 2, 8 ) int -> [rbp-0xF0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V62 tmp25 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -77,7 +77,7 @@
; V66 tmp29 [V66 ] ( 2, 16 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V19.ParameterName (fldOffset=0x0)" P-DEP
; V67 tmp30 [V67 ] ( 2, 16 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V19.ParameterType (fldOffset=0x8)" P-DEP
; V68 tmp31 [V68 ] ( 2, 16 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V19.TypeInfo (fldOffset=0x10)" P-DEP
-; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> r9 "field V23.ParameterName (fldOffset=0x0)" P-INDEP
+; V69 tmp32 [V69,T23] ( 2, 16 ) ref -> rsi "field V23.ParameterName (fldOffset=0x0)" P-INDEP
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref "field V23.ParameterType (fldOffset=0x8)" P-INDEP
; V71 tmp34 [V71,T24] ( 2, 16 ) ref -> [rbp-0x140] spill-single-def "field V23.TypeInfo (fldOffset=0x10)" P-INDEP
; V72 tmp35 [V72 ] ( 2, 16 ) ref -> [rbp-0xB8] do-not-enreg[X] addr-exposed "field V32.ParameterName (fldOffset=0x0)" P-DEP
@@ -87,14 +87,14 @@
;* V76 tmp39 [V76 ] ( 0, 0 ) ref -> zero-ref "field V36.ParameterType (fldOffset=0x8)" P-INDEP
; V77 tmp40 [V77,T19] ( 3, 20 ) ref -> r11 "field V36.TypeInfo (fldOffset=0x10)" P-INDEP
; V78 tmp41 [V78,T03] ( 3, 48 ) byref -> rdx "BlockOp address local"
-; V79 tmp42 [V79,T48] ( 2, 4 ) long -> r10 "Cast away GC"
-; V80 tmp43 [V80,T49] ( 2, 4 ) long -> r9 "Cast away GC"
-; V81 tmp44 [V81,T44] ( 2, 4 ) ref -> rdx "argument with side effect"
+; V79 tmp42 [V79,T49] ( 2, 4 ) long -> rax "Cast away GC"
+; V80 tmp43 [V80,T50] ( 2, 4 ) long -> r9 "Cast away GC"
+; V81 tmp44 [V81,T45] ( 2, 4 ) ref -> rdx "argument with side effect"
; V82 tmp45 [V82,T04] ( 3, 48 ) byref -> rcx "BlockOp address local"
; V83 tmp46 [V83,T25] ( 2, 16 ) long -> r10 "Cast away GC"
-; V84 tmp47 [V84,T45] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V84 tmp47 [V84,T46] ( 2, 16 ) ref -> rdx "argument with side effect"
; V85 PSPSym [V85,T58] ( 1, 1 ) long -> [rbp-0x150] do-not-enreg[V] "PSPSym"
-; V86 cse0 [V86,T28] ( 3, 12 ) int -> [rbp-0xF8] spill-single-def "CSE - moderate"
+; V86 cse0 [V86,T29] ( 3, 12 ) int -> [rbp-0xF8] spill-single-def "CSE - moderate"
; V87 cse1 [V87,T54] ( 3, 3 ) int -> [rbp-0xFC] spill-single-def "CSE - conservative"
; V88 cse2 [V88,T18] ( 8, 22 ) int -> [rbp-0x100] multi-def "CSE - moderate"
; V89 cse3 [V89,T20] ( 4, 18 ) int -> [rbp-0x104] spill-single-def "CSE - moderate"
@@ -132,13 +132,12 @@ G_M27295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rsi, r8
; gcrRegs +[rsi]
mov r14, r9
- mov r12d, dword ptr [rbp+0x30]
mov r13d, dword ptr [rbp+0x40]
mov rbx, gword ptr [rbp+0x48]
; gcrRegs +[rbx]
- ;; size=114 bbWeight=1 PerfScore 26.58
-G_M27295_IG02: ; bbWeight=1, gcVars=0004000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V33 V50}
+ ;; size=110 bbWeight=1 PerfScore 25.58
+G_M27295_IG02: ; bbWeight=1, gcVars=0008000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V33}
xor r8d, r8d
mov dword ptr [rbp-0x3C], r8d
;; size=7 bbWeight=1 PerfScore 1.25
@@ -173,185 +172,194 @@ G_M27295_IG04: ; bbWeight=1, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000
mov gword ptr [rbp-0x118], rcx
; GC ptr vars +{V17}
xor r10d, r10d
- mov edx, dword ptr [rcx+0x08]
- mov dword ptr [rbp-0x104], edx
- test edx, edx
- jle G_M27295_IG10
+ mov eax, dword ptr [rcx+0x08]
+ mov dword ptr [rbp-0x104], eax
+ test eax, eax
+ jle G_M27295_IG11
;; size=30 bbWeight=1 PerfScore 5.75
-G_M27295_IG05: ; bbWeight=8, gcVars=0004000080000000 {V17 V33}, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V50}
+G_M27295_IG05: ; bbWeight=8, gcVars=0008000080000000 {V17 V33}, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
mov dword ptr [rbp-0x50], r10d
- mov eax, r10d
- lea rax, [rax+2*rax]
+ mov edx, r10d
+ lea rdx, [rdx+2*rdx]
;; size=11 bbWeight=8 PerfScore 14.00
G_M27295_IG06: ; bbWeight=8, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx+8*rax+0x10]
+ vmovdqu xmm0, xmmword ptr [rcx+8*rdx+0x10]
vmovdqu xmmword ptr [rbp-0x68], xmm0
- mov r8, qword ptr [rcx+8*rax+0x20]
- mov qword ptr [rbp-0x58], r8
+ mov r12, qword ptr [rcx+8*rdx+0x20]
+ mov qword ptr [rbp-0x58], r12
;; size=20 bbWeight=8 PerfScore 64.00
-G_M27295_IG07: ; bbWeight=8, isz, extend
+G_M27295_IG07: ; bbWeight=8, extend
lea rcx, [rbp-0x68]
; gcrRegs -[rcx]
lea rdx, [rbp-0x70]
call [System.Diagnostics.Tracing.EventParameterInfo:GetMetadataLength(byref):ubyte:this]
; gcr arg pop 0
test eax, eax
- je G_M27295_IG11
- mov r9d, dword ptr [rbp-0x40]
- add r9d, dword ptr [rbp-0x70]
- mov r10d, dword ptr [rbp-0x50]
- inc r10d
- mov eax, dword ptr [rbp-0x104]
- cmp eax, r10d
- mov rcx, gword ptr [rbp-0x118]
- ; gcrRegs +[rcx]
- jg SHORT G_M27295_IG09
- ;; size=55 bbWeight=8 PerfScore 102.00
-G_M27295_IG08: ; bbWeight=1, gcVars=0004000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx]
+ jne G_M27295_IG12
+ ;; size=22 bbWeight=8 PerfScore 42.00
+G_M27295_IG08: ; bbWeight=1, gcVars=0008000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V17}
- xor r8d, r8d
- mov edx, 6
- test r13d, r13d
- cmovne r8d, edx
- xor r10d, r10d
- mov eax, dword ptr [rbp-0x44]
- lea edx, [rax+0x05]
- mov dword ptr [rbp-0x44], eax
- test eax, eax
- cmovne r10d, edx
- mov dword ptr [rbp-0x40], r9d
- add r10d, r9d
- add r8d, r10d
- mov dword ptr [rbp-0x4C], r8d
- movsxd rdx, r8d
- mov rcx, 0xD1FFAB1E ; ubyte[]
- call CORINFO_HELP_NEWARR_1_VC
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov gword ptr [rbp-0x110], rax
- ; GC ptr vars +{V08}
- jmp G_M27295_IG16
- ;; size=77 bbWeight=1 PerfScore 11.25
-G_M27295_IG09: ; bbWeight=4, gcVars=0004000080000000 {V17 V33}, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rcx]
- ; GC ptr vars -{V08} +{V17 V31}
- mov dword ptr [rbp-0x40], r9d
- jmp G_M27295_IG05
- ;; size=9 bbWeight=4 PerfScore 12.00
-G_M27295_IG10: ; bbWeight=0.50, gcVars=0004000000000000 {V33}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rcx]
- ; GC ptr vars -{V17 V31}
- mov r9d, dword ptr [rbp-0x40]
- jmp SHORT G_M27295_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M27295_IG11: ; bbWeight=1, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-0x3C], 1
- mov r9d, dword ptr [rbp-0x48]
- mov dword ptr [rbp-0x40], r9d
+ mov r8d, dword ptr [rbp-0x48]
+ mov dword ptr [rbp-0x40], r8d
mov dword ptr [rbp-0x44], 4
- mov r11, rbx
- ; gcrRegs +[r11]
- mov gword ptr [rbp-0x120], r11
+ mov r9, rbx
+ ; gcrRegs +[r9]
+ mov gword ptr [rbp-0x120], r9
; GC ptr vars +{V21}
xor ecx, ecx
- ;; size=34 bbWeight=1 PerfScore 5.50
-G_M27295_IG12: ; bbWeight=8, gcVars=0004000100000000 {V21 V33}, gcrefRegs=8848 {rbx rsi r11 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov gword ptr [rbp+0x20], rsi
+ ; GC ptr vars +{V02}
+ ;; size=38 bbWeight=1 PerfScore 6.50
+G_M27295_IG09: ; bbWeight=8, gcVars=0008000900000000 {V02 V21 V33}, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rsi]
mov dword ptr [rbp-0x74], ecx
mov edx, ecx
lea rdx, [rdx+2*rdx]
- lea rdx, bword ptr [r11+8*rdx+0x10]
...
+11 (+0.32%) : 5241.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 51,108 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 51,108 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T33] ( 9, 30 ) ref -> rbx class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate>
; V02 loc1 [V02,T40] ( 5, 19 ) ref -> [rbp-0x48] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V03 loc2 [V03,T20] ( 13, 43 ) ref -> [rbp-0x50] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>>
@@ -21,7 +21,7 @@
; V10 loc9 [V10,T12] ( 9, 53 ) ref -> [rbp-0x70] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain>
; V11 loc10 [V11,T10] ( 4, 72 ) ubyte -> r14
; V12 loc11 [V12,T22] ( 3, 40 ) int -> rdi
-; V13 loc12 [V13,T02] ( 5,132 ) int -> r15
+; V13 loc12 [V13,T03] ( 5,132 ) int -> r15
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
; V15 loc14 [V15,T53] ( 3, 10 ) int -> rbx
; V16 loc15 [V16,T23] ( 5, 33 ) int -> rsi
@@ -33,7 +33,7 @@
;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp5 [V23,T43] ( 2, 16 ) ref -> rsi class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
; V24 tmp6 [V24,T11] ( 8, 64 ) ref -> rdi class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> r12 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> r12 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T36] ( 3, 24 ) ref -> rbx class-hnd exact "dup spill" <System.Object[]>
; V27 tmp9 [V27,T37] ( 3, 24 ) ref -> rdi class-hnd exact "dup spill" <System.Object[]>
;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback>
@@ -144,10 +144,10 @@
;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 6,320 ) ref -> r14 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V137 tmp119 [V137,T03] ( 2,128 ) ref -> r13 class-hnd exact "dup spill" <System.String>
-; V138 tmp120 [V138,T01] ( 6,132 ) ref -> r13
-; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> r13 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 6,384 ) ref -> r14 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
+; V137 tmp119 [V137,T04] ( 2,128 ) ref -> r13 class-hnd exact "dup spill" <System.String>
+; V138 tmp120 [V138,T02] ( 6,148 ) ref -> r13
+; V139 tmp121 [V139,T01] ( 3,192 ) ref -> r13 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
@@ -235,7 +235,7 @@
; V224 tmp206 [V224,T75] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V225 tmp207 [V225,T76] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V226 tmp208 [V226,T16] ( 3, 48 ) ref -> rax "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> rcx "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> rcx "argument with side effect"
; V228 tmp210 [V228,T32] ( 2, 32 ) ref -> rcx "argument with side effect"
; V229 tmp211 [V229,T17] ( 3, 48 ) ref -> rcx "argument with side effect"
; V230 tmp212 [V230,T103] ( 2, 4 ) long -> r8 "argument with side effect"
@@ -247,7 +247,7 @@
; V236 cse1 [V236,T114] ( 3, 3 ) ref -> rax "CSE - conservative"
; V237 cse2 [V237,T115] ( 3, 3 ) ref -> rax "CSE - conservative"
; V238 cse3 [V238,T116] ( 3, 3 ) ref -> rax "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> rsi multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> rsi multi-def "CSE - aggressive"
; V240 cse5 [V240,T117] ( 3, 3 ) ref -> rdi "CSE - conservative"
; V241 cse6 [V241,T81] ( 4, 4 ) ref -> rbx "CSE - conservative"
; V242 cse7 [V242,T79] ( 5, 5 ) ref -> rbx "CSE - conservative"
@@ -276,14 +276,14 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
;; size=47 bbWeight=1 PerfScore 14.33
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
xor rax, rax
; gcrRegs +[rax]
mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V02}
;; size=6 bbWeight=1 PerfScore 1.25
-G_M34773_IG03: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000000020 {V00 V02}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG03: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000000040 {V00 V02}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
mov gword ptr [rbp-0x50], rax
; GC ptr vars +{V03}
@@ -408,7 +408,7 @@ G_M34773_IG08: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M34773_IG09: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000100020 {V00 V02 V03}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG09: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000100040 {V00 V02 V03}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
; GC ptr vars +{V02 V03 V20}
cmp gword ptr [rbx+0x30], 0
@@ -449,7 +449,7 @@ G_M34773_IG10: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V05}
;; size=6 bbWeight=1 PerfScore 1.25
-G_M34773_IG11: ; bbWeight=1, gcVars=000000000000000000000000000000080000010000100020 {V00 V02 V03 V05}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG11: ; bbWeight=1, gcVars=000000000000000000000000000000080000010000100040 {V00 V02 V03 V05}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
; GC ptr vars -{V20}
call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this]
@@ -464,7 +464,7 @@ G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000000000000800000
test byte ptr [(reloc)], 1 ; global ptr
jne SHORT G_M34773_IG13
;; size=27 bbWeight=1 PerfScore 11.00
-G_M34773_IG12: ; bbWeight=0, gcVars=000000000000000000000000000000080000010000180020 {V00 V02 V03 V04 V05}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG12: ; bbWeight=0, gcVars=000000000000000000000000000000080000010000180040 {V00 V02 V03 V04 V05}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx]
mov rcx, 0xD1FFAB1E
mov edx, 56
@@ -624,7 +624,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
;; size=9 bbWeight=1 PerfScore 3.25
G_M34773_IG18: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -639,7 +639,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this]
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75
G_M34773_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
@@ -663,7 +663,7 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
;; size=38 bbWeight=1 PerfScore 16.75
G_M34773_IG20: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -678,12 +678,12 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this]
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75
G_M34773_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -698,7 +698,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this]
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75
G_M34773_IG22: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx rbx]
@@ -736,7 +736,7 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
test rbx, rbx
je G_M34773_IG27
;; size=94 bbWeight=1 PerfScore 31.00
-G_M34773_IG23: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000010000000020 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG23: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000010000000040 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov rcx, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate
cmp qword ptr [rbx], rcx
@@ -808,7 +808,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rsi, gword ptr [rcx]
; gcrRegs +[rsi]
cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -818,7 +818,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Net.NetEventSource:AttemptingRestartUsingCert(System.Security.Cryptography.X509Certificates.X509Certificate,System.Net.Security.SslStream):this]
; gcrRegs -[rcx rdx rbx rsi r8]
; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=47 bbWeight=1 PerfScore 12.75
G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x10]
@@ -827,7 +827,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rax]
mov rax, gword ptr [rax+0x10]
test rax, rax
- je G_M34773_IG59
+ je G_M34773_IG60
mov rax, gword ptr [rax+0x08]
mov rcx, rax
mov rax, qword ptr [rax]
@@ -837,7 +837,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jle G_M34773_IG59
+ jle G_M34773_IG60
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this]
@@ -858,7 +858,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
test ebx, ebx
jne SHORT G_M34773_IG30
;; size=100 bbWeight=1 PerfScore 35.25
-G_M34773_IG29: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000180020 {V00 V02 V03 V04}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG29: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000180040 {V00 V02 V03 V04}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx]
mov rbx, rsi
; gcrRegs +[rbx]
@@ -899,26 +899,26 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
G_M34773_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ecx, ecx
mov dword ptr [rbp-0x3C], ecx
- jmp G_M34773_IG58
+ jmp G_M34773_IG59
;; size=10 bbWeight=1 PerfScore 3.25
G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp gword ptr [rbp-0x58], 0
- je G_M34773_IG51
+ je G_M34773_IG52
mov rcx, gword ptr [rbp-0x58]
; gcrRegs +[rcx]
mov ebx, dword ptr [rcx+0x08]
test ebx, ebx
- je G_M34773_IG51
+ je G_M34773_IG52
xor rcx, rcx
mov gword ptr [rbp-0x68], rcx
; GC ptr vars +{V09}
;; size=32 bbWeight=4 PerfScore 34.00
-G_M34773_IG33: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800180020 {V00 V02 V03 V04 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG33: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800180040 {V00 V02 V03 V04 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
mov gword ptr [rbp-0x70], rcx
; GC ptr vars +{V10}
;; size=4 bbWeight=4 PerfScore 4.00
-G_M34773_IG34: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800181020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG34: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800181040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x38]
@@ -937,7 +937,7 @@ G_M34773_IG34: ; bbWeight=4, gcVars=0000000000000000000000000000000000000
; gcr arg pop 0
mov gword ptr [rbp-0x68], rax
cmp gword ptr [rbp-0x68], 0
- je G_M34773_IG47
+ je G_M34773_IG48
mov rcx, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rcx]
; gcrRegs +[rsi]
...
+2 (+0.33%) : 5662.dasm - System.Diagnostics.StackTraceSymbols:TryOpenReaderFromAssemblyFile(System.String,long,int,ubyte):System.Reflection.Metadata.MetadataReaderProvider (FullOpts)
@@ -35,7 +35,7 @@
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[System.Reflection.PortableExecutable.DebugDirectoryEntry]>
;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.Reflection.PortableExecutable.DebugDirectoryEntry]>
;* V26 tmp14 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.PortableExecutable.DebugDirectoryEntry[]>
-; V27 tmp15 [V27,T01] ( 4, 25 ) int -> rcx "Inline stloc first use temp"
+; V27 tmp15 [V27,T01] ( 4, 25 ) int -> rdx "Inline stloc first use temp"
; V28 tmp16 [V28,T04] ( 2, 9 ) ref -> rax single-def "field V08._array (fldOffset=0x0)" P-INDEP
; V29 tmp17 [V29,T00] ( 4, 25 ) int -> r8 "field V08._index (fldOffset=0x8)" P-INDEP
; V30 tmp18 [V30,T13] ( 3, 3 ) ref -> rax "field V09.array (fldOffset=0x0)" P-INDEP
@@ -43,7 +43,7 @@
; V32 tmp20 [V32,T15] ( 2, 2 ) ref -> rax single-def "field V25._array (fldOffset=0x0)" P-INDEP
;* V33 tmp21 [V33,T16] ( 0, 0 ) int -> zero-ref "field V25._index (fldOffset=0x8)" P-INDEP
; V34 PSPSym [V34,T17] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym"
-; V35 cse0 [V35,T03] ( 3, 10 ) int -> rdx "CSE - aggressive"
+; V35 cse0 [V35,T03] ( 3, 10 ) int -> rcx "CSE - aggressive"
; V36 cse1 [V36,T14] ( 3, 3 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 104
@@ -83,7 +83,7 @@ G_M60940_IG03: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs
xor rcx, rcx
; gcrRegs +[rcx]
mov gword ptr [rbp-0x50], rcx
- jmp G_M60940_IG12
+ jmp G_M60940_IG14
;; size=20 bbWeight=1 PerfScore 5.50
G_M60940_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rcx]
@@ -142,7 +142,7 @@ G_M60940_IG05: ; bbWeight=1, gcrefRegs=0109 {rax rbx r8}, byrefRegs=0000
mov gword ptr [rbp-0x50], rcx
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
- jmp SHORT G_M60940_IG12
+ jmp SHORT G_M60940_IG14
;; size=43 bbWeight=1 PerfScore 11.75
G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rcx]
@@ -153,35 +153,42 @@ G_M60940_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov edx, dword ptr [rax+0x08]
- xor ecx, ecx
+ mov ecx, dword ptr [rax+0x08]
+ xor edx, edx
xor r8d, r8d
- test edx, edx
- jle SHORT G_M60940_IG11
+ test ecx, ecx
+ jle SHORT G_M60940_IG13
;; size=25 bbWeight=1 PerfScore 8.00
G_M60940_IG07: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov ecx, ecx
- lea rcx, [rcx+2*rcx]
- vmovdqu xmm0, xmmword ptr [rax+8*rcx+0x10]
+ mov edx, edx
+ lea rdx, [rdx+2*rdx]
+ vmovdqu xmm0, xmmword ptr [rax+8*rdx+0x10]
vmovdqu xmmword ptr [rbp-0x40], xmm0
- mov r10, qword ptr [rax+8*rcx+0x20]
+ mov r10, qword ptr [rax+8*rdx+0x20]
mov qword ptr [rbp-0x30], r10
cmp dword ptr [rbp-0x38], 17
- je SHORT G_M60940_IG10
- lea ecx, [r8+0x01]
- mov r8d, ecx
- cmp edx, r8d
- jg SHORT G_M60940_IG07
- ;; size=44 bbWeight=8 PerfScore 110.00
+ jne SHORT G_M60940_IG10
+ ;; size=32 bbWeight=8 PerfScore 94.00
G_M60940_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M60940_IG11
+ jmp SHORT G_M60940_IG12
;; size=2 bbWeight=1 PerfScore 2.00
G_M60940_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
nop
- jmp SHORT G_M60940_IG11
+ jmp SHORT G_M60940_IG13
;; size=3 bbWeight=0 PerfScore 0.00
-G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG10: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax]
+ lea edx, [r8+0x01]
+ mov r8d, edx
+ cmp ecx, r8d
+ jg SHORT G_M60940_IG07
+ ;; size=12 bbWeight=8 PerfScore 16.00
+G_M60940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ jmp SHORT G_M60940_IG13
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M60940_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rdx, [rbp-0x40]
mov rcx, gword ptr [rbp-0x48]
; gcrRegs +[rcx]
@@ -190,9 +197,9 @@ G_M60940_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
mov gword ptr [rbp-0x50], rax
mov rax, gword ptr [rbp-0x48]
- jmp SHORT G_M60940_IG12
+ jmp SHORT G_M60940_IG14
;; size=24 bbWeight=1 PerfScore 8.50
-G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG13: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
; GC ptr vars -{V05}
mov rcx, gword ptr [rbp-0x48]
@@ -201,36 +208,23 @@ G_M60940_IG11: ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=000
call [System.Reflection.PortableExecutable.PEReader:Dispose():this]
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M60940_IG16
+ jmp SHORT G_M60940_IG18
;; size=12 bbWeight=1 PerfScore 6.00
-G_M60940_IG12: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rax]
; GC ptr vars +{V04 V05}
mov rcx, rsp
- call G_M60940_IG27
+ call G_M60940_IG29
; gcrRegs -[rax]
;; size=8 bbWeight=1 PerfScore 1.25
-G_M60940_IG13: ; bbWeight=1, nogc, extend
+G_M60940_IG15: ; bbWeight=1, nogc, extend
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M60940_IG14: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000400 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05}
mov rax, gword ptr [rbp-0x50]
; gcrRegs +[rax]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M60940_IG15: ; bbWeight=1, epilog, nogc, extend
- add rsp, 104
- pop rbx
- pop rsi
- pop rdi
- pop rbp
- ret
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M60940_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=1 PerfScore 0.25
G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend
add rsp, 104
pop rbx
@@ -239,7 +233,20 @@ G_M60940_IG17: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M60940_IG18: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M60940_IG19: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 104
+ pop rbx
+ pop rsi
+ pop rdi
+ pop rbp
+ ret
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M60940_IG20: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs -[rax] +[rdx]
push rbp
push rdi
@@ -251,7 +258,7 @@ G_M60940_IG18: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
mov qword ptr [rsp+0x28], rbp
lea rbp, [rbp+0x80]
;; size=27 bbWeight=0 PerfScore 0.00
-G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60940_IG21: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V05}
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFCLASS
@@ -260,12 +267,12 @@ G_M60940_IG19: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs
mov rbx, rax
; gcrRegs +[rbx]
test rbx, rbx
- jne SHORT G_M60940_IG20
+ jne SHORT G_M60940_IG22
xor eax, eax
; gcrRegs -[rax]
- jmp SHORT G_M60940_IG23
+ jmp SHORT G_M60940_IG25
;; size=27 bbWeight=0 PerfScore 0.00
-G_M60940_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M60940_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -273,7 +280,7 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M60940_IG21
+ jne SHORT G_M60940_IG23
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -284,17 +291,17 @@ G_M60940_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
setne al
; gcrRegs -[rax]
movzx rax, al
- jmp SHORT G_M60940_IG22
+ jmp SHORT G_M60940_IG24
;; size=52 bbWeight=0 PerfScore 0.00
-G_M60940_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0 PerfScore 0.00
-G_M60940_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
test eax, eax
setne al
movzx rax, al
;; size=8 bbWeight=0 PerfScore 0.00
-G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M60940_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
add rsp, 56
pop rbx
pop rsi
@@ -302,7 +309,7 @@ G_M60940_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
ret
;; size=9 bbWeight=0 PerfScore 0.00
-G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M60940_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
push rdi
push rsi
@@ -313,10 +320,10 @@ G_M60940_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x28], rbp
lea rbp, [rbp+0x80]
;; size=27 bbWeight=0 PerfScore 0.00
-G_M60940_IG25: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60940_IG27: ; bbWeight=0, gcVars=0000000000000420 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rax, G_M60940_IG09
;; size=7 bbWeight=0 PerfScore 0.00
-G_M60940_IG26: ; bbWeight=0, funclet epilog, nogc, extend
+G_M60940_IG28: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 56
pop rbx
pop rsi
...
+12 (+3.19%) : 23592.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -12,7 +12,7 @@
; V01 loc0 [V01,T13] ( 5, 28 ) long -> rcx
; V02 loc1 [V02,T14] ( 5, 24 ) int -> rdi
; V03 loc2 [V03,T12] ( 5, 28.50) ref -> rbp class-hnd exact <System.String>
-; V04 loc3 [V04,T04] ( 8, 50 ) int -> r14
+; V04 loc3 [V04,T05] ( 8, 50 ) int -> r14
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax
; V06 loc5 [V06,T08] ( 3, 40 ) ref -> rdx class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> r15
@@ -33,9 +33,9 @@
;* V22 tmp12 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V23 tmp13 [V23,T18] ( 4, 5 ) ref -> rdx "Single return block return value"
; V24 tmp14 [V24,T16] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V25 cse0 [V25,T05] ( 6, 49 ) int -> rsi "CSE - aggressive"
+; V25 cse0 [V25,T03] ( 8, 57 ) int -> rsi "CSE - aggressive"
; V26 cse1 [V26,T07] ( 5, 40 ) int -> r12 "CSE - aggressive"
-; V27 cse2 [V27,T03] ( 10, 50 ) ref -> rdx multi-def "CSE - aggressive"
+; V27 cse2 [V27,T04] ( 10, 50 ) ref -> rdx multi-def "CSE - aggressive"
;
; Lcl frame size = 40
@@ -59,10 +59,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp esi, 1
jle G_M46295_IG16
;; size=21 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor ecx, ecx
xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test esi, esi
+ jle SHORT G_M46295_IG07
+ ;; size=8 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edx, eax
mov rdx, gword ptr [rbx+8*rdx+0x10]
@@ -94,7 +96,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rbp]
xor r14d, r14d
xor r15d, r15d
- ;; size=39 bbWeight=4 PerfScore 19.00
+ test esi, esi
+ jle G_M46295_IG15
+ ;; size=47 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov ecx, r15d
@@ -241,7 +245,7 @@ G_M46295_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 376, prolog size 19, PerfScore 499.75, instruction count 111, allocated bytes for code 376 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 388, prolog size 19, PerfScore 509.75, instruction count 115, allocated bytes for code 388 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-42 (-3.72%) : 77123.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
@@ -44,12 +44,12 @@
;* V31 tmp11 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V32 tmp12 [V32 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V33 tmp13 [V33 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V34 tmp14 [V34,T21] ( 5, 2.58) int -> [rsp+0x54] "Inline return value spill temp"
+; V34 tmp14 [V34,T20] ( 5, 2.68) int -> [rsp+0x54] "Inline return value spill temp"
;* V35 tmp15 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V36 tmp16 [V36,T29] ( 3, 0.99) int -> r11 "Inlining Arg"
; V37 tmp17 [V37,T25] ( 5, 1.59) byref -> [rsp+0x28] "Inline stloc first use temp"
; V38 tmp18 [V38,T24] ( 4, 1.99) int -> [rsp+0x50] "Inline stloc first use temp"
-; V39 tmp19 [V39,T20] ( 7, 2.58) long -> [rsp+0x48] spill-single-def "Inline stloc first use temp"
+; V39 tmp19 [V39,T21] ( 7, 2.58) long -> [rsp+0x48] spill-single-def "Inline stloc first use temp"
; V40 tmp20 [V40,T18] ( 4, 3.18) int -> rax "Inline stloc first use temp"
; V41 tmp21 [V41,T22] ( 3, 2.38) long -> rcx "Inline stloc first use temp"
; V42 tmp22 [V42,T17] ( 4, 3.18) byref -> rax "Inline stloc first use temp"
@@ -69,7 +69,7 @@
;* V56 tmp36 [V56 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp37 [V57 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
; V58 tmp38 [V58,T02] ( 11, 601.34) ref -> rdi single-def "V02.[000..008)"
-; V59 tmp39 [V59,T12] ( 7, 101.49) int -> [rsp+0x3C] "V02.[008..012)"
+; V59 tmp39 [V59,T12] ( 7, 101.58) int -> [rsp+0x3C] "V02.[008..012)"
; V60 tmp40 [V60,T01] ( 11,1199.59) int -> [rsp+0x38] "V02.[012..016)"
; V61 tmp41 [V61,T07] ( 5, 400.64) int -> r15 "V02.[016..020)"
; V62 tmp42 [V62,T26] ( 2, 1.20) int -> r13 "V06.[008..012)"
@@ -113,11 +113,11 @@ G_M18874_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
G_M18874_IG03: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
mov ecx, dword ptr [rsp+0x11C]
cmp ecx, r8d
- jge G_M18874_IG20
+ jge G_M18874_IG19
;; size=16 bbWeight=0.20 PerfScore 0.45
G_M18874_IG04: ; bbWeight=99.82, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
cmp ecx, r8d
- jae G_M18874_IG35
+ jae G_M18874_IG34
mov eax, ecx
mov eax, dword ptr [r12+4*rax]
xor edx, edx
@@ -126,23 +126,23 @@ G_M18874_IG04: ; bbWeight=99.82, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008
shr eax, 5
mov r10d, dword ptr [rdi+0x08]
cmp eax, r10d
- jae G_M18874_IG35
+ jae G_M18874_IG34
mov r10d, eax
mov eax, 1
shlx edx, eax, edx
test dword ptr [rdi+4*r10+0x10], edx
- je G_M18874_IG18
+ je G_M18874_IG17
;; size=61 bbWeight=99.82 PerfScore 3768.33
G_M18874_IG05: ; bbWeight=399.29, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
inc r14d
cmp r14d, r15d
- jl G_M18874_IG19
- jmp G_M18874_IG20
+ jl G_M18874_IG18
+ jmp G_M18874_IG19
;; size=17 bbWeight=399.29 PerfScore 1397.53
G_M18874_IG06: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[r12]
cmp r14d, r13d
- jae G_M18874_IG35
+ jae G_M18874_IG34
mov rdx, bword ptr [rsp+0x180]
; byrRegs +[rdx]
mov ecx, r14d
@@ -157,13 +157,13 @@ G_M18874_IG06: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008
jle SHORT G_M18874_IG08
;; size=45 bbWeight=0.20 PerfScore 1.89
G_M18874_IG07: ; bbWeight=0.10, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov dword ptr [rsp+0x3C], r10d
jmp SHORT G_M18874_IG09
- ;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M18874_IG08: ; bbWeight=0.10, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ;; size=7 bbWeight=0.10 PerfScore 0.30
+G_M18874_IG08: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x3C], r10d
mov r11d, r10d
- mov r10d, dword ptr [rsp+0x3C]
- ;; size=13 bbWeight=0.10 PerfScore 0.22
+ ;; size=8 bbWeight=0.20 PerfScore 0.25
G_M18874_IG09: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
lea rdx, bword ptr [rdi+0x10]
; byrRegs +[rdx]
@@ -171,13 +171,13 @@ G_M18874_IG09: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008
mov r8, qword ptr [rdi]
mov qword ptr [rsp+0x48], r8
test dword ptr [r8], 0xD1FFAB1E
- je G_M18874_IG36
+ je G_M18874_IG35
;; size=27 bbWeight=0.20 PerfScore 1.54
G_M18874_IG10: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref, isz
cmp dword ptr [r8+0x04], 24
jbe SHORT G_M18874_IG12
test dword ptr [r8], 0xD1FFAB1E
- je G_M18874_IG37
+ je G_M18874_IG36
;; size=20 bbWeight=0.20 PerfScore 1.59
G_M18874_IG11: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref
mov ecx, dword ptr [r8+0x04]
@@ -195,13 +195,13 @@ G_M18874_IG12: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C
mov eax, ecx
neg eax
test ecx, ecx
- jg G_M18874_IG34
+ jg G_M18874_IG33
mov ecx, eax
or ecx, r11d
- jl G_M18874_IG34
+ jl G_M18874_IG33
lea ecx, [rax+r11]
cmp ecx, dword ptr [rdi+0x08]
- ja G_M18874_IG34
+ ja G_M18874_IG33
movzx rcx, word ptr [r8]
imul rax, rcx
add rax, rdx
@@ -212,22 +212,20 @@ G_M18874_IG12: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C
mov qword ptr [rsp+0x40], rdx
test dword ptr [r8], 0xD1FFAB1E
je SHORT G_M18874_IG13
- mov dword ptr [rsp+0x3C], r10d
shr rdx, 3
mov rcx, rax
; byrRegs +[rcx]
call [<unknown method>]
; byrRegs -[rax rcx]
; gcr arg pop 0
- jmp SHORT G_M18874_IG16
- ;; size=88 bbWeight=0.79 PerfScore 20.66
+ jmp SHORT G_M18874_IG15
+ ;; size=83 bbWeight=0.79 PerfScore 19.87
G_M18874_IG13: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0009 {rax rbx}, byref, isz
; byrRegs +[rax]
test rdx, rdx
- je SHORT G_M18874_IG14
+ je SHORT G_M18874_IG15
cmp rdx, 768
- ja SHORT G_M18874_IG15
- mov dword ptr [rsp+0x3C], r10d
+ ja SHORT G_M18874_IG14
xor edx, edx
mov r8d, dword ptr [rsp+0x40]
mov rcx, rax
@@ -235,33 +233,28 @@ G_M18874_IG13: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0009
call CORINFO_HELP_MEMSET
; byrRegs -[rax rcx]
; gcr arg pop 0
- jmp SHORT G_M18874_IG16
- ;; size=36 bbWeight=0.79 PerfScore 6.36
-G_M18874_IG14: ; bbWeight=0.40, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov dword ptr [rsp+0x3C], r10d
- jmp SHORT G_M18874_IG16
- ;; size=7 bbWeight=0.40 PerfScore 1.19
-G_M18874_IG15: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0009 {rax rbx}, byref
+ jmp SHORT G_M18874_IG15
+ ;; size=31 bbWeight=0.79 PerfScore 5.56
+G_M18874_IG14: ; bbWeight=0.79, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0009 {rax rbx}, byref
; byrRegs +[rax]
- mov dword ptr [rsp+0x3C], r10d
mov rcx, rax
; byrRegs +[rcx]
mov rdx, qword ptr [rsp+0x40]
call [<unknown method>]
; byrRegs -[rax rcx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.79 PerfScore 4.17
-G_M18874_IG16: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=14 bbWeight=0.79 PerfScore 3.38
+G_M18874_IG15: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
xor ecx, ecx
xor eax, eax
test rsi, rsi
- je SHORT G_M18874_IG17
+ je SHORT G_M18874_IG16
mov r12d, dword ptr [rsp+0x194]
cmp r12d, dword ptr [rbx+0x08]
mov dword ptr [rsp+0x194], r12d
- jne G_M18874_IG27
+ jne G_M18874_IG26
;; size=35 bbWeight=0.20 PerfScore 1.54
-G_M18874_IG17: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M18874_IG16: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov rcx, bword ptr [rbx]
; byrRegs +[rcx]
mov r8d, dword ptr [rbx+0x08]
@@ -274,24 +267,24 @@ G_M18874_IG17: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008
mov ebp, dword ptr [rsp+0x3C]
jmp G_M18874_IG03
;; size=39 bbWeight=0.20 PerfScore 1.94
-G_M18874_IG18: ; bbWeight=399.29, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
+G_M18874_IG17: ; bbWeight=399.29, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
; byrRegs -[rcx]
lea rax, bword ptr [rdi+4*r10+0x10]
; byrRegs +[rax]
or dword ptr [rax], edx
;; size=7 bbWeight=399.29 PerfScore 1597.17
-G_M18874_IG19: ; bbWeight=99.82, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
+G_M18874_IG18: ; bbWeight=99.82, gcrefRegs=00C0 {rsi rdi}, byrefRegs=1008 {rbx r12}, byref
; byrRegs -[rax]
inc ecx
cmp ecx, r8d
jl G_M18874_IG04
;; size=11 bbWeight=99.82 PerfScore 149.74
-G_M18874_IG20: ; bbWeight=0.19, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M18874_IG19: ; bbWeight=0.19, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
; byrRegs -[r12]
cmp r14d, r15d
- jge G_M18874_IG26
+ jge G_M18874_IG25
;; size=9 bbWeight=0.19 PerfScore 0.23
-G_M18874_IG21: ; bbWeight=0.17, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+G_M18874_IG20: ; bbWeight=0.17, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov dword ptr [rsp+0x170], ebp
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, r14d
@@ -302,19 +295,19 @@ G_M18874_IG21: ; bbWeight=0.17, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008
vmovsd xmm1, qword ptr [reloc @RWD00]
vucomisd xmm1, xmm0
mov ebp, dword ptr [rsp+0x170]
- jae SHORT G_M18874_IG24
+ jae SHORT G_M18874_IG23
;; size=58 bbWeight=0.17 PerfScore 5.57
-G_M18874_IG22: ; bbWeight=0.15, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M18874_IG21: ; bbWeight=0.15, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov r15d, r14d
mov dword ptr [rsp+0x194], r12d
;; size=11 bbWeight=0.15 PerfScore 0.19
-G_M18874_IG23: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M18874_IG22: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov r14d, dword ptr [rsp+0x154]
inc r14d
cmp r14d, dword ptr [rsp+0x174]
jl G_M18874_IG06
;; size=25 bbWeight=0.20 PerfScore 0.84
-G_M18874_IG24: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M18874_IG23: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
; byrRegs -[rbx]
mov rcx, 0xD1FFAB1E ; const ptr
@@ -328,7 +321,7 @@ G_M18874_IG24: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
; gcr arg pop 0
mov eax, ebp
;; size=27 bbWeight=0.01 PerfScore 0.07
-G_M18874_IG25: ; bbWeight=0.01, epilog, nogc, extend
+G_M18874_IG24: ; bbWeight=0.01, epilog, nogc, extend
add rsp, 440
pop rbx
pop rsi
...
-13 (-3.26%) : 10806.dasm - BenchmarksGame.KNucleotide9+<>cDisplayClass130:b__4(System.Threading.Tasks.Task1[System.Collections.Generic.Dictionary
2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
@@ -23,7 +23,7 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
; V12 tmp6 [V12,T05] ( 2,399.96) long -> rdx "impAppendStmt"
-; V13 tmp7 [V13,T13] ( 4,101.01) int -> r14 "OSR entry state var"
+; V13 tmp7 [V13,T13] ( 3,101.01) int -> r14 "OSR entry state var"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V16 tmp10 [V16,T20] ( 3, 0.06) ref -> r15 class-hnd "Inlining Arg" <System.__Canon>
@@ -39,9 +39,9 @@
; V26 tmp20 [V26,T03] ( 2,400 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon>
;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref "field V24.value (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "field V24.key (fldOffset=0x8)" P-INDEP
-; V29 tmp23 [V29,T06] ( 6,301.01) ref -> r15 "V04.[000..008)"
-; V30 tmp24 [V30,T14] ( 4,101.01) int -> r13 "V04.[008..012)"
-; V31 tmp25 [V31,T07] ( 6,301.01) int -> registers "V04.[012..016)"
+; V29 tmp23 [V29,T07] ( 5,301.01) ref -> r15 "V04.[000..008)"
+; V30 tmp24 [V30,T14] ( 3,101.01) int -> r13 "V04.[008..012)"
+; V31 tmp25 [V31,T06] ( 6,301.01) int -> registers "V04.[012..016)"
; V32 tmp26 [V32,T10] ( 3,199.99) ref -> r8 "V04.[024..032)"
; V33 tmp27 [V33,T11] ( 3,199.99) long -> rdx "V04.[032..040)"
;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)"
@@ -85,15 +85,15 @@ G_M19783_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
;; size=27 bbWeight=1 PerfScore 3.25
G_M19783_IG03: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
test r14d, r14d
- je SHORT G_M19783_IG08
+ je SHORT G_M19783_IG06
;; size=5 bbWeight=0.01 PerfScore 0.01
G_M19783_IG04: ; bbWeight=8.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19783_IG08
+ jmp SHORT G_M19783_IG06
;; size=2 bbWeight=8.02 PerfScore 16.03
G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
cmp ebp, ecx
- jae G_M19783_IG14
+ jae G_M19783_IG13
mov ecx, ebp
mov rcx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rcx]
@@ -109,9 +109,12 @@ G_M19783_IG05: ; bbWeight=0.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
;; size=35 bbWeight=0.01 PerfScore 0.14
G_M19783_IG06: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ mov r14d, 1
+ cmp r13d, dword ptr [r15+0x44]
+ jne G_M19783_IG18
mov eax, dword ptr [r15+0x38]
- jmp SHORT G_M19783_IG10
- ;; size=6 bbWeight=100 PerfScore 400.00
+ jmp SHORT G_M19783_IG09
+ ;; size=22 bbWeight=100 PerfScore 825.00
G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r8]
shl rdx, 2
@@ -125,21 +128,16 @@ G_M19783_IG07: ; bbWeight=99.99, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byr
; gcrRegs -[rcx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M19783_IG15
- ;; size=32 bbWeight=99.99 PerfScore 874.91
-G_M19783_IG08: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- mov r14d, 1
- cmp r13d, dword ptr [r15+0x44]
- jne G_M19783_IG19
+ je SHORT G_M19783_IG14
jmp SHORT G_M19783_IG06
- ;; size=18 bbWeight=100 PerfScore 625.00
-G_M19783_IG09: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=99.99 PerfScore 1074.89
+G_M19783_IG08: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r15+0x10]
; gcrRegs +[rcx]
lea edx, [r12+0x01]
mov r10d, edx
cmp r12d, dword ptr [rcx+0x08]
- jae SHORT G_M19783_IG14
+ jae SHORT G_M19783_IG13
mov edx, r12d
lea rdx, [rdx+2*rdx]
lea rcx, bword ptr [rcx+8*rdx+0x10]
@@ -147,40 +145,40 @@ G_M19783_IG09: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
; byrRegs +[rcx]
cmp dword ptr [rcx+0x14], -1
mov r12d, r10d
- jge SHORT G_M19783_IG11
+ jge SHORT G_M19783_IG10
;; size=39 bbWeight=100 PerfScore 1275.00
-G_M19783_IG10: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG09: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
cmp r12d, eax
- jae SHORT G_M19783_IG16
- jmp SHORT G_M19783_IG09
+ jae SHORT G_M19783_IG15
+ jmp SHORT G_M19783_IG08
;; size=7 bbWeight=100 PerfScore 325.00
-G_M19783_IG11: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0002 {rcx}, byref
+G_M19783_IG10: ; bbWeight=100, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0002 {rcx}, byref
; byrRegs +[rcx]
mov rdx, qword ptr [rcx+0x08]
mov r8, gword ptr [rcx]
; gcrRegs +[r8]
mov r10d, 1
;; size=13 bbWeight=100 PerfScore 425.00
-G_M19783_IG12: ; bbWeight=100, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG11: ; bbWeight=100, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
test r10d, r10d
jne SHORT G_M19783_IG07
;; size=5 bbWeight=100 PerfScore 125.00
-G_M19783_IG13: ; bbWeight=0.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG12: ; bbWeight=0.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8 r15]
inc ebp
mov ecx, dword ptr [rbx+0x08]
cmp ecx, ebp
- jle SHORT G_M19783_IG17
+ jle SHORT G_M19783_IG16
jmp G_M19783_IG05
;; size=14 bbWeight=0.01 PerfScore 0.06
-G_M19783_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19783_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi rdi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M19783_IG15: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M19783_IG14: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi rdi r15]
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -189,20 +187,17 @@ G_M19783_IG15: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov r14d, 1
- cmp r13d, dword ptr [r15+0x44]
- je G_M19783_IG06
- jmp SHORT G_M19783_IG19
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M19783_IG16: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ jmp G_M19783_IG06
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M19783_IG15: ; bbWeight=0, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
lea r12d, [rax+0x01]
xor r8, r8
; gcrRegs +[r8]
xor edx, edx
xor r10d, r10d
- jmp SHORT G_M19783_IG12
+ jmp SHORT G_M19783_IG11
;; size=14 bbWeight=0 PerfScore 0.00
-G_M19783_IG17: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+G_M19783_IG16: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r8 r15]
mov rax, gword ptr [rsi+0x08]
; gcrRegs +[rax]
@@ -215,7 +210,7 @@ G_M19783_IG17: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=15 bbWeight=0 PerfScore 0.00
-G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M19783_IG17: ; bbWeight=0, epilog, nogc, extend
add rsp, 328
pop rbx
pop rsi
@@ -227,14 +222,14 @@ G_M19783_IG18: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19783_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19783_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 399, prolog size 91, PerfScore 4084.65, instruction count 98, allocated bytes for code 399 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
+Total bytes of code 386, prolog size 91, PerfScore 4084.63, instruction count 95, allocated bytes for code 386 (MethodHash=9f30b2b8) for method BenchmarksGame.KNucleotide_9+<>c__DisplayClass13_0:<count4>b__4(System.Threading.Tasks.Task`1[System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper]][]):System.String:this (Tier1-OSR)
; ============================================================
Unwind Info:
-29 (-1.83%) : 15987.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)
@@ -24,8 +24,8 @@
;* V13 loc10 [V13 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[uint]>
;* V14 loc11 [V14 ] ( 0, 0 ) int -> zero-ref ptr
; V15 loc12 [V15,T04] ( 15, 43 ) int -> [rsp+0xAC] ptr
-; V16 loc13 [V16,T11] ( 8, 18 ) int -> [rsp+0xA8] spill-single-def ptr
-; V17 loc14 [V17,T18] ( 4, 12 ) int -> [rsp+0xA4] spill-single-def ptr
+; V16 loc13 [V16,T11] ( 7, 18 ) int -> [rsp+0xA8] spill-single-def ptr
+; V17 loc14 [V17,T17] ( 4, 12 ) int -> [rsp+0xA4] spill-single-def ptr
; V18 loc15 [V18,T03] ( 6, 60 ) long -> rbx
; V19 loc16 [V19,T10] ( 3, 22 ) int -> r13
; V20 loc17 [V20,T02] ( 13,114 ) long -> [rsp+0x98] ptr
@@ -39,7 +39,7 @@
; V28 tmp5 [V28,T33] ( 3, 6 ) int -> rax "Span.get_Item index"
; V29 tmp6 [V29,T65] ( 2, 2 ) int -> rax "Span.get_Item index"
; V30 tmp7 [V30,T59] ( 5, 3 ) int -> rax
-; V31 tmp8 [V31,T26] ( 3, 8 ) int -> rax
+; V31 tmp8 [V31,T25] ( 3, 8 ) int -> rax
; V32 tmp9 [V32,T16] ( 5, 12 ) int -> r11
;* V33 tmp10 [V33 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]>
;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
@@ -65,8 +65,8 @@
;* V54 tmp31 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp32 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp33 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V57 tmp34 [V57,T19] ( 3, 12 ) int -> r12 "Inlining Arg"
-; V58 tmp35 [V58,T27] ( 2, 8 ) byref -> rbx "Inlining Arg"
+; V57 tmp34 [V57,T18] ( 3, 12 ) int -> r12 "Inlining Arg"
+; V58 tmp35 [V58,T26] ( 2, 8 ) byref -> rbx "Inlining Arg"
;* V59 tmp36 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V60 tmp37 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V61 tmp38 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -78,8 +78,8 @@
;* V67 tmp44 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp45 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V69 tmp46 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V70 tmp47 [V70,T17] ( 5, 12 ) int -> r12 "Inlining Arg"
-; V71 tmp48 [V71,T25] ( 3, 8 ) byref -> rbp "Inlining Arg"
+; V70 tmp47 [V70,T19] ( 3, 12 ) int -> r12 "Inlining Arg"
+; V71 tmp48 [V71,T27] ( 2, 8 ) byref -> rbp "Inlining Arg"
;* V72 tmp49 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp50 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp51 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -93,7 +93,7 @@
; V82 tmp59 [V82,T48] ( 2, 4 ) long -> rcx "Inlining Arg"
; V83 tmp60 [V83,T49] ( 2, 4 ) long -> rax "Inlining Arg"
; V84 tmp61 [V84,T14] ( 7, 15 ) byref -> rsi single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V85 tmp62 [V85,T09] ( 15, 28 ) int -> rdi "field V04._length (fldOffset=0x8)" P-INDEP
+; V85 tmp62 [V85,T09] ( 14, 28 ) int -> rdi "field V04._length (fldOffset=0x8)" P-INDEP
; V86 tmp63 [V86,T13] ( 6, 7 ) byref -> [rsp+0x58] spill-single-def ptr "field V06._reference (fldOffset=0x0)" P-INDEP
; V87 tmp64 [V87,T08] ( 15, 21.50) int -> r14 "field V06._length (fldOffset=0x8)" P-INDEP
; V88 tmp65 [V88,T20] ( 7, 8 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -138,7 +138,7 @@
; V127 tmp104 [V127,T41] ( 4, 4 ) byref -> [rsp+0x50] spill-single-def ptr "shadowVar"
; V128 tmp105 [V128,T60] ( 3, 3 ) byref -> rdx single-def "shadowVar"
; V129 tmp106 [V129,T61] ( 3, 3 ) byref -> r8 single-def "shadowVar"
-; V130 cse0 [V130,T32] ( 4, 6 ) byref -> rbp "CSE - conservative"
+; V130 cse0 [V130,T32] ( 3, 6 ) byref -> rbp "CSE - conservative"
; V131 cse1 [V131,T12] ( 4, 16 ) int -> [rsp+0x6C] spill-single-def "CSE - moderate"
; V132 cse2 [V132,T28] ( 6, 7.50) int -> registers multi-def "CSE - moderate"
; V133 cse3 [V133,T05] ( 3, 40 ) long -> [rsp+0x60] spill-single-def "CSE - aggressive"
@@ -257,7 +257,7 @@ G_M55503_IG03: ; bbWeight=1, isz, extend
; gcr arg pop 0
lea eax, [r14-0x01]
cmp eax, r14d
- jae G_M55503_IG41
+ jae G_M55503_IG42
mov r12d, dword ptr [rbp+4*rax]
cmp r14d, 1
jg SHORT G_M55503_IG05
@@ -308,7 +308,7 @@ G_M55503_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rs
G_M55503_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref
mov r8d, edi
cmp edi, r14d
- jl G_M55503_IG37
+ jl G_M55503_IG38
;; size=12 bbWeight=1 PerfScore 1.50
G_M55503_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref, isz
mov ecx, r8d
@@ -330,7 +330,7 @@ G_M55503_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r
lea edx, [r8-0x01]
mov dword ptr [rsp+0x6C], edx
cmp edx, edi
- jae G_M55503_IG41
+ jae G_M55503_IG42
mov r11d, edx
mov r11d, dword ptr [rsi+4*r11]
mov ebx, eax
@@ -346,7 +346,7 @@ G_M55503_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r
G_M55503_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref
lea r11d, [r8-0x02]
cmp r11d, edi
- jae G_M55503_IG41
+ jae G_M55503_IG42
lea r11d, [r8-0x02]
mov r11d, dword ptr [rsi+4*r11]
;; size=21 bbWeight=2 PerfScore 8.50
@@ -365,7 +365,7 @@ G_M55503_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r
G_M55503_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref
lea r13d, [r8-0x03]
cmp r13d, edi
- jae G_M55503_IG41
+ jae G_M55503_IG42
mov dword ptr [rsp+0xAC], r8d
lea r13d, [r8-0x03]
mov r13d, dword ptr [rsi+4*r13]
@@ -413,7 +413,7 @@ G_M55503_IG23: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15},
G_M55503_IG24: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=8060 {rbp rsi r15}, byref
mov eax, 0xD1FFAB1E
cmp rdx, rax
- ja G_M55503_IG42
+ ja G_M55503_IG43
;; size=14 bbWeight=8 PerfScore 12.00
G_M55503_IG25: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
; byrRegs -[rbp]
@@ -439,7 +439,7 @@ G_M55503_IG26: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}
G_M55503_IG27: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
mov qword ptr [rsp+0x98], rdx
test rdx, rdx
- je G_M55503_IG32
+ je G_M55503_IG33
;; size=17 bbWeight=8 PerfScore 18.00
G_M55503_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
cmp ecx, edi
@@ -452,9 +452,9 @@ G_M55503_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15},
mov r12d, edi
sub r12d, ecx
mov dword ptr [rsp+0xAC], r8d
- js G_M55503_IG43
+ js G_M55503_IG44
;; size=37 bbWeight=2 PerfScore 9.50
-G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref
+G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref, isz
mov bword ptr [rsp+0x80], rbx
mov dword ptr [rsp+0x88], r12d
mov rbx, bword ptr [rsp+0x58]
@@ -467,16 +467,25 @@ G_M55503_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp r
; gcr arg pop 0
mov r13d, dword ptr [rsp+0xA4]
cmp eax, r13d
- je G_M55503_IG40
+ je G_M55503_IG41
inc r13d
cmp eax, r13d
- jne G_M55503_IG44
+ je SHORT G_M55503_IG30
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=109 bbWeight=2 PerfScore 34.50
+G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref
mov r13d, dword ptr [rsp+0xA8]
mov r12d, edi
sub r12d, r13d
js G_M55503_IG45
- ;; size=107 bbWeight=2 PerfScore 32.50
-G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref
+ ;; size=20 bbWeight=2 PerfScore 5.00
+G_M55503_IG31: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp rsi r15}, byref
mov bword ptr [rsp+0x80], rbp
mov dword ptr [rsp+0x88], r12d
mov bword ptr [rsp+0x70], rbx
@@ -492,32 +501,32 @@ G_M55503_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8068 {rbx rbp r
mov qword ptr [rsp+0x98], rbp
jne G_M55503_IG46
;; size=73 bbWeight=2 PerfScore 23.00
-G_M55503_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
+G_M55503_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
; byrRegs -[rbx]
mov ecx, r13d
mov r8d, dword ptr [rsp+0xAC]
mov r9d, dword ptr [rsp+0xB4]
;; size=19 bbWeight=1 PerfScore 2.25
-G_M55503_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
+G_M55503_IG33: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
mov r13d, dword ptr [rsp+0x90]
cmp ecx, r13d
- jae SHORT G_M55503_IG34
+ jae SHORT G_M55503_IG35
;; size=13 bbWeight=4 PerfScore 9.00
-G_M55503_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
+G_M55503_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
mov eax, ecx
mov rdx, qword ptr [rsp+0x98]
mov dword ptr [r15+4*rax], edx
;; size=14 bbWeight=2 PerfScore 4.50
-G_M55503_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
+G_M55503_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
cmp r8d, edi
- jae SHORT G_M55503_IG36
+ jae SHORT G_M55503_IG37
;; size=5 bbWeight=4 PerfScore 5.00
-G_M55503_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
+G_M55503_IG36: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
mov r8d, r8d
xor eax, eax
mov dword ptr [rsi+4*r8], eax
;; size=9 bbWeight=2 PerfScore 3.00
-G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
+G_M55503_IG37: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref
mov ebp, dword ptr [rsp+0x6C]
mov r8d, ebp
cmp r8d, r14d
@@ -528,7 +537,7 @@ G_M55503_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15},
mov r12d, dword ptr [rsp+0xBC]
jge G_M55503_IG11
;; size=45 bbWeight=4 PerfScore 26.00
-G_M55503_IG37: ; bbWeight=1, gcVars=00000000000000000000020000000000 {V127}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M55503_IG38: ; bbWeight=1, gcVars=00000000000000000000020000000000 {V127}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
; byrRegs -[rbp rsi]
; GC ptr vars -{V86}
mov eax, dword ptr [r15+0x0C]
@@ -547,17 +556,17 @@ G_M55503_IG37: ; bbWeight=1, gcVars=00000000000000000000020000000000 {V12
; byrRegs +[rax]
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0xC0], rcx
- je SHORT G_M55503_IG38
+ je SHORT G_M55503_IG39
; GC ptr vars -{V127}
call CORINFO_HELP_FAIL_FAST
; byrRegs -[rax rbx r15]
; gcr arg pop 0
;; size=69 bbWeight=1 PerfScore 17.00
-G_M55503_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+G_M55503_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
; byrRegs +[rax]
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M55503_IG39: ; bbWeight=1, epilog, nogc, extend
+G_M55503_IG40: ; bbWeight=1, epilog, nogc, extend
add rsp, 200
pop rbx
pop rbp
@@ -569,21 +578,21 @@ G_M55503_IG39: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=20 bbWeight=1 PerfScore 5.25
-G_M55503_IG40: ; bbWeight=1, gcVars=00000000000000000000020000002000 {V86 V127}, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi r15}, gcvars, byref
+G_M55503_IG41: ; bbWeight=1, gcVars=00000000000000000000020000002000 {V86 V127}, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi r15}, gcvars, byref
; byrRegs -[rax] +[rbx rsi r15]
; GC ptr vars +{V41 V86 V127}
mov ecx, dword ptr [rsp+0xA8]
mov r8d, dword ptr [rsp+0xAC]
mov r9d, dword ptr [rsp+0xB4]
- jmp G_M55503_IG32
+ jmp G_M55503_IG33
;; size=28 bbWeight=1 PerfScore 5.00
...
+39 (+6.32%) : 99822.dasm - System.Collections.Generic.GenericArraySortHelper1[int]:IntroSort(System.Span
1[int],int) (Tier1)
@@ -11,7 +11,7 @@
;
; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T10] ( 8, 7.91) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.39) int -> rbp
+; V02 loc0 [V02,T07] ( 16, 15.37) int -> rbp
; V03 loc1 [V03,T17] ( 3, 3.93) int -> r14
; V04 loc2 [V04,T24] ( 9, 0.50) byref -> rdi single-def
; V05 loc3 [V05,T25] ( 9, 0.50) byref -> rbp single-def
@@ -123,26 +123,30 @@ G_M38662_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rsi]
mov edi, dword ptr [rcx+0x08]
test edi, edi
- je G_M38662_IG28
+ je G_M38662_IG29
test ebx, ebx
- jl G_M38662_IG29
+ jl G_M38662_IG30
;; size=22 bbWeight=1 PerfScore 6.50
G_M38662_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; byrRegs -[rcx]
mov ebp, edi
cmp edi, 1
- jle G_M38662_IG20
+ jle G_M38662_IG21
;; size=11 bbWeight=1 PerfScore 1.50
G_M38662_IG04: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
cmp ebp, 16
- jle SHORT G_M38662_IG08
+ jle SHORT G_M38662_IG09
;; size=5 bbWeight=1.96 PerfScore 2.45
G_M38662_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
test ebx, ebx
- je G_M38662_IG32
+ je G_M38662_IG34
dec ebx
cmp ebp, edi
- ja G_M38662_IG33
+ ja G_M38662_IG35
+ test ebp, ebp
+ jl G_M38662_IG31
+ ;; size=26 bbWeight=0.98 PerfScore 3.91
+G_M38662_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
mov ecx, ebp
mov bword ptr [rsp+0x28], rsi
mov dword ptr [rsp+0x30], ecx
@@ -157,13 +161,13 @@ G_M38662_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi},
add rdx, rax
mov eax, edi
cmp rdx, rax
- ja G_M38662_IG33
+ ja G_M38662_IG35
lea r15, bword ptr [rsi+4*rcx]
; byrRegs +[r15]
test ebp, ebp
- jl G_M38662_IG30
- ;; size=79 bbWeight=0.98 PerfScore 13.20
-G_M38662_IG06: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
+ jl G_M38662_IG32
+ ;; size=61 bbWeight=0.98 PerfScore 10.51
+G_M38662_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
mov bword ptr [rsp+0x28], r15
mov dword ptr [rsp+0x30], ebp
lea rcx, [rsp+0x28]
@@ -175,39 +179,39 @@ G_M38662_IG06: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r1
cmp ebp, 1
jg SHORT G_M38662_IG04
;; size=30 bbWeight=1.98 PerfScore 14.34
-G_M38662_IG07: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38662_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
- jmp G_M38662_IG20
+ jmp G_M38662_IG21
;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M38662_IG08: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG09: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
cmp ebp, 2
- je SHORT G_M38662_IG18
+ je SHORT G_M38662_IG19
;; size=5 bbWeight=0.98 PerfScore 1.22
-G_M38662_IG09: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG10: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, 3
- je G_M38662_IG21
+ je G_M38662_IG22
;; size=9 bbWeight=0.96 PerfScore 1.20
-G_M38662_IG10: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG11: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, edi
- ja G_M38662_IG33
+ ja G_M38662_IG35
test ebp, ebp
- jl G_M38662_IG31
+ jl G_M38662_IG33
;; size=16 bbWeight=0.87 PerfScore 2.18
-G_M38662_IG11: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG12: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
mov ecx, ebp
xor edx, edx
dec ecx
test ecx, ecx
- jle SHORT G_M38662_IG20
+ jle SHORT G_M38662_IG21
;; size=10 bbWeight=0.87 PerfScore 1.74
-G_M38662_IG12: ; bbWeight=8.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG13: ; bbWeight=8.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
lea eax, [rdx+0x01]
movsxd r8, eax
mov r8d, dword ptr [rsi+4*r8]
- jmp SHORT G_M38662_IG14
+ jmp SHORT G_M38662_IG15
;; size=12 bbWeight=8.93 PerfScore 42.40
-G_M38662_IG13: ; bbWeight=25.63, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG14: ; bbWeight=25.63, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
lea r9d, [rdx+0x01]
movsxd r9, r9d
lea r9, bword ptr [rsi+4*r9]
@@ -215,39 +219,39 @@ G_M38662_IG13: ; bbWeight=25.63, gcrefRegs=0000 {}, byrefRegs=0040 {rsi},
mov dword ptr [r9], r10d
dec edx
;; size=16 bbWeight=25.63 PerfScore 64.08
-G_M38662_IG14: ; bbWeight=34.56, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG15: ; bbWeight=34.56, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs -[r9]
test edx, edx
- jl SHORT G_M38662_IG16
+ jl SHORT G_M38662_IG17
;; size=4 bbWeight=34.56 PerfScore 43.20
-G_M38662_IG15: ; bbWeight=32.70, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG16: ; bbWeight=32.70, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
movsxd r10, edx
mov r10d, dword ptr [rsi+4*r10]
cmp r10d, r8d
- jg SHORT G_M38662_IG13
+ jg SHORT G_M38662_IG14
;; size=12 bbWeight=32.70 PerfScore 114.46
-G_M38662_IG16: ; bbWeight=8.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG17: ; bbWeight=8.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
inc edx
movsxd rdx, edx
mov dword ptr [rsi+4*rdx], r8d
mov edx, eax
cmp edx, ecx
- jl SHORT G_M38662_IG12
+ jl SHORT G_M38662_IG13
;; size=15 bbWeight=8.93 PerfScore 26.78
-G_M38662_IG17: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M38662_IG18: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi]
- jmp SHORT G_M38662_IG20
+ jmp SHORT G_M38662_IG21
;; size=2 bbWeight=0.87 PerfScore 1.74
-G_M38662_IG18: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG19: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
lea rbp, bword ptr [rsi+0x04]
; byrRegs +[rbp]
cmp dword ptr [rsi], esi
mov ecx, dword ptr [rsi]
cmp ecx, dword ptr [rbp]
- jle SHORT G_M38662_IG20
+ jle SHORT G_M38662_IG21
;; size=13 bbWeight=0.02 PerfScore 0.21
-G_M38662_IG19: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rsi}, byref
+G_M38662_IG20: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rsi}, byref
xor ecx, ecx
cmp rsi, rbp
setne cl
@@ -258,7 +262,7 @@ G_M38662_IG19: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rs
mov dword ptr [rsi], eax
mov dword ptr [rbp], ecx
;; size=24 bbWeight=0.01 PerfScore 0.10
-G_M38662_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M38662_IG21: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp rsi]
add rsp, 56
pop rbx
@@ -269,10 +273,10 @@ G_M38662_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop r15
ret
;; size=13 bbWeight=0.02 PerfScore 0.09
-G_M38662_IG21: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M38662_IG22: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; byrRegs +[rsi]
cmp edi, 2
- jbe SHORT G_M38662_IG27
+ jbe SHORT G_M38662_IG28
lea rdi, bword ptr [rsi+0x08]
; byrRegs +[rdi]
lea rbp, bword ptr [rsi+0x04]
@@ -280,9 +284,9 @@ G_M38662_IG21: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=000
cmp dword ptr [rsi], esi
mov ecx, dword ptr [rsi]
cmp ecx, dword ptr [rbp]
- jle SHORT G_M38662_IG23
+ jle SHORT G_M38662_IG24
;; size=22 bbWeight=0.09 PerfScore 0.97
-G_M38662_IG22: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
+G_M38662_IG23: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
xor ecx, ecx
cmp rsi, rbp
setne cl
@@ -293,12 +297,12 @@ G_M38662_IG22: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rs
mov dword ptr [rsi], eax
mov dword ptr [rbp], ecx
;; size=24 bbWeight=0.04 PerfScore 0.41
-G_M38662_IG23: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref, isz
+G_M38662_IG24: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref, isz
mov ecx, dword ptr [rsi]
cmp ecx, dword ptr [rdi]
- jle SHORT G_M38662_IG25
+ jle SHORT G_M38662_IG26
;; size=6 bbWeight=0.09 PerfScore 0.52
-G_M38662_IG24: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
+G_M38662_IG25: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
xor ecx, ecx
cmp rsi, rdi
setne cl
@@ -309,13 +313,13 @@ G_M38662_IG24: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rs
mov dword ptr [rsi], eax
mov dword ptr [rdi], ecx
;; size=22 bbWeight=0.04 PerfScore 0.41
-G_M38662_IG25: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M38662_IG26: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
; byrRegs -[rsi]
mov ecx, dword ptr [rbp]
cmp ecx, dword ptr [rdi]
- jle SHORT G_M38662_IG20
+ jle SHORT G_M38662_IG21
;; size=7 bbWeight=0.09 PerfScore 0.52
-G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M38662_IG27: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx
cmp rbp, rdi
setne cl
@@ -325,14 +329,14 @@ G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd
mov edx, dword ptr [rdi]
mov dword ptr [rbp], edx
mov dword ptr [rdi], ecx
- jmp SHORT G_M38662_IG20
+ jmp SHORT G_M38662_IG21
;; size=26 bbWeight=0.04 PerfScore 0.49
-G_M38662_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38662_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp rdi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M38662_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
...
+41 (+6.39%) : 20726.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan
1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)
@@ -91,27 +91,27 @@ G_M30796_IG01: ; bbWeight=100, gcVars=0000000000000000 {}, gcrefRegs=0000
mov rsi, bword ptr [rbp+0x108]
; byrRegs +[rsi]
;; size=107 bbWeight=100 PerfScore 2200.00
-G_M30796_IG02: ; bbWeight=100, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG02: ; bbWeight=100, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov rdx, gword ptr [rbx+0x18]
; gcrRegs +[rdx]
mov ecx, dword ptr [rsi+0x08]
mov r8d, ecx
cmp r8d, dword ptr [rdx+0x08]
- jae SHORT G_M30796_IG08
+ jae G_M30796_IG19
movzx rdx, byte ptr [rdx+r8+0x10]
; gcrRegs -[rdx]
test dl, 1
- jne SHORT G_M30796_IG07
- ;; size=27 bbWeight=100 PerfScore 1150.00
-G_M30796_IG03: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jne G_M30796_IG18
+ ;; size=35 bbWeight=100 PerfScore 1150.00
+G_M30796_IG03: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
test dl, 2
- jne G_M30796_IG23
+ jne G_M30796_IG15
mov r9, bword ptr [rdi]
; byrRegs +[r9]
mov eax, dword ptr [rdi+0x08]
cmp dword ptr [rbp+0x90], eax
- jae SHORT G_M30796_IG14
- ;; size=23 bbWeight=99.99 PerfScore 824.92
+ jae G_M30796_IG22
+ ;; size=27 bbWeight=99.99 PerfScore 824.92
G_M30796_IG04: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=02C0 {rsi rdi r9}, byref, isz
mov rax, gword ptr [rbx+0x50]
; gcrRegs +[rax]
@@ -122,105 +122,132 @@ G_M30796_IG04: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=02C0 {r
; gcrRegs +[r10]
mov r11d, dword ptr [r10+0x08]
cmp r11d, r9d
- ja SHORT G_M30796_IG12
+ ja G_M30796_IG21
mov r10, gword ptr [rax+0x10]
cmp byte ptr [r10], r10b
cmp gword ptr [r10+0x08], 0
- je SHORT G_M30796_IG11
- ;; size=43 bbWeight=399.96 PerfScore 7699.23
-G_M30796_IG05: ; bbWeight=3199.68, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ je SHORT G_M30796_IG08
+ ;; size=47 bbWeight=399.96 PerfScore 7699.23
+G_M30796_IG05: ; bbWeight=3199.68, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
; gcrRegs -[rax]
mov eax, dword ptr [r10+0x18]
bt r9d, eax
- jae SHORT G_M30796_IG09
- ;; size=10 bbWeight=3199.68 PerfScore 11198.88
-G_M30796_IG06: ; bbWeight=1599.84, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jae G_M30796_IG20
+ ;; size=14 bbWeight=3199.68 PerfScore 11198.88
+G_M30796_IG06: ; bbWeight=1599.84, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
mov rax, gword ptr [r10+0x08]
- ; gcrRegs +[rax]
- jmp SHORT G_M30796_IG10
- ;; size=6 bbWeight=1599.84 PerfScore 6399.36
-G_M30796_IG07: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- ; gcrRegs -[rax r10]
- mov r9d, dword ptr [rbp+0x90]
- mov dword ptr [rbp+0x80], r9d
- jmp SHORT G_M30796_IG03
- ;; size=16 bbWeight=0.01 PerfScore 0.04
-G_M30796_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[rsi rdi]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M30796_IG09: ; bbWeight=1599.84, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
- ; gcrRegs +[rbx r10]
- ; byrRegs +[rsi rdi]
- mov rax, gword ptr [r10+0x10]
; gcrRegs +[rax]
;; size=4 bbWeight=1599.84 PerfScore 3199.68
-G_M30796_IG10: ; bbWeight=3199.68, gcrefRegs=0009 {rax rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG07: ; bbWeight=3199.68, gcrefRegs=0009 {rax rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[r10]
mov r10, rax
; gcrRegs +[r10]
cmp gword ptr [r10+0x08], 0
jne SHORT G_M30796_IG05
;; size=10 bbWeight=3199.68 PerfScore 13598.64
-G_M30796_IG11: ; bbWeight=399.96, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG08: ; bbWeight=399.96, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
; gcrRegs -[rax]
mov eax, dword ptr [r10+0x18]
- jmp SHORT G_M30796_IG13
- ;; size=6 bbWeight=399.96 PerfScore 1599.84
-G_M30796_IG12: ; bbWeight=399.96, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
- mov eax, r9d
- mov eax, dword ptr [r10+4*rax+0x10]
- ;; size=8 bbWeight=399.96 PerfScore 899.91
-G_M30796_IG13: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ;; size=4 bbWeight=399.96 PerfScore 799.92
+G_M30796_IG09: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[r10]
- jmp SHORT G_M30796_IG15
- ;; size=2 bbWeight=399.96 PerfScore 799.92
-G_M30796_IG14: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- mov eax, -1
- ;; size=5 bbWeight=399.96 PerfScore 99.99
-G_M30796_IG15: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test dl, 4
- je SHORT G_M30796_IG17
+ je SHORT G_M30796_IG11
;; size=5 bbWeight=99.99 PerfScore 124.99
-G_M30796_IG16: ; bbWeight=99.89, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG10: ; bbWeight=99.89, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov edx, dword ptr [rbp+0x90]
mov dword ptr [rbp+0x8C], edx
mov dword ptr [rbp+0x88], ecx
mov edx, dword ptr [rbp+0x80]
mov dword ptr [rbp+0x84], edx
test r14d, r14d
- je G_M30796_IG24
- ;; size=39 bbWeight=99.89 PerfScore 624.32
-G_M30796_IG17: ; bbWeight=99.41, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ je SHORT G_M30796_IG16
+ ;; size=35 bbWeight=99.89 PerfScore 624.32
+G_M30796_IG11: ; bbWeight=99.41, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
cmp dword ptr [rbp+0x90], r15d
- jge G_M30796_IG25
+ jge SHORT G_M30796_IG17
mov edx, dword ptr [rbx+0xA4]
shlx r9d, ecx, edx
or r9d, eax
mov rdx, gword ptr [rbx+0x20]
; gcrRegs +[rdx]
cmp r9d, dword ptr [rdx+0x08]
- jae SHORT G_M30796_IG08
+ jae SHORT G_M30796_IG19
mov r10d, r9d
mov edx, dword ptr [rdx+4*r10+0x10]
; gcrRegs -[rdx]
test edx, edx
- jle SHORT G_M30796_IG20
+ jle G_M30796_IG23
;; size=49 bbWeight=99.41 PerfScore 1516.01
-G_M30796_IG18: ; bbWeight=397.64, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG12: ; bbWeight=397.64, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov dword ptr [rsi+0x08], edx
;; size=3 bbWeight=397.64 PerfScore 397.64
-G_M30796_IG19: ; bbWeight=1590.57, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG13: ; bbWeight=1590.57, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov r13d, 1
- jmp SHORT G_M30796_IG22
- ;; size=8 bbWeight=1590.57 PerfScore 3578.78
-G_M30796_IG20: ; bbWeight=3181.14, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ;; size=6 bbWeight=1590.57 PerfScore 397.64
+G_M30796_IG14: ; bbWeight=99.41, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ xor rax, rax
+ ; gcrRegs +[rax]
+ mov gword ptr [rbp-0x38], rax
+ test r13d, r13d
+ je SHORT G_M30796_IG17
+ mov eax, dword ptr [rbp+0x90]
+ ; gcrRegs -[rax]
+ inc eax
+ mov dword ptr [rbp+0x90], eax
+ jmp G_M30796_IG02
+ ;; size=30 bbWeight=99.41 PerfScore 671.02
+G_M30796_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi rdi]
+ mov dword ptr [rbp+0x74], 1
+ jmp G_M30796_IG25
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M30796_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp+0x74], 1
+ jmp G_M30796_IG25
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M30796_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ mov dword ptr [rbp+0x74], eax
+ jmp G_M30796_IG25
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M30796_IG18: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs +[rbx]
+ ; byrRegs +[rsi rdi]
+ mov r9d, dword ptr [rbp+0x90]
+ mov dword ptr [rbp+0x80], r9d
+ jmp G_M30796_IG03
+ ;; size=19 bbWeight=0.01 PerfScore 0.04
+G_M30796_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi rdi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M30796_IG20: ; bbWeight=1599.84, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs +[rbx r10]
+ ; byrRegs +[rsi rdi]
+ mov rax, gword ptr [r10+0x10]
+ ; gcrRegs +[rax]
+ jmp G_M30796_IG07
+ ;; size=9 bbWeight=1599.84 PerfScore 6399.36
+G_M30796_IG21: ; bbWeight=399.96, gcrefRegs=0408 {rbx r10}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs -[rax]
+ mov eax, r9d
+ mov eax, dword ptr [r10+4*rax+0x10]
+ jmp G_M30796_IG09
+ ;; size=13 bbWeight=399.96 PerfScore 1699.83
+G_M30796_IG22: ; bbWeight=399.96, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs -[r10]
+ mov eax, -1
+ jmp G_M30796_IG09
+ ;; size=10 bbWeight=399.96 PerfScore 899.91
+G_M30796_IG23: ; bbWeight=3181.14, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov rdx, gword ptr [rbx+0x10]
; gcrRegs +[rdx]
cmp ecx, dword ptr [rdx+0x08]
- jae G_M30796_IG08
+ jae SHORT G_M30796_IG19
mov rdx, gword ptr [rdx+8*r8+0x10]
mov dword ptr [rsp+0x20], 1
lea rcx, [rbp-0x38]
@@ -232,54 +259,31 @@ G_M30796_IG20: ; bbWeight=3181.14, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M30796_IG21
+ je SHORT G_M30796_IG24
mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x14]
; gcrRegs -[rax]
mov dword ptr [rsi+0x08], eax
- jmp SHORT G_M30796_IG19
- ;; size=63 bbWeight=3181.14 PerfScore 67599.23
-G_M30796_IG21: ; bbWeight=397.64, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ jmp G_M30796_IG13
+ ;; size=62 bbWeight=3181.14 PerfScore 67599.23
+G_M30796_IG24: ; bbWeight=397.64, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
xor r13d, r13d
- ;; size=3 bbWeight=397.64 PerfScore 99.41
-G_M30796_IG22: ; bbWeight=99.41, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- xor rax, rax
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x38], rax
- test r13d, r13d
- je SHORT G_M30796_IG25
- mov eax, dword ptr [rbp+0x90]
...
+43 (+6.95%) : 39739.dasm - System.Collections.Generic.GenericArraySortHelper1[int]:IntroSort(System.Span
1[int],int) (Tier1)
@@ -11,7 +11,7 @@
;
; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T10] ( 8, 7.92) int -> rbx
-; V02 loc0 [V02,T07] ( 15, 14.40) int -> rbp
+; V02 loc0 [V02,T07] ( 16, 15.38) int -> rbp
; V03 loc1 [V03,T17] ( 3, 3.94) int -> r14
; V04 loc2 [V04,T24] ( 9, 0.50) byref -> rdi single-def
; V05 loc3 [V05,T25] ( 9, 0.50) byref -> rbp single-def
@@ -123,26 +123,32 @@ G_M38662_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
; byrRegs +[rsi]
mov edi, dword ptr [rcx+0x08]
test edi, edi
- je G_M38662_IG30
+ je G_M38662_IG32
test ebx, ebx
- jl G_M38662_IG31
+ jl G_M38662_IG33
;; size=22 bbWeight=1 PerfScore 6.50
G_M38662_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; byrRegs -[rcx]
mov ebp, edi
cmp edi, 1
- jle G_M38662_IG22
+ jle G_M38662_IG24
;; size=11 bbWeight=1 PerfScore 1.50
-G_M38662_IG04: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG04: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, 16
- jle SHORT G_M38662_IG09
- ;; size=5 bbWeight=1.96 PerfScore 2.45
+ jle G_M38662_IG11
+ ;; size=9 bbWeight=1.96 PerfScore 2.45
G_M38662_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
test ebx, ebx
- je G_M38662_IG34
+ je G_M38662_IG37
dec ebx
cmp ebp, edi
- ja G_M38662_IG35
+ ja G_M38662_IG38
+ ;; size=18 bbWeight=0.98 PerfScore 2.69
+G_M38662_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ test ebp, ebp
+ jl G_M38662_IG34
+ ;; size=8 bbWeight=0.98 PerfScore 1.22
+G_M38662_IG07: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
mov ecx, ebp
mov bword ptr [rsp+0x28], rsi
mov dword ptr [rsp+0x30], ecx
@@ -157,16 +163,16 @@ G_M38662_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi},
add rdx, rax
mov eax, edi
cmp rdx, rax
- ja G_M38662_IG35
- ;; size=67 bbWeight=0.98 PerfScore 11.51
-G_M38662_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ ja G_M38662_IG38
+ ;; size=49 bbWeight=0.98 PerfScore 8.82
+G_M38662_IG08: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
mov ecx, ecx
lea r15, bword ptr [rsi+4*rcx]
; byrRegs +[r15]
test ebp, ebp
- jl G_M38662_IG32
+ jl G_M38662_IG35
;; size=14 bbWeight=0.98 PerfScore 1.96
-G_M38662_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
+G_M38662_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r15}, byref, isz
mov bword ptr [rsp+0x28], r15
mov dword ptr [rsp+0x30], ebp
lea rcx, [rsp+0x28]
@@ -178,41 +184,41 @@ G_M38662_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=8040 {rsi r1
cmp ebp, 1
jg SHORT G_M38662_IG04
;; size=30 bbWeight=1.98 PerfScore 14.35
-G_M38662_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38662_IG10: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
- jmp G_M38662_IG22
+ jmp G_M38662_IG24
;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M38662_IG09: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG11: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
cmp ebp, 2
- je SHORT G_M38662_IG20
+ je SHORT G_M38662_IG22
;; size=5 bbWeight=0.98 PerfScore 1.22
-G_M38662_IG10: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG12: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, 3
- je G_M38662_IG23
+ je G_M38662_IG25
;; size=9 bbWeight=0.96 PerfScore 1.20
-G_M38662_IG11: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG13: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebp, edi
- ja G_M38662_IG35
+ ja G_M38662_IG38
;; size=8 bbWeight=0.87 PerfScore 1.09
-G_M38662_IG12: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG14: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
test ebp, ebp
- jl G_M38662_IG33
+ jl G_M38662_IG36
;; size=8 bbWeight=0.87 PerfScore 1.09
-G_M38662_IG13: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG15: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
mov ecx, ebp
xor edx, edx
dec ecx
test ecx, ecx
- jle SHORT G_M38662_IG22
+ jle SHORT G_M38662_IG24
;; size=10 bbWeight=0.87 PerfScore 1.74
-G_M38662_IG14: ; bbWeight=9.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG16: ; bbWeight=9.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
lea eax, [rdx+0x01]
movsxd r8, eax
mov r8d, dword ptr [rsi+4*r8]
- jmp SHORT G_M38662_IG16
+ jmp SHORT G_M38662_IG18
;; size=12 bbWeight=9.12 PerfScore 43.31
-G_M38662_IG15: ; bbWeight=26.00, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38662_IG17: ; bbWeight=26.00, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
lea r9d, [rdx+0x01]
movsxd r9, r9d
lea r9, bword ptr [rsi+4*r9]
@@ -220,39 +226,39 @@ G_M38662_IG15: ; bbWeight=26.00, gcrefRegs=0000 {}, byrefRegs=0040 {rsi},
mov dword ptr [r9], r10d
dec edx
;; size=16 bbWeight=26.00 PerfScore 65.01
-G_M38662_IG16: ; bbWeight=35.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG18: ; bbWeight=35.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs -[r9]
test edx, edx
- jl SHORT G_M38662_IG18
+ jl SHORT G_M38662_IG20
;; size=4 bbWeight=35.12 PerfScore 43.90
-G_M38662_IG17: ; bbWeight=33.16, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG19: ; bbWeight=33.16, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
movsxd r10, edx
mov r10d, dword ptr [rsi+4*r10]
cmp r10d, r8d
- jg SHORT G_M38662_IG15
+ jg SHORT G_M38662_IG17
;; size=12 bbWeight=33.16 PerfScore 116.06
-G_M38662_IG18: ; bbWeight=9.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG20: ; bbWeight=9.12, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
inc edx
movsxd rdx, edx
mov dword ptr [rsi+4*rdx], r8d
mov edx, eax
cmp edx, ecx
- jl SHORT G_M38662_IG14
+ jl SHORT G_M38662_IG16
;; size=15 bbWeight=9.12 PerfScore 27.35
-G_M38662_IG19: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M38662_IG21: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi]
- jmp SHORT G_M38662_IG22
+ jmp SHORT G_M38662_IG24
;; size=2 bbWeight=0.87 PerfScore 1.74
-G_M38662_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38662_IG22: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
lea rbp, bword ptr [rsi+0x04]
; byrRegs +[rbp]
cmp dword ptr [rsi], esi
mov ecx, dword ptr [rsi]
cmp ecx, dword ptr [rbp]
- jle SHORT G_M38662_IG22
+ jle SHORT G_M38662_IG24
;; size=13 bbWeight=0.02 PerfScore 0.21
-G_M38662_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rsi}, byref
+G_M38662_IG23: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rsi}, byref
xor ecx, ecx
cmp rsi, rbp
setne cl
@@ -263,7 +269,7 @@ G_M38662_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0060 {rbp rs
mov dword ptr [rsi], eax
mov dword ptr [rbp], ecx
;; size=24 bbWeight=0.01 PerfScore 0.11
-G_M38662_IG22: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M38662_IG24: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp rsi]
add rsp, 56
pop rbx
@@ -274,10 +280,10 @@ G_M38662_IG22: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop r15
ret
;; size=13 bbWeight=0.02 PerfScore 0.09
-G_M38662_IG23: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M38662_IG25: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; byrRegs +[rsi]
cmp edi, 2
- jbe SHORT G_M38662_IG29
+ jbe SHORT G_M38662_IG31
lea rdi, bword ptr [rsi+0x08]
; byrRegs +[rdi]
lea rbp, bword ptr [rsi+0x04]
@@ -285,9 +291,9 @@ G_M38662_IG23: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=000
cmp dword ptr [rsi], esi
mov ecx, dword ptr [rsi]
cmp ecx, dword ptr [rbp]
- jle SHORT G_M38662_IG25
+ jle SHORT G_M38662_IG27
;; size=22 bbWeight=0.09 PerfScore 0.98
-G_M38662_IG24: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
+G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
xor ecx, ecx
cmp rsi, rbp
setne cl
@@ -298,12 +304,12 @@ G_M38662_IG24: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rs
mov dword ptr [rsi], eax
mov dword ptr [rbp], ecx
;; size=24 bbWeight=0.04 PerfScore 0.42
-G_M38662_IG25: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref, isz
+G_M38662_IG27: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref, isz
mov ecx, dword ptr [rsi]
cmp ecx, dword ptr [rdi]
- jle SHORT G_M38662_IG27
+ jle SHORT G_M38662_IG29
;; size=6 bbWeight=0.09 PerfScore 0.52
-G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
+G_M38662_IG28: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rsi rdi}, byref
xor ecx, ecx
cmp rsi, rdi
setne cl
@@ -314,13 +320,13 @@ G_M38662_IG26: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00E0 {rbp rs
mov dword ptr [rsi], eax
mov dword ptr [rdi], ecx
;; size=22 bbWeight=0.04 PerfScore 0.42
-G_M38662_IG27: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M38662_IG29: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
; byrRegs -[rsi]
mov ecx, dword ptr [rbp]
cmp ecx, dword ptr [rdi]
- jle SHORT G_M38662_IG22
+ jle SHORT G_M38662_IG24
;; size=7 bbWeight=0.09 PerfScore 0.52
-G_M38662_IG28: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M38662_IG30: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx
cmp rbp, rdi
setne cl
@@ -330,14 +336,14 @@ G_M38662_IG28: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd
mov edx, dword ptr [rdi]
mov dword ptr [rbp], edx
...
benchmarks.run_tiered.windows.x64.checked.mch
-15 (-2.12%) : 12507.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan
1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)
@@ -91,28 +91,40 @@ G_M30796_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd
; gcrRegs +[rcx]
mov edx, dword ptr [rsi+0x08]
cmp edx, dword ptr [rcx+0x08]
- jae G_M30796_IG13
+ jae SHORT G_M30796_IG06
movzx r13, byte ptr [rcx+rdx+0x10]
test r13b, 1
je SHORT G_M30796_IG04
- ;; size=28 bbWeight=8 PerfScore 90.00
+ ;; size=24 bbWeight=8 PerfScore 90.00
G_M30796_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
; gcrRegs -[rcx]
mov ecx, dword ptr [rbp+0x90]
mov dword ptr [rbp+0x80], ecx
;; size=12 bbWeight=2 PerfScore 4.00
-G_M30796_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 2
- jne G_M30796_IG18
- ;; size=10 bbWeight=8 PerfScore 10.00
-G_M30796_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ je SHORT G_M30796_IG07
+ ;; size=6 bbWeight=8 PerfScore 10.00
+G_M30796_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi rdi]
+ mov eax, 1
+ jmp G_M30796_IG22
+ ;; size=10 bbWeight=0.50 PerfScore 1.12
+G_M30796_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M30796_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs +[rbx]
+ ; byrRegs +[rsi rdi]
mov rcx, bword ptr [rdi]
; byrRegs +[rcx]
mov edx, dword ptr [rdi+0x08]
cmp dword ptr [rbp+0x90], edx
- jae G_M30796_IG15
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M30796_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref
+ jae SHORT G_M30796_IG11
+ ;; size=14 bbWeight=4 PerfScore 28.00
+G_M30796_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref, isz
mov rdx, gword ptr [rbx+0x50]
; gcrRegs +[rdx]
mov eax, dword ptr [rbp+0x90]
@@ -122,7 +134,7 @@ G_M30796_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rs
mov ecx, dword ptr [r12+0x08]
; byrRegs -[rcx]
cmp ecx, eax
- ja G_M30796_IG14
+ ja SHORT G_M30796_IG09
mov rcx, gword ptr [rdx+0x10]
; gcrRegs +[rcx]
mov edx, eax
@@ -132,12 +144,25 @@ G_M30796_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rs
; gcrRegs -[rcx r12]
; gcr arg pop 0
mov r8d, eax
- ;; size=48 bbWeight=2 PerfScore 37.50
-G_M30796_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jmp SHORT G_M30796_IG10
+ ;; size=46 bbWeight=2 PerfScore 41.50
+G_M30796_IG09: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs +[r12]
+ mov r8d, eax
+ mov r8d, dword ptr [r12+4*r8+0x10]
+ ;; size=8 bbWeight=2 PerfScore 4.50
+G_M30796_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs -[r12]
+ jmp SHORT G_M30796_IG12
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M30796_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ mov r8d, -1
+ ;; size=6 bbWeight=2 PerfScore 0.50
+G_M30796_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 4
- je SHORT G_M30796_IG09
+ je SHORT G_M30796_IG14
;; size=6 bbWeight=4 PerfScore 5.00
-G_M30796_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov edx, dword ptr [rbp+0x90]
mov dword ptr [rbp+0x8C], edx
mov edx, dword ptr [rsi+0x08]
@@ -145,11 +170,11 @@ G_M30796_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd
mov edx, dword ptr [rbp+0x80]
mov dword ptr [rbp+0x84], edx
test r15d, r15d
- je G_M30796_IG19
+ je G_M30796_IG20
;; size=42 bbWeight=2 PerfScore 16.50
-G_M30796_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M30796_IG14: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
cmp dword ptr [rbp+0x90], r14d
- jge G_M30796_IG20
+ jge G_M30796_IG21
mov edx, dword ptr [rsi+0x08]
mov ecx, dword ptr [rbx+0xA4]
shlx r9d, edx, ecx
@@ -157,54 +182,25 @@ G_M30796_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd
mov rcx, gword ptr [rbx+0x20]
; gcrRegs +[rcx]
cmp r9d, dword ptr [rcx+0x08]
- jae SHORT G_M30796_IG13
+ jae G_M30796_IG06
mov eax, r9d
mov ecx, dword ptr [rcx+4*rax+0x10]
; gcrRegs -[rcx]
test ecx, ecx
- jle SHORT G_M30796_IG16
- ;; size=51 bbWeight=4 PerfScore 69.00
-G_M30796_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ jle SHORT G_M30796_IG17
+ ;; size=55 bbWeight=4 PerfScore 69.00
+G_M30796_IG15: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov dword ptr [rsi+0x08], ecx
;; size=3 bbWeight=2 PerfScore 2.00
-G_M30796_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M30796_IG16: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov r13d, 1
- ;; size=6 bbWeight=8 PerfScore 2.00
-G_M30796_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- xor rax, rax
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x40], rax
- test r13d, r13d
- je G_M30796_IG20
- mov eax, dword ptr [rbp+0x90]
- ; gcrRegs -[rax]
- inc eax
- mov dword ptr [rbp+0x90], eax
- jmp G_M30796_IG02
- ;; size=34 bbWeight=4 PerfScore 27.00
-G_M30796_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[rsi rdi]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M30796_IG14: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref
- ; gcrRegs +[rbx r12]
- ; byrRegs +[rsi rdi]
- mov r8d, eax
- mov r8d, dword ptr [r12+4*r8+0x10]
- jmp G_M30796_IG07
- ;; size=13 bbWeight=2 PerfScore 8.50
-G_M30796_IG15: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- ; gcrRegs -[r12]
- mov r8d, -1
- jmp G_M30796_IG07
- ;; size=11 bbWeight=2 PerfScore 4.50
-G_M30796_IG16: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jmp SHORT G_M30796_IG19
+ ;; size=8 bbWeight=8 PerfScore 18.00
+G_M30796_IG17: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
cmp edx, dword ptr [rcx+0x08]
- jae SHORT G_M30796_IG13
+ jae G_M30796_IG06
mov edx, edx
mov rdx, gword ptr [rcx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -218,32 +214,39 @@ G_M30796_IG16: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi r
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M30796_IG17
+ je SHORT G_M30796_IG18
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x14]
; gcrRegs -[rax]
mov dword ptr [rsi+0x08], eax
- jmp SHORT G_M30796_IG11
- ;; size=58 bbWeight=16 PerfScore 340.00
-G_M30796_IG17: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jmp SHORT G_M30796_IG16
+ ;; size=62 bbWeight=16 PerfScore 340.00
+G_M30796_IG18: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
xor r13d, r13d
- jmp SHORT G_M30796_IG12
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M30796_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M30796_IG19: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ xor rax, rax
+ ; gcrRegs +[rax]
+ mov gword ptr [rbp-0x40], rax
+ test r13d, r13d
+ je SHORT G_M30796_IG21
+ mov eax, dword ptr [rbp+0x90]
+ ; gcrRegs -[rax]
+ inc eax
+ mov dword ptr [rbp+0x90], eax
+ jmp G_M30796_IG02
+ ;; size=30 bbWeight=4 PerfScore 27.00
+G_M30796_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
; byrRegs -[rsi rdi]
mov eax, 1
- jmp SHORT G_M30796_IG21
+ jmp SHORT G_M30796_IG22
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M30796_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov eax, 1
- jmp SHORT G_M30796_IG21
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M30796_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30796_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M30796_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30796_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbp+0x90]
mov rdx, bword ptr [rbp+0x100]
; byrRegs +[rdx]
@@ -269,7 +272,7 @@ G_M30796_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs +[rdx]
mov dword ptr [rdx], ecx
;; size=75 bbWeight=1 PerfScore 15.00
-G_M30796_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M30796_IG23: ; bbWeight=1, epilog, nogc, extend
add rsp, 280
pop rbx
pop rsi
@@ -281,7 +284,7 @@ G_M30796_IG22: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=20 bbWeight=1 PerfScore 5.25
-G_M30796_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M30796_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; byrRegs -[rdx]
push rbp
push r15
@@ -296,7 +299,7 @@ G_M30796_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x30], rbp
lea rbp, [rbp+0x80]
;; size=32 bbWeight=0 PerfScore 0.00
-G_M30796_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30796_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, dword ptr [rbp+0x90]
mov rdx, bword ptr [rbp+0x100]
; byrRegs +[rdx]
@@ -315,7 +318,7 @@ G_M30796_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
...
+0 (0.00%) : 11205.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -76,12 +76,14 @@ G_M44603_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M44603_IG12
+ jne SHORT G_M44603_IG10
;; size=10 bbWeight=2 PerfScore 8.50
-G_M44603_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M44603_IG10
- ;; size=2 bbWeight=4 PerfScore 8.00
+G_M44603_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
+ jmp SHORT G_M44603_IG12
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M44603_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx]
mov ecx, ecx
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
@@ -107,7 +109,7 @@ G_M44603_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=8 bbWeight=0.50 PerfScore 1.38
-Total bytes of code 100, prolog size 10, PerfScore 56.00, instruction count 39, allocated bytes for code 100 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+Total bytes of code 100, prolog size 10, PerfScore 49.00, instruction count 39, allocated bytes for code 100 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 33044.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)
@@ -201,7 +201,7 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov r12, rax
; gcrRegs +[r12]
test rdi, rdi
- je G_M41722_IG45
+ je G_M41722_IG46
lea rcx, bword ptr [r12+0x08]
; byrRegs +[rcx]
mov rdx, rdi
@@ -210,11 +210,11 @@ G_M41722_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rax rdx rdi]
; byrRegs -[rcx]
cmp dword ptr [rsi+0x08], 0
- jle G_M41722_IG40
+ jle G_M41722_IG41
;; size=61 bbWeight=1 PerfScore 9.50
G_M41722_IG03: ; bbWeight=4, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
cmp r15d, dword ptr [rsi+0x08]
- jae G_M41722_IG42
+ jae G_M41722_IG43
mov ecx, r15d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 256
@@ -224,25 +224,25 @@ G_M41722_IG04: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
test eax, eax
- je G_M41722_IG12
+ je G_M41722_IG13
jmp SHORT G_M41722_IG06
;; size=16 bbWeight=2 PerfScore 12.50
G_M41722_IG05: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref
mov ecx, ecx
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- je G_M41722_IG12
+ je G_M41722_IG13
;; size=22 bbWeight=2 PerfScore 9.00
G_M41722_IG06: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref
mov r13d, 1
inc r15d
- jmp G_M41722_IG39
+ jmp G_M41722_IG40
;; size=14 bbWeight=2 PerfScore 5.00
G_M41722_IG07: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r12+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov eax, dword ptr [r12+0x10]
cmp dword ptr [rcx+0x08], eax
jbe SHORT G_M41722_IG08
@@ -256,46 +256,48 @@ G_M41722_IG08: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000
G_M41722_IG09: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
movzx rcx, cx
cmp ecx, 256
- jb SHORT G_M41722_IG10
+ jb SHORT G_M41722_IG11
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M41722_IG14
- jmp SHORT G_M41722_IG11
- ;; size=23 bbWeight=8 PerfScore 62.00
-G_M41722_IG10: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M41722_IG12
+ ;; size=21 bbWeight=8 PerfScore 46.00
+G_M41722_IG10: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M41722_IG15
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M41722_IG11: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, ecx
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- je SHORT G_M41722_IG14
+ je SHORT G_M41722_IG15
;; size=18 bbWeight=8 PerfScore 36.00
-G_M41722_IG11: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG12: ; bbWeight=8, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r12+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov eax, dword ptr [r12+0x10]
mov edx, eax
cmp dword ptr [rcx+0x08], edx
- jbe SHORT G_M41722_IG12
+ jbe SHORT G_M41722_IG13
inc eax
mov dword ptr [r12+0x10], eax
;; size=33 bbWeight=8 PerfScore 86.00
-G_M41722_IG12: ; bbWeight=16, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG13: ; bbWeight=16, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
test r13d, r13d
jne SHORT G_M41722_IG07
;; size=5 bbWeight=16 PerfScore 20.00
-G_M41722_IG13: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M41722_IG15
+G_M41722_IG14: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M41722_IG16
;; size=2 bbWeight=2 PerfScore 4.00
-G_M41722_IG14: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG15: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref
xor r13d, r13d
;; size=3 bbWeight=2 PerfScore 0.50
-G_M41722_IG15: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG16: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, r15d
cmp word ptr [rsi+2*rcx+0x0C], 37
- jne G_M41722_IG39
+ jne G_M41722_IG40
mov rcx, 0xD1FFAB1E ; System.Text.StringBuilder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -318,55 +320,55 @@ G_M41722_IG15: ; bbWeight=2, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000
mov ecx, r15d
lea r15d, [rcx+0x01]
cmp ecx, dword ptr [rsi+0x08]
- jae G_M41722_IG42
+ jae G_M41722_IG43
movzx rax, word ptr [rsi+2*rcx+0x0C]
mov dword ptr [rsp+0x78], eax
mov r8d, 1
mov rcx, gword ptr [r12+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov edx, dword ptr [r12+0x10]
mov r10d, edx
cmp dword ptr [rcx+0x08], r10d
- jbe SHORT G_M41722_IG16
+ jbe SHORT G_M41722_IG17
inc edx
mov dword ptr [r12+0x10], edx
mov edx, r10d
movzx rcx, word ptr [rcx+2*rdx+0x0C]
; gcrRegs -[rcx]
- jmp SHORT G_M41722_IG17
+ jmp SHORT G_M41722_IG18
;; size=151 bbWeight=2 PerfScore 66.50
-G_M41722_IG16: ; bbWeight=2, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG17: ; bbWeight=2, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
mov ecx, -1
;; size=5 bbWeight=2 PerfScore 0.50
-G_M41722_IG17: ; bbWeight=2, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG18: ; bbWeight=2, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
movzx r10, cx
;; size=4 bbWeight=2 PerfScore 0.50
-G_M41722_IG18: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG19: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
movsx rcx, r10w
cmp ecx, -1
- jne SHORT G_M41722_IG20
+ jne SHORT G_M41722_IG21
;; size=9 bbWeight=16 PerfScore 24.00
-G_M41722_IG19: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG20: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
xor r8d, r8d
mov dword ptr [rsp+0x70], r8d
mov r8d, dword ptr [rsp+0x70]
;; size=13 bbWeight=8 PerfScore 18.00
-G_M41722_IG20: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG21: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rdi+0x18]
mov rdx, gword ptr [rdi+0x08]
; gcrRegs +[rdx]
cmp dword ptr [rdx+0x08], ecx
- jbe SHORT G_M41722_IG22
+ jbe SHORT G_M41722_IG23
;; size=12 bbWeight=16 PerfScore 128.00
-G_M41722_IG21: ; bbWeight=8, gcrefRegs=10CC {rdx rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG22: ; bbWeight=8, gcrefRegs=10CC {rdx rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, ecx
mov word ptr [rdx+2*rcx+0x10], r10w
inc dword ptr [rdi+0x18]
- jmp SHORT G_M41722_IG23
+ jmp SHORT G_M41722_IG24
;; size=13 bbWeight=8 PerfScore 50.00
-G_M41722_IG22: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG23: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
mov dword ptr [rsp+0x70], r8d
mov rcx, rdi
@@ -377,31 +379,31 @@ G_M41722_IG22: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=
; gcr arg pop 0
mov r8d, dword ptr [rsp+0x70]
;; size=22 bbWeight=8 PerfScore 44.00
-G_M41722_IG23: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG24: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r12+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M41722_IG47
+ je G_M41722_IG48
mov edx, dword ptr [r12+0x10]
cmp dword ptr [rcx+0x08], edx
- jbe SHORT G_M41722_IG25
+ jbe SHORT G_M41722_IG26
;; size=24 bbWeight=16 PerfScore 148.00
-G_M41722_IG24: ; bbWeight=8, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG25: ; bbWeight=8, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov edx, edx
movzx rdx, word ptr [rcx+2*rdx+0x0C]
- jmp SHORT G_M41722_IG26
+ jmp SHORT G_M41722_IG27
;; size=9 bbWeight=8 PerfScore 34.00
-G_M41722_IG25: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M41722_IG26: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov edx, -1
;; size=5 bbWeight=8 PerfScore 2.00
-G_M41722_IG26: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG27: ; bbWeight=16, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp+0x68], edx
movzx r10, dx
cmp r10d, 256
- jb SHORT G_M41722_IG28
+ jb SHORT G_M41722_IG29
;; size=17 bbWeight=16 PerfScore 40.00
-G_M41722_IG27: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG28: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp+0x70], r8d
mov dword ptr [rsp+0x74], r10d
mov ecx, r10d
@@ -409,30 +411,30 @@ G_M41722_IG27: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=
; gcr arg pop 0
test eax, eax
mov r10d, dword ptr [rsp+0x74]
- jne SHORT G_M41722_IG30
+ jne SHORT G_M41722_IG31
mov r8d, dword ptr [rsp+0x70]
- jmp SHORT G_M41722_IG29
+ jmp SHORT G_M41722_IG30
;; size=35 bbWeight=8 PerfScore 84.00
-G_M41722_IG28: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+G_M41722_IG29: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov ecx, r10d
mov r9, 0xD1FFAB1E ; static handle
test byte ptr [rcx+r9], 128
- jne SHORT G_M41722_IG30
+ jne SHORT G_M41722_IG31
;; size=20 bbWeight=8 PerfScore 36.00
-G_M41722_IG29: ; bbWeight=8, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rsp+0x78], 99
- je SHORT G_M41722_IG30
- cmp dword ptr [rsp+0x68], -1
...
+1 (+0.05%) : 44651.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
@@ -42,7 +42,7 @@
;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V32 tmp26 [V32,T36] ( 3, 6 ) int -> r12 "Inline return value spill temp"
; V33 tmp27 [V33,T37] ( 4, 8 ) int -> rax "Inline stloc first use temp"
-; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
+; V34 tmp28 [V34,T50] ( 3, 3 ) byref -> rbp single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp30 [V36,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -66,7 +66,7 @@
; V55 tmp49 [V55,T08] ( 9, 40 ) ref -> [rsp+0x38] class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount>
;* V56 tmp50 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount>
;* V57 tmp51 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> rbx "Inlining Arg"
+; V58 tmp52 [V58,T51] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V60 tmp54 [V60,T60] ( 2, 2 ) int -> rdi "Single return block return value"
; V61 tmp55 [V61,T25] ( 6, 13 ) int -> rsi "V01.[000..004)"
@@ -112,7 +112,7 @@ G_M55237_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M55237_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov esi, dword ptr [rsp+0xA8]
cmp byte ptr [rbx+0x4F], 0
- jne G_M55237_IG91
+ jne G_M55237_IG92
call <unknown method>
; gcr arg pop 0
mov edi, eax
@@ -121,7 +121,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=34 bbWeight=1 PerfScore 10.25
G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, dword ptr [rbx+0x44]
- je G_M55237_IG92
+ je G_M55237_IG93
lea rbp, bword ptr [rbx+0x50]
; byrRegs +[rbp]
mov rcx, rbp
@@ -141,11 +141,11 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp
mov rcx, qword ptr GS:[0x0058]
mov rcx, qword ptr [rcx]
cmp dword ptr [rcx+0xD8], 3
- jl G_M55237_IG93
+ jl G_M55237_IG94
mov rcx, qword ptr [rcx+0xE0]
mov rcx, qword ptr [rcx+0x18]
test rcx, rcx
- je G_M55237_IG93
+ je G_M55237_IG94
mov r14, bword ptr [rcx]
; byrRegs +[r14]
add r14, 16
@@ -232,7 +232,7 @@ G_M55237_IG14: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=4020
; gcrRegs +[r15]
mov ecx, dword ptr [r15+0x18]
test ecx, ecx
- jg G_M55237_IG94
+ jg G_M55237_IG95
cmp edi, dword ptr [rbx+0x40]
jne G_M55237_IG35
inc ecx
@@ -276,11 +276,11 @@ G_M55237_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp
mov rcx, qword ptr GS:[0x0058]
mov rcx, qword ptr [rcx]
cmp dword ptr [rcx+0xD8], 3
- jl G_M55237_IG95
+ jl G_M55237_IG96
mov rcx, qword ptr [rcx+0xE0]
mov rcx, qword ptr [rcx+0x18]
test rcx, rcx
- je G_M55237_IG95
+ je G_M55237_IG96
mov r14, bword ptr [rcx]
; byrRegs +[r14]
add r14, 16
@@ -480,7 +480,7 @@ G_M55237_IG35: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
;; size=8 bbWeight=0.50 PerfScore 0.25
G_M55237_IG36: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rbp r14}, byref, isz
cmp dword ptr [rbx+0x48], 0xD1FFAB1E
- jb G_M55237_IG88
+ jb G_M55237_IG84
cmp esi, -1
je SHORT G_M55237_IG38
;; size=18 bbWeight=4 PerfScore 21.00
@@ -496,15 +496,15 @@ G_M55237_IG39: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rb
call <unknown method>
; gcr arg pop 0
sub eax, dword ptr [rsp+0xAC]
- js G_M55237_IG84
+ js G_M55237_IG85
cmp eax, esi
- jge G_M55237_IG84
+ jge G_M55237_IG85
mov r12d, esi
sub r12d, eax
;; size=32 bbWeight=2 PerfScore 11.50
G_M55237_IG40: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rbp r14}, byref
test r12d, r12d
- je G_M55237_IG84
+ je G_M55237_IG85
;; size=9 bbWeight=2 PerfScore 2.50
G_M55237_IG41: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rbp r14}, byref, isz
cmp r13d, 20
@@ -842,7 +842,7 @@ G_M55237_IG74: ; bbWeight=4, gcrefRegs=800C {rdx rbx r15}, byrefRegs=4020
; gcr arg pop 0
mov edi, eax
test edi, edi
- je G_M55237_IG86
+ je G_M55237_IG87
mov rcx, qword ptr [r15+0x10]
mov r12, qword ptr [rbx+0x28]
cmp rcx, r12
@@ -929,13 +929,50 @@ G_M55237_IG83: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=4020 {rb
; gcrRegs -[rdx]
jmp G_M55237_IG36
;; size=5 bbWeight=4 PerfScore 8.00
-G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
- ; gcrRegs -[rbx r15]
+G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0020 {rbp}, byref, isz
; byrRegs -[r14]
+ inc dword ptr [rbx+0x48]
+ inc dword ptr [r15+0x18]
+ jmp SHORT G_M55237_IG89
+ ;; size=9 bbWeight=0.50 PerfScore 4.00
+G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ ; gcrRegs -[rbx r15]
+ cmp dword ptr [rbp], 0
+ jne SHORT G_M55237_IG86
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
+ xor eax, eax
+ mov dword ptr [rbp], eax
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M55237_IG87: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rbp]
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M55237_IG88: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 88
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
+G_M55237_IG89: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+ ; byrRegs +[rbp]
mov rbx, rbp
; byrRegs +[rbx]
cmp dword ptr [rbx], 0
- jne SHORT G_M55237_IG85
+ jne SHORT G_M55237_IG90
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -945,51 +982,12 @@ G_M55237_IG84: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp},
; byrRegs -[rbp]
; gcr arg pop 0
;; size=34 bbWeight=0.50 PerfScore 3.88
-G_M55237_IG85: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- xor eax, eax
- mov dword ptr [rbx], eax
- ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M55237_IG86: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M55237_IG87: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 88
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r12
- pop r13
- pop r14
- pop r15
- ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M55237_IG88: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
- ; gcrRegs +[rbx r15]
- ; byrRegs +[rbp]
- inc dword ptr [rbx+0x48]
- inc dword ptr [r15+0x18]
- mov rbx, rbp
- ; gcrRegs -[rbx]
- ; byrRegs +[rbx]
- cmp dword ptr [rbx], 0
- jne SHORT G_M55237_IG89
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx r15]
- ; byrRegs -[rbp]
- ; gcr arg pop 0
- ;; size=41 bbWeight=0.50 PerfScore 6.88
-G_M55237_IG89: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M55237_IG90: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax
mov dword ptr [rbx], eax
movzx rax, dil
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG91: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 88
pop rbx
pop rbp
@@ -1001,7 +999,7 @@ G_M55237_IG90: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M55237_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
; byrRegs -[rbx]
mov rcx, rbx
@@ -1011,7 +1009,7 @@ G_M55237_IG91: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55237_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Threading.LockRecursionException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -1040,7 +1038,7 @@ G_M55237_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=56 bbWeight=0 PerfScore 0.00
-G_M55237_IG93: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref
+G_M55237_IG94: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rbx]
; byrRegs +[rbp]
mov ecx, 3
@@ -1051,7 +1049,7 @@ G_M55237_IG93: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp},
; byrRegs +[r14]
jmp G_M55237_IG05
;; size=18 bbWeight=0 PerfScore 0.00
-G_M55237_IG94: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
...
+11 (+0.32%) : 7929.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 51,108 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T06] ( 51,108 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T33] ( 9, 30 ) ref -> rbx class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate>
; V02 loc1 [V02,T40] ( 5, 19 ) ref -> [rbp-0x48] do-not-enreg[Z] must-init class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V03 loc2 [V03,T20] ( 13, 43 ) ref -> [rbp-0x50] do-not-enreg[M] must-init ld-addr-op class-hnd EH-live <<unknown class>>
@@ -21,7 +21,7 @@
; V10 loc9 [V10,T12] ( 9, 53 ) ref -> [rbp-0x70] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain>
; V11 loc10 [V11,T10] ( 4, 72 ) ubyte -> r14
; V12 loc11 [V12,T22] ( 3, 40 ) int -> rdi
-; V13 loc12 [V13,T02] ( 5,132 ) int -> r15
+; V13 loc12 [V13,T03] ( 5,132 ) int -> r15
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
; V15 loc14 [V15,T53] ( 3, 10 ) int -> rbx
; V16 loc15 [V16,T23] ( 5, 33 ) int -> rsi
@@ -33,7 +33,7 @@
;* V22 tmp4 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp5 [V23,T43] ( 2, 16 ) ref -> rsi class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
; V24 tmp6 [V24,T11] ( 8, 64 ) ref -> rdi class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V25 tmp7 [V25,T07] ( 3, 96 ) ref -> r12 class-hnd exact "dup spill" <System.Object[]>
+; V25 tmp7 [V25,T08] ( 3, 96 ) ref -> r12 class-hnd exact "dup spill" <System.Object[]>
; V26 tmp8 [V26,T36] ( 3, 24 ) ref -> rbx class-hnd exact "dup spill" <System.Object[]>
; V27 tmp9 [V27,T37] ( 3, 24 ) ref -> rdi class-hnd exact "dup spill" <System.Object[]>
;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback>
@@ -144,10 +144,10 @@
;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection>
;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement>
;* V135 tmp117 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V136 tmp118 [V136,T00] ( 6,320 ) ref -> r14 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V137 tmp119 [V137,T03] ( 2,128 ) ref -> r13 class-hnd exact "dup spill" <System.String>
-; V138 tmp120 [V138,T01] ( 6,132 ) ref -> r13
-; V139 tmp121 [V139,T08] ( 3, 96 ) ref -> r13 class-hnd exact "dup spill" <System.String>
+; V136 tmp118 [V136,T00] ( 6,384 ) ref -> r14 class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2>
+; V137 tmp119 [V137,T04] ( 2,128 ) ref -> r13 class-hnd exact "dup spill" <System.String>
+; V138 tmp120 [V138,T02] ( 6,148 ) ref -> r13
+; V139 tmp121 [V139,T01] ( 3,192 ) ref -> r13 class-hnd exact "dup spill" <System.String>
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V142 tmp124 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
@@ -235,7 +235,7 @@
; V224 tmp206 [V224,T75] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V225 tmp207 [V225,T76] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V226 tmp208 [V226,T16] ( 3, 48 ) ref -> rax "argument with side effect"
-; V227 tmp209 [V227,T04] ( 2,128 ) ref -> rcx "argument with side effect"
+; V227 tmp209 [V227,T05] ( 2,128 ) ref -> rcx "argument with side effect"
; V228 tmp210 [V228,T32] ( 2, 32 ) ref -> rcx "argument with side effect"
; V229 tmp211 [V229,T17] ( 3, 48 ) ref -> rcx "argument with side effect"
; V230 tmp212 [V230,T103] ( 2, 4 ) long -> r8 "argument with side effect"
@@ -247,7 +247,7 @@
; V236 cse1 [V236,T114] ( 3, 3 ) ref -> rax "CSE - conservative"
; V237 cse2 [V237,T115] ( 3, 3 ) ref -> rax "CSE - conservative"
; V238 cse3 [V238,T116] ( 3, 3 ) ref -> rax "CSE - conservative"
-; V239 cse4 [V239,T06] ( 39,109 ) ref -> rsi multi-def "CSE - aggressive"
+; V239 cse4 [V239,T07] ( 39,109 ) ref -> rsi multi-def "CSE - aggressive"
; V240 cse5 [V240,T117] ( 3, 3 ) ref -> rdi "CSE - conservative"
; V241 cse6 [V241,T81] ( 4, 4 ) ref -> rbx "CSE - conservative"
; V242 cse7 [V242,T79] ( 5, 5 ) ref -> rbx "CSE - conservative"
@@ -276,14 +276,14 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
;; size=47 bbWeight=1 PerfScore 14.33
-G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000020 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG02: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000040 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
xor rax, rax
; gcrRegs +[rax]
mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V02}
;; size=6 bbWeight=1 PerfScore 1.25
-G_M34773_IG03: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000000020 {V00 V02}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG03: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000000040 {V00 V02}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
mov gword ptr [rbp-0x50], rax
; GC ptr vars +{V03}
@@ -408,7 +408,7 @@ G_M34773_IG08: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M34773_IG09: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000100020 {V00 V02 V03}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG09: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000100040 {V00 V02 V03}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
; GC ptr vars +{V02 V03 V20}
cmp gword ptr [rbx+0x30], 0
@@ -449,7 +449,7 @@ G_M34773_IG10: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V05}
;; size=6 bbWeight=1 PerfScore 1.25
-G_M34773_IG11: ; bbWeight=1, gcVars=000000000000000000000000000000080000010000100020 {V00 V02 V03 V05}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG11: ; bbWeight=1, gcVars=000000000000000000000000000000080000010000100040 {V00 V02 V03 V05}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
; GC ptr vars -{V20}
call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this]
@@ -464,7 +464,7 @@ G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000000000000800000
test byte ptr [(reloc)], 1 ; global ptr
jne SHORT G_M34773_IG13
;; size=27 bbWeight=1 PerfScore 11.00
-G_M34773_IG12: ; bbWeight=0, gcVars=000000000000000000000000000000080000010000180020 {V00 V02 V03 V04 V05}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG12: ; bbWeight=0, gcVars=000000000000000000000000000000080000010000180040 {V00 V02 V03 V04 V05}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx]
mov rcx, 0xD1FFAB1E
mov edx, 56
@@ -624,7 +624,7 @@ G_M34773_IG17: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
;; size=9 bbWeight=1 PerfScore 3.25
G_M34773_IG18: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -639,7 +639,7 @@ G_M34773_IG18: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this]
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75
G_M34773_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
@@ -663,7 +663,7 @@ G_M34773_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
;; size=38 bbWeight=1 PerfScore 16.75
G_M34773_IG20: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -678,12 +678,12 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this]
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75
G_M34773_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -698,7 +698,7 @@ G_M34773_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this]
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=49 bbWeight=1 PerfScore 17.75
G_M34773_IG22: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx rbx]
@@ -736,7 +736,7 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
test rbx, rbx
je G_M34773_IG27
;; size=94 bbWeight=1 PerfScore 31.00
-G_M34773_IG23: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000010000000020 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG23: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000010000000040 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov rcx, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate
cmp qword ptr [rbx], rcx
@@ -808,7 +808,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rsi, gword ptr [rcx]
; gcrRegs +[rsi]
cmp byte ptr [rsi+0x9D], 0
- je G_M34773_IG59
+ je G_M34773_IG60
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -818,7 +818,7 @@ G_M34773_IG27: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Net.NetEventSource:AttemptingRestartUsingCert(System.Security.Cryptography.X509Certificates.X509Certificate,System.Net.Security.SslStream):this]
; gcrRegs -[rcx rdx rbx rsi r8]
; gcr arg pop 0
- jmp G_M34773_IG59
+ jmp G_M34773_IG60
;; size=47 bbWeight=1 PerfScore 12.75
G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x10]
@@ -827,7 +827,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rax]
mov rax, gword ptr [rax+0x10]
test rax, rax
- je G_M34773_IG59
+ je G_M34773_IG60
mov rax, gword ptr [rax+0x08]
mov rcx, rax
mov rax, qword ptr [rax]
@@ -837,7 +837,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jle G_M34773_IG59
+ jle G_M34773_IG60
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this]
@@ -858,7 +858,7 @@ G_M34773_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
test ebx, ebx
jne SHORT G_M34773_IG30
;; size=100 bbWeight=1 PerfScore 35.25
-G_M34773_IG29: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000180020 {V00 V02 V03 V04}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34773_IG29: ; bbWeight=1, gcVars=000000000000000000000000000000000000010000180040 {V00 V02 V03 V04}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx]
mov rbx, rsi
; gcrRegs +[rbx]
@@ -899,26 +899,26 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
G_M34773_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ecx, ecx
mov dword ptr [rbp-0x3C], ecx
- jmp G_M34773_IG58
+ jmp G_M34773_IG59
;; size=10 bbWeight=1 PerfScore 3.25
G_M34773_IG32: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp gword ptr [rbp-0x58], 0
- je G_M34773_IG51
+ je G_M34773_IG52
mov rcx, gword ptr [rbp-0x58]
; gcrRegs +[rcx]
mov ebx, dword ptr [rcx+0x08]
test ebx, ebx
- je G_M34773_IG51
+ je G_M34773_IG52
xor rcx, rcx
mov gword ptr [rbp-0x68], rcx
; GC ptr vars +{V09}
;; size=32 bbWeight=4 PerfScore 34.00
-G_M34773_IG33: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800180020 {V00 V02 V03 V04 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG33: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800180040 {V00 V02 V03 V04 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
mov gword ptr [rbp-0x70], rcx
; GC ptr vars +{V10}
;; size=4 bbWeight=4 PerfScore 4.00
-G_M34773_IG34: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800181020 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34773_IG34: ; bbWeight=4, gcVars=000000000000000000000000000000000000010800181040 {V00 V02 V03 V04 V09 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x38]
@@ -937,7 +937,7 @@ G_M34773_IG34: ; bbWeight=4, gcVars=0000000000000000000000000000000000000
; gcr arg pop 0
mov gword ptr [rbp-0x68], rax
cmp gword ptr [rbp-0x68], 0
- je G_M34773_IG47
+ je G_M34773_IG48
mov rcx, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rcx]
; gcrRegs +[rsi]
...
coreclr_tests.run.windows.x64.checked.mch
-10 (-2.80%) : 227236.dasm - MSjumpscs.VT:ToStringHelper():System.String:this (FullOpts)
@@ -33,12 +33,12 @@
;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp22 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp23 [V25,T11] ( 2, 7.58) byref -> rax "Inlining Arg"
-; V26 tmp24 [V26,T12] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V25 tmp23 [V25,T11] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V26 tmp24 [V26,T12] ( 2, 7.58) byref -> rdx "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) long -> zero-ref "spilling arg"
; V28 cse0 [V28,T09] ( 5, 9.37) int -> rdi "CSE - aggressive"
; V29 cse1 [V29,T03] ( 9, 17.06) ref -> rdx multi-def "CSE - aggressive"
-; V30 rat0 [V30,T00] ( 3, 48 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V30 rat0 [V30,T00] ( 3, 48 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 32
@@ -57,35 +57,25 @@ G_M38274_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov rsi, gword ptr [rbx]
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M38274_IG05
+ je SHORT G_M38274_IG08
;; size=8 bbWeight=8 PerfScore 26.00
G_M38274_IG03: ; bbWeight=1.84, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov edi, dword ptr [rsi+0x08]
test edi, edi
- je SHORT G_M38274_IG05
+ je SHORT G_M38274_IG08
;; size=7 bbWeight=1.84 PerfScore 5.98
G_M38274_IG04: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov ebp, edi
lea ecx, [rbp+0x10]
test ecx, ecx
- jl G_M38274_IG20
- jmp SHORT G_M38274_IG06
- ;; size=15 bbWeight=1.90 PerfScore 7.58
-G_M38274_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rsi]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- jmp G_M38274_IG13
- ;; size=15 bbWeight=2 PerfScore 4.50
-G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rdx] +[rsi]
+ jl G_M38274_IG19
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- jne SHORT G_M38274_IG07
+ jne SHORT G_M38274_IG05
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -93,10 +83,10 @@ G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=1.90 PerfScore 11.38
-G_M38274_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=45 bbWeight=1.90 PerfScore 15.17
+G_M38274_IG05: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [r14+0x08], edi
- jge SHORT G_M38274_IG08
+ jge SHORT G_M38274_IG06
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -105,7 +95,7 @@ G_M38274_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=25 bbWeight=1.90 PerfScore 14.22
-G_M38274_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG06: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r14+0x0C]
; byrRegs +[rcx]
lea rdx, bword ptr [rsi+0x0C]
@@ -113,26 +103,35 @@ G_M38274_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008
mov r8d, edi
add r8, r8
cmp r8, 6
- jne SHORT G_M38274_IG10
+ jne SHORT G_M38274_IG09
;; size=20 bbWeight=1.90 PerfScore 5.21
-G_M38274_IG09: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
+G_M38274_IG07: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
; gcrRegs -[rsi]
mov eax, dword ptr [rdx]
mov r8d, dword ptr [rdx+0x02]
mov dword ptr [rcx], eax
mov dword ptr [rcx+0x02], r8d
- jmp SHORT G_M38274_IG11
+ jmp SHORT G_M38274_IG10
;; size=14 bbWeight=0.95 PerfScore 7.58
-G_M38274_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+G_M38274_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[r14]
+ ; byrRegs -[rcx rdx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ jmp SHORT G_M38274_IG12
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M38274_IG09: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+ ; gcrRegs -[rdx] +[r14]
+ ; byrRegs +[rcx rdx]
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [r14+0x08]
sub ecx, ebp
cmp ecx, 16
- jge SHORT G_M38274_IG12
+ jge SHORT G_M38274_IG11
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -141,46 +140,46 @@ G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1.90 PerfScore 13.27
-G_M38274_IG12: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
- movsxd rax, ebp
- lea rax, bword ptr [r14+2*rax+0x0C]
- ; byrRegs +[rax]
- mov rcx, 0xD1FFAB1E
+G_M38274_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ movsxd rcx, ebp
+ lea rcx, bword ptr [r14+2*rcx+0x0C]
; byrRegs +[rcx]
- vmovdqu ymm0, ymmword ptr [rcx]
- vmovdqu ymmword ptr [rax], ymm0
+ mov rdx, 0xD1FFAB1E
+ ; byrRegs +[rdx]
+ vmovdqu ymm0, ymmword ptr [rdx]
+ vmovdqu ymmword ptr [rcx], ymm0
mov rdx, r14
; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
;; size=29 bbWeight=1.90 PerfScore 16.59
-G_M38274_IG13: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+G_M38274_IG12: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r14]
- ; byrRegs -[rax rcx]
+ ; byrRegs -[rcx]
mov rcx, rbx
; byrRegs +[rcx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov r14d, dword ptr [rbx+0x08]
- cmp r14d, 2
- ja SHORT G_M38274_IG19
- mov eax, r14d
+ mov eax, dword ptr [rbx+0x08]
+ cmp eax, 2
+ ja SHORT G_M38274_IG18
lea rcx, [reloc @RWD00]
mov ecx, dword ptr [rcx+4*rax]
lea rdx, G_M38274_IG02
add rcx, rdx
jmp rcx
- ;; size=43 bbWeight=8 PerfScore 84.00
-G_M38274_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=8 PerfScore 82.00
+G_M38274_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax
mov dword ptr [rbx+0x08], eax
jmp G_M38274_IG02
;; size=10 bbWeight=4 PerfScore 13.00
-G_M38274_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38274_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M38274_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M38274_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -189,7 +188,7 @@ G_M38274_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M38274_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M38274_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax]
; byrRegs +[rbx]
xor ecx, ecx
@@ -197,7 +196,7 @@ G_M38274_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov rcx, rbx
; byrRegs +[rcx]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M38274_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M38274_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -207,7 +206,7 @@ G_M38274_IG18: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [MS_jumps_cs.VT:ToString():System.String:this]
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M38274_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38274_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx rbx]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -226,17 +225,17 @@ G_M38274_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=35 bbWeight=0 PerfScore 0.00
-G_M38274_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38274_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M38274_IG15 - G_M38274_IG02
- dd G_M38274_IG14 - G_M38274_IG02
- dd G_M38274_IG17 - G_M38274_IG02
+RWD00 dd G_M38274_IG14 - G_M38274_IG02
+ dd G_M38274_IG13 - G_M38274_IG02
+ dd G_M38274_IG16 - G_M38274_IG02
-Total bytes of code 357, prolog size 16, PerfScore 226.64, instruction count 99, allocated bytes for code 357 (MethodHash=79da6a7d) for method MS_jumps_cs.VT:ToStringHelper():System.String:this (FullOpts)
+Total bytes of code 347, prolog size 16, PerfScore 220.85, instruction count 97, allocated bytes for code 347 (MethodHash=79da6a7d) for method MS_jumps_cs.VT:ToStringHelper():System.String:this (FullOpts)
; ============================================================
Unwind Info:
-10 (-2.79%) : 230082.dasm - MSjumps2il.VT:ToStringHelper():System.String:this (FullOpts)
@@ -34,12 +34,12 @@
;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp21 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp22 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp23 [V26,T11] ( 2, 7.58) byref -> rax "Inlining Arg"
-; V27 tmp24 [V27,T12] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V26 tmp23 [V26,T11] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V27 tmp24 [V27,T12] ( 2, 7.58) byref -> rdx "Inlining Arg"
;* V28 tmp25 [V28 ] ( 0, 0 ) long -> zero-ref "spilling arg"
; V29 cse0 [V29,T09] ( 5, 9.37) int -> rdi "CSE - aggressive"
; V30 cse1 [V30,T03] ( 9, 17.06) ref -> rdx multi-def "CSE - aggressive"
-; V31 rat0 [V31,T00] ( 3, 48 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V31 rat0 [V31,T00] ( 3, 48 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 32
@@ -58,35 +58,25 @@ G_M1125_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre
mov rsi, gword ptr [rbx]
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M1125_IG05
+ je SHORT G_M1125_IG08
;; size=8 bbWeight=8 PerfScore 26.00
G_M1125_IG03: ; bbWeight=1.84, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov edi, dword ptr [rsi+0x08]
test edi, edi
- je SHORT G_M1125_IG05
+ je SHORT G_M1125_IG08
;; size=7 bbWeight=1.84 PerfScore 5.98
G_M1125_IG04: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov ebp, edi
lea ecx, [rbp+0x10]
test ecx, ecx
- jl G_M1125_IG19
- jmp SHORT G_M1125_IG06
- ;; size=15 bbWeight=1.90 PerfScore 7.58
-G_M1125_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rsi]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- jmp G_M1125_IG13
- ;; size=15 bbWeight=2 PerfScore 4.50
-G_M1125_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rdx] +[rsi]
+ jl G_M1125_IG18
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- jne SHORT G_M1125_IG07
+ jne SHORT G_M1125_IG05
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -94,10 +84,10 @@ G_M1125_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=1.90 PerfScore 11.38
-G_M1125_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=45 bbWeight=1.90 PerfScore 15.17
+G_M1125_IG05: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [r14+0x08], edi
- jge SHORT G_M1125_IG08
+ jge SHORT G_M1125_IG06
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -106,7 +96,7 @@ G_M1125_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=25 bbWeight=1.90 PerfScore 14.22
-G_M1125_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M1125_IG06: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r14+0x0C]
; byrRegs +[rcx]
lea rdx, bword ptr [rsi+0x0C]
@@ -114,26 +104,35 @@ G_M1125_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {
mov r8d, edi
add r8, r8
cmp r8, 6
- jne SHORT G_M1125_IG10
+ jne SHORT G_M1125_IG09
;; size=20 bbWeight=1.90 PerfScore 5.21
-G_M1125_IG09: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
+G_M1125_IG07: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
; gcrRegs -[rsi]
mov eax, dword ptr [rdx]
mov r8d, dword ptr [rdx+0x02]
mov dword ptr [rcx], eax
mov dword ptr [rcx+0x02], r8d
- jmp SHORT G_M1125_IG11
+ jmp SHORT G_M1125_IG10
;; size=14 bbWeight=0.95 PerfScore 7.58
-G_M1125_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+G_M1125_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[r14]
+ ; byrRegs -[rcx rdx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ jmp SHORT G_M1125_IG12
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M1125_IG09: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+ ; gcrRegs -[rdx] +[r14]
+ ; byrRegs +[rcx rdx]
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M1125_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M1125_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [r14+0x08]
sub ecx, ebp
cmp ecx, 16
- jge SHORT G_M1125_IG12
+ jge SHORT G_M1125_IG11
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -142,46 +141,46 @@ G_M1125_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1.90 PerfScore 13.27
-G_M1125_IG12: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
- movsxd rax, ebp
- lea rax, bword ptr [r14+2*rax+0x0C]
- ; byrRegs +[rax]
- mov rcx, 0xD1FFAB1E
+G_M1125_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ movsxd rcx, ebp
+ lea rcx, bword ptr [r14+2*rcx+0x0C]
; byrRegs +[rcx]
- vmovdqu ymm0, ymmword ptr [rcx]
- vmovdqu ymmword ptr [rax], ymm0
+ mov rdx, 0xD1FFAB1E
+ ; byrRegs +[rdx]
+ vmovdqu ymm0, ymmword ptr [rdx]
+ vmovdqu ymmword ptr [rcx], ymm0
mov rdx, r14
; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
;; size=29 bbWeight=1.90 PerfScore 16.59
-G_M1125_IG13: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+G_M1125_IG12: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r14]
- ; byrRegs -[rax rcx]
+ ; byrRegs -[rcx]
mov rcx, rbx
; byrRegs +[rcx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov r14d, dword ptr [rbx+0x08]
- cmp r14d, 2
- ja SHORT G_M1125_IG20
- mov eax, r14d
+ mov eax, dword ptr [rbx+0x08]
+ cmp eax, 2
+ ja SHORT G_M1125_IG19
lea rcx, [reloc @RWD00]
mov ecx, dword ptr [rcx+4*rax]
lea rdx, G_M1125_IG02
add rcx, rdx
jmp rcx
- ;; size=43 bbWeight=8 PerfScore 84.00
-G_M1125_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=8 PerfScore 82.00
+G_M1125_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax
mov dword ptr [rbx+0x08], eax
jmp G_M1125_IG02
;; size=10 bbWeight=4 PerfScore 13.00
-G_M1125_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1125_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M1125_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M1125_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -190,7 +189,7 @@ G_M1125_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M1125_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M1125_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax]
; byrRegs +[rbx]
xor ecx, ecx
@@ -198,7 +197,7 @@ G_M1125_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
mov rcx, rbx
; byrRegs +[rcx]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M1125_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M1125_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -208,13 +207,13 @@ G_M1125_IG18: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M1125_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M1125_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx rbx]
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M1125_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1125_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -233,12 +232,12 @@ G_M1125_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M1125_IG15 - G_M1125_IG02
- dd G_M1125_IG14 - G_M1125_IG02
- dd G_M1125_IG17 - G_M1125_IG02
+RWD00 dd G_M1125_IG14 - G_M1125_IG02
+ dd G_M1125_IG13 - G_M1125_IG02
+ dd G_M1125_IG16 - G_M1125_IG02
-Total bytes of code 358, prolog size 16, PerfScore 226.64, instruction count 100, allocated bytes for code 358 (MethodHash=2715fb9a) for method MS_jumps2_il.VT:ToStringHelper():System.String:this (FullOpts)
+Total bytes of code 348, prolog size 16, PerfScore 220.85, instruction count 98, allocated bytes for code 348 (MethodHash=2715fb9a) for method MS_jumps2_il.VT:ToStringHelper():System.String:this (FullOpts)
; ============================================================
Unwind Info:
-10 (-2.72%) : 227237.dasm - MSjumpscs.VT:ToString():System.String:this (FullOpts)
@@ -33,12 +33,12 @@
;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp22 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp23 [V25,T11] ( 2, 7.58) byref -> rax "Inlining Arg"
-; V26 tmp24 [V26,T12] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V25 tmp23 [V25,T11] ( 2, 7.58) byref -> rcx "Inlining Arg"
+; V26 tmp24 [V26,T12] ( 2, 7.58) byref -> rdx "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) long -> zero-ref "spilling arg"
; V28 cse0 [V28,T09] ( 5, 9.37) int -> rdi "CSE - aggressive"
; V29 cse1 [V29,T03] ( 9, 17.06) ref -> rdx multi-def "CSE - aggressive"
-; V30 rat0 [V30,T00] ( 3, 48 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V30 rat0 [V30,T00] ( 3, 48 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 32
@@ -57,35 +57,25 @@ G_M64964_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov rsi, gword ptr [rbx]
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M64964_IG05
+ je SHORT G_M64964_IG08
;; size=8 bbWeight=8 PerfScore 26.00
G_M64964_IG03: ; bbWeight=1.84, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov edi, dword ptr [rsi+0x08]
test edi, edi
- je SHORT G_M64964_IG05
+ je SHORT G_M64964_IG08
;; size=7 bbWeight=1.84 PerfScore 5.98
G_M64964_IG04: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov ebp, edi
lea ecx, [rbp+0x0A]
test ecx, ecx
- jl G_M64964_IG20
- jmp SHORT G_M64964_IG06
- ;; size=15 bbWeight=1.90 PerfScore 7.58
-G_M64964_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rsi]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- jmp G_M64964_IG13
- ;; size=15 bbWeight=2 PerfScore 4.50
-G_M64964_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rdx] +[rsi]
+ jl G_M64964_IG19
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- jne SHORT G_M64964_IG07
+ jne SHORT G_M64964_IG05
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -93,10 +83,10 @@ G_M64964_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=1.90 PerfScore 11.38
-G_M64964_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=45 bbWeight=1.90 PerfScore 15.17
+G_M64964_IG05: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [r14+0x08], edi
- jge SHORT G_M64964_IG08
+ jge SHORT G_M64964_IG06
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -105,7 +95,7 @@ G_M64964_IG07: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=25 bbWeight=1.90 PerfScore 14.22
-G_M64964_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M64964_IG06: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r14+0x0C]
; byrRegs +[rcx]
lea rdx, bword ptr [rsi+0x0C]
@@ -113,26 +103,35 @@ G_M64964_IG08: ; bbWeight=1.90, gcrefRegs=4040 {rsi r14}, byrefRegs=0008
mov r8d, edi
add r8, r8
cmp r8, 6
- jne SHORT G_M64964_IG10
+ jne SHORT G_M64964_IG09
;; size=20 bbWeight=1.90 PerfScore 5.21
-G_M64964_IG09: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
+G_M64964_IG07: ; bbWeight=0.95, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref, isz
; gcrRegs -[rsi]
mov eax, dword ptr [rdx]
mov r8d, dword ptr [rdx+0x02]
mov dword ptr [rcx], eax
mov dword ptr [rcx+0x02], r8d
- jmp SHORT G_M64964_IG11
+ jmp SHORT G_M64964_IG10
;; size=14 bbWeight=0.95 PerfScore 7.58
-G_M64964_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+G_M64964_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[r14]
+ ; byrRegs -[rcx rdx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ jmp SHORT G_M64964_IG12
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M64964_IG09: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=000E {rcx rdx rbx}, byref
+ ; gcrRegs -[rdx] +[r14]
+ ; byrRegs +[rcx rdx]
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
;; size=6 bbWeight=1.90 PerfScore 5.69
-G_M64964_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M64964_IG10: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [r14+0x08]
sub ecx, ebp
cmp ecx, 10
- jge SHORT G_M64964_IG12
+ jge SHORT G_M64964_IG11
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -141,48 +140,48 @@ G_M64964_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1.90 PerfScore 13.27
-G_M64964_IG12: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
- movsxd rax, ebp
- lea rax, bword ptr [r14+2*rax+0x0C]
- ; byrRegs +[rax]
- mov rcx, 0xD1FFAB1E
+G_M64964_IG11: ; bbWeight=1.90, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ movsxd rcx, ebp
+ lea rcx, bword ptr [r14+2*rcx+0x0C]
; byrRegs +[rcx]
- vmovdqu xmm0, xmmword ptr [rcx]
- vmovdqu xmm1, xmmword ptr [rcx+0x04]
- vmovdqu xmmword ptr [rax], xmm0
- vmovdqu xmmword ptr [rax+0x04], xmm1
+ mov rdx, 0xD1FFAB1E
+ ; byrRegs +[rdx]
+ vmovdqu xmm0, xmmword ptr [rdx]
+ vmovdqu xmm1, xmmword ptr [rdx+0x04]
+ vmovdqu xmmword ptr [rcx], xmm0
+ vmovdqu xmmword ptr [rcx+0x04], xmm1
mov rdx, r14
; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
;; size=39 bbWeight=1.90 PerfScore 26.07
-G_M64964_IG13: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+G_M64964_IG12: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[r14]
- ; byrRegs -[rax rcx]
+ ; byrRegs -[rcx]
mov rcx, rbx
; byrRegs +[rcx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov r14d, dword ptr [rbx+0x08]
- cmp r14d, 2
- ja SHORT G_M64964_IG19
- mov eax, r14d
+ mov eax, dword ptr [rbx+0x08]
+ cmp eax, 2
+ ja SHORT G_M64964_IG18
lea rcx, [reloc @RWD00]
mov ecx, dword ptr [rcx+4*rax]
lea rdx, G_M64964_IG02
add rcx, rdx
jmp rcx
- ;; size=43 bbWeight=8 PerfScore 84.00
-G_M64964_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=8 PerfScore 82.00
+G_M64964_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor eax, eax
mov dword ptr [rbx+0x08], eax
jmp G_M64964_IG02
;; size=10 bbWeight=4 PerfScore 13.00
-G_M64964_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64964_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M64964_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M64964_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -191,7 +190,7 @@ G_M64964_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M64964_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M64964_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax]
; byrRegs +[rbx]
xor ecx, ecx
@@ -199,7 +198,7 @@ G_M64964_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov rcx, rbx
; byrRegs +[rcx]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M64964_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M64964_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -209,7 +208,7 @@ G_M64964_IG18: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [MS_jumps_cs.VT:ToStringHelper():System.String:this]
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M64964_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M64964_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx rbx]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -228,17 +227,17 @@ G_M64964_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=35 bbWeight=0 PerfScore 0.00
-G_M64964_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64964_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M64964_IG15 - G_M64964_IG02
- dd G_M64964_IG17 - G_M64964_IG02
- dd G_M64964_IG14 - G_M64964_IG02
+RWD00 dd G_M64964_IG14 - G_M64964_IG02
+ dd G_M64964_IG16 - G_M64964_IG02
+ dd G_M64964_IG13 - G_M64964_IG02
-Total bytes of code 367, prolog size 16, PerfScore 236.12, instruction count 101, allocated bytes for code 367 (MethodHash=7e1c023b) for method MS_jumps_cs.VT:ToString():System.String:this (FullOpts)
+Total bytes of code 357, prolog size 16, PerfScore 230.33, instruction count 99, allocated bytes for code 357 (MethodHash=7e1c023b) for method MS_jumps_cs.VT:ToString():System.String:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.92%) : 429266.dasm - System.String:Concat(System.String[]):System.String (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T11] ( 10, 16 ) ref -> rbx class-hnd <System.String[]>
-; V01 loc0 [V01,T14] ( 5, 15 ) long -> rcx
+; V01 loc0 [V01,T15] ( 5, 15 ) long -> rcx
; V02 loc1 [V02,T16] ( 6, 10 ) int -> rdi
; V03 loc2 [V03,T10] ( 5, 20 ) ref -> rbp class-hnd exact <System.String>
; V04 loc3 [V04,T01] ( 9, 32 ) int -> r14
@@ -36,7 +36,7 @@
; V24 tmp14 [V24,T21] ( 2, 0 ) ref -> rbx single-def "arg temp"
; V25 cse0 [V25,T00] ( 10,306 ) ref -> rdx multi-def "CSE - aggressive"
; V26 cse1 [V26,T03] ( 5, 29.05) int -> r12 "CSE - aggressive"
-; V27 cse2 [V27,T15] ( 6, 14 ) int -> rsi "CSE - moderate"
+; V27 cse2 [V27,T14] ( 8, 16 ) int -> rsi "CSE - moderate"
;
; Lcl frame size = 40
@@ -57,13 +57,15 @@ G_M46295_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test rbx, rbx
je G_M46295_IG24
;; size=9 bbWeight=1 PerfScore 1.25
-G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [rbx+0x08]
cmp esi, 1
jle G_M46295_IG25
xor ecx, ecx
xor eax, eax
- ;; size=16 bbWeight=1 PerfScore 3.75
+ test esi, esi
+ jle SHORT G_M46295_IG06
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M46295_IG04: ; bbWeight=6, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edx, eax
mov rdx, gword ptr [rbx+8*rdx+0x10]
@@ -93,7 +95,9 @@ G_M46295_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rbp]
xor r14d, r14d
xor r15d, r15d
- ;; size=39 bbWeight=1 PerfScore 4.75
+ test esi, esi
+ jle G_M46295_IG17
+ ;; size=47 bbWeight=1 PerfScore 6.00
G_M46295_IG07: ; bbWeight=6, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov ecx, r15d
@@ -266,7 +270,7 @@ G_M46295_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 411, prolog size 19, PerfScore 592.20, instruction count 120, allocated bytes for code 411 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 423, prolog size 19, PerfScore 594.70, instruction count 124, allocated bytes for code 423 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================
Unwind Info:
+12 (+2.92%) : 465235.dasm - System.String:Concat(System.String[]):System.String (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T11] ( 10, 16 ) ref -> rbx class-hnd <System.String[]>
-; V01 loc0 [V01,T14] ( 5, 15 ) long -> rcx
+; V01 loc0 [V01,T15] ( 5, 15 ) long -> rcx
; V02 loc1 [V02,T16] ( 6, 10 ) int -> rdi
; V03 loc2 [V03,T10] ( 5, 20 ) ref -> rbp class-hnd exact <System.String>
; V04 loc3 [V04,T01] ( 9, 32 ) int -> r14
@@ -36,7 +36,7 @@
; V24 tmp14 [V24,T21] ( 2, 0 ) ref -> rbx single-def "arg temp"
; V25 cse0 [V25,T00] ( 10,306 ) ref -> rdx multi-def "CSE - aggressive"
; V26 cse1 [V26,T03] ( 5, 29.05) int -> r12 "CSE - aggressive"
-; V27 cse2 [V27,T15] ( 6, 14 ) int -> rsi "CSE - moderate"
+; V27 cse2 [V27,T14] ( 8, 16 ) int -> rsi "CSE - moderate"
;
; Lcl frame size = 40
@@ -57,13 +57,15 @@ G_M46295_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test rbx, rbx
je G_M46295_IG24
;; size=9 bbWeight=1 PerfScore 1.25
-G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [rbx+0x08]
cmp esi, 1
jle G_M46295_IG25
xor ecx, ecx
xor eax, eax
- ;; size=16 bbWeight=1 PerfScore 3.75
+ test esi, esi
+ jle SHORT G_M46295_IG06
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M46295_IG04: ; bbWeight=6, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edx, eax
mov rdx, gword ptr [rbx+8*rdx+0x10]
@@ -93,7 +95,9 @@ G_M46295_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rbp]
xor r14d, r14d
xor r15d, r15d
- ;; size=39 bbWeight=1 PerfScore 4.75
+ test esi, esi
+ jle G_M46295_IG17
+ ;; size=47 bbWeight=1 PerfScore 6.00
G_M46295_IG07: ; bbWeight=6, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov ecx, r15d
@@ -266,7 +270,7 @@ G_M46295_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 411, prolog size 19, PerfScore 592.20, instruction count 120, allocated bytes for code 411 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 423, prolog size 19, PerfScore 594.70, instruction count 124, allocated bytes for code 423 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================
Unwind Info:
+12 (+2.92%) : 470991.dasm - System.String:Concat(System.String[]):System.String (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T11] ( 10, 16 ) ref -> rbx class-hnd <System.String[]>
-; V01 loc0 [V01,T14] ( 5, 15 ) long -> rcx
+; V01 loc0 [V01,T15] ( 5, 15 ) long -> rcx
; V02 loc1 [V02,T16] ( 6, 10 ) int -> rdi
; V03 loc2 [V03,T10] ( 5, 20 ) ref -> rbp class-hnd exact <System.String>
; V04 loc3 [V04,T01] ( 9, 32 ) int -> r14
@@ -36,7 +36,7 @@
; V24 tmp14 [V24,T21] ( 2, 0 ) ref -> rbx single-def "arg temp"
; V25 cse0 [V25,T00] ( 10,306 ) ref -> rdx multi-def "CSE - aggressive"
; V26 cse1 [V26,T03] ( 5, 29.05) int -> r12 "CSE - aggressive"
-; V27 cse2 [V27,T15] ( 6, 14 ) int -> rsi "CSE - moderate"
+; V27 cse2 [V27,T14] ( 8, 16 ) int -> rsi "CSE - moderate"
;
; Lcl frame size = 40
@@ -57,13 +57,15 @@ G_M46295_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test rbx, rbx
je G_M46295_IG24
;; size=9 bbWeight=1 PerfScore 1.25
-G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [rbx+0x08]
cmp esi, 1
jle G_M46295_IG25
xor ecx, ecx
xor eax, eax
- ;; size=16 bbWeight=1 PerfScore 3.75
+ test esi, esi
+ jle SHORT G_M46295_IG06
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M46295_IG04: ; bbWeight=6, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edx, eax
mov rdx, gword ptr [rbx+8*rdx+0x10]
@@ -93,7 +95,9 @@ G_M46295_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rbp]
xor r14d, r14d
xor r15d, r15d
- ;; size=39 bbWeight=1 PerfScore 4.75
+ test esi, esi
+ jle G_M46295_IG17
+ ;; size=47 bbWeight=1 PerfScore 6.00
G_M46295_IG07: ; bbWeight=6, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov ecx, r15d
@@ -266,7 +270,7 @@ G_M46295_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 411, prolog size 19, PerfScore 592.20, instruction count 120, allocated bytes for code 411 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
+Total bytes of code 423, prolog size 19, PerfScore 594.70, instruction count 124, allocated bytes for code 423 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (Tier1)
; ============================================================
Unwind Info:
libraries.crossgen2.windows.x64.checked.mch
-1 (-0.02%) : 1808.dasm - Program:Main(System.String[]):int (FullOpts)
@@ -1190,7 +1190,7 @@ G_M58511_IG22: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
xor r15d, r15d
;; size=37 bbWeight=1 PerfScore 11.50
G_M58511_IG23: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
- jmp G_M58511_IG31
+ jmp G_M58511_IG40
;; size=5 bbWeight=1 PerfScore 2.00
G_M58511_IG24: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x08], 0
@@ -1271,34 +1271,15 @@ G_M58511_IG29: ; bbWeight=4, gcrefRegs=60C8 {rbx rsi rdi r13 r14}, byrefR
mov ecx, dword ptr [r13+0x08]
mov dword ptr [rbp-0x40], ecx
;; size=7 bbWeight=4 PerfScore 12.00
-G_M58511_IG30: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M58511_IG30: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
mov ecx, dword ptr [rbp-0x40]
cmp ecx, dword ptr [rbp-0x3C]
- jne SHORT G_M58511_IG32
- mov rcx, r14
- ; gcrRegs +[rcx]
- lea r11, [(reloc)] ; function address
- call [r11]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- cmp rax, 0x2710
- jg G_M58511_IG40
- mov ecx, 5
- call [<unknown method>]
- ; gcr arg pop 0
- mov ecx, dword ptr [rbp-0x44]
- inc ecx
- mov dword ptr [rbp-0x44], ecx
- ;; size=52 bbWeight=4 PerfScore 58.00
-G_M58511_IG31: ; bbWeight=8, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
- cmp dword ptr [rbp-0x44], 40
- jge G_M58511_IG50
- jmp G_M58511_IG24
- ;; size=15 bbWeight=8 PerfScore 40.00
-G_M58511_IG32: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ je G_M58511_IG39
+ ;; size=12 bbWeight=4 PerfScore 16.00
+G_M58511_IG31: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
cmp dword ptr [rbp-0x44], 2
- jge G_M58511_IG35
+ jge G_M58511_IG41
xorps xmm0, xmm0
movups xmmword ptr [rbp-0x160], xmm0
movups xmmword ptr [rbp-0x150], xmm0
@@ -1309,7 +1290,7 @@ G_M58511_IG32: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
call [<unknown method>]
; gcr arg pop 0
;; size=58 bbWeight=1 PerfScore 10.33
-G_M58511_IG33: ; bbWeight=1, nogc, extend
+G_M58511_IG32: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x160]
movups xmmword ptr [rbp-0x70], xmm0
movups xmm0, xmmword ptr [rbp-0x150]
@@ -1317,7 +1298,7 @@ G_M58511_IG33: ; bbWeight=1, nogc, extend
mov rdx, qword ptr [rbp-0x140]
mov qword ptr [rbp-0x50], rdx
;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG34: ; bbWeight=1, extend
+G_M58511_IG33: ; bbWeight=1, extend
mov rdx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
@@ -1358,9 +1339,94 @@ G_M58511_IG34: ; bbWeight=1, extend
; gcr arg pop 0
mov ecx, dword ptr [rbp-0x3C]
mov dword ptr [rbp-0x40], ecx
- jmp G_M58511_IG39
- ;; size=116 bbWeight=1 PerfScore 42.25
-G_M58511_IG35: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ ;; size=111 bbWeight=1 PerfScore 40.25
+G_M58511_IG34: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ mov r15d, 1
+ ;; size=6 bbWeight=1 PerfScore 0.25
+G_M58511_IG35: ; bbWeight=8, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rbp-0x44], 45
+ jge SHORT G_M58511_IG36
+ test r15d, r15d
+ je G_M58511_IG48
+ ;; size=15 bbWeight=8 PerfScore 34.00
+G_M58511_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi rdi r14]
+ mov eax, dword ptr [rbp-0x40]
+ cmp eax, dword ptr [rbp-0x3C]
+ jne G_M58511_IG62
+ call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ ; byrRegs +[rax]
+ ; gcr arg pop 0
+ cmp byte ptr [rax+0x32], 0
+ je G_M58511_IG62
+ lea rcx, [rbp-0x98]
+ mov edx, 47
+ mov r8d, 1
+ call [<unknown method>]
+ ; byrRegs -[rax]
+ ; gcr arg pop 0
+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M58511_IG37: ; bbWeight=1, nogc, extend
+ movups xmm0, xmmword ptr [rbp-0x98]
+ movups xmmword ptr [rbp-0x70], xmm0
+ movups xmm0, xmmword ptr [rbp-0x88]
+ movups xmmword ptr [rbp-0x60], xmm0
+ mov rdx, qword ptr [rbp-0x78]
+ mov qword ptr [rbp-0x50], rdx
+ ;; size=30 bbWeight=1 PerfScore 10.00
+G_M58511_IG38: ; bbWeight=1, extend
+ mov rdx, qword ptr [(reloc)] ; const ptr
+ mov rdx, gword ptr [rdx]
+ ; gcrRegs +[rdx]
+ lea rcx, [rbp-0x70]
+ call [<unknown method>]
+ ; gcrRegs -[rdx]
+ ; gcr arg pop 0
+ lea rcx, [rbp-0x70]
+ mov edx, 45
+ call [<unknown method>]
+ ; gcr arg pop 0
+ mov rdx, qword ptr [(reloc)] ; const ptr
+ mov rdx, gword ptr [rdx]
+ ; gcrRegs +[rdx]
+ lea rcx, [rbp-0x70]
+ call [<unknown method>]
+ ; gcrRegs -[rdx]
+ ; gcr arg pop 0
+ lea rcx, [rbp-0x70]
+ call [<unknown method>]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ jmp G_M58511_IG62
+ ;; size=79 bbWeight=1 PerfScore 27.50
+G_M58511_IG39: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi rdi r14]
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ lea r11, [(reloc)] ; function address
+ call [r11]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ cmp rax, 0x2710
+ jg G_M58511_IG45
+ mov ecx, 5
+ call [<unknown method>]
+ ; gcr arg pop 0
+ mov ecx, dword ptr [rbp-0x44]
+ inc ecx
+ mov dword ptr [rbp-0x44], ecx
+ ;; size=44 bbWeight=4 PerfScore 42.00
+G_M58511_IG40: ; bbWeight=8, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ cmp dword ptr [rbp-0x44], 40
+ jge G_M58511_IG35
+ jmp G_M58511_IG24
+ ;; size=15 bbWeight=8 PerfScore 40.00
+G_M58511_IG41: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
xorps xmm0, xmm0
movups xmmword ptr [rbp-0x138], xmm0
movups xmmword ptr [rbp-0x128], xmm0
@@ -1371,7 +1437,7 @@ G_M58511_IG35: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
call [<unknown method>]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 7.33
-G_M58511_IG36: ; bbWeight=1, nogc, extend
+G_M58511_IG42: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x138]
movups xmmword ptr [rbp-0x70], xmm0
movups xmm0, xmmword ptr [rbp-0x128]
@@ -1379,7 +1445,7 @@ G_M58511_IG36: ; bbWeight=1, nogc, extend
mov rdx, qword ptr [rbp-0x118]
mov qword ptr [rbp-0x50], rdx
;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG37: ; bbWeight=1, extend
+G_M58511_IG43: ; bbWeight=1, extend
mov rdx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
@@ -1421,7 +1487,7 @@ G_M58511_IG37: ; bbWeight=1, extend
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=119 bbWeight=1 PerfScore 43.50
-G_M58511_IG38: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M58511_IG44: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x70]
call [<unknown method>]
; gcrRegs +[rax]
@@ -1431,12 +1497,9 @@ G_M58511_IG38: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
call [<unknown method>]
; gcrRegs -[rax rcx]
; gcr arg pop 0
- ;; size=19 bbWeight=1 PerfScore 6.75
-G_M58511_IG39: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
- mov r15d, 1
- jmp G_M58511_IG50
- ;; size=11 bbWeight=1 PerfScore 2.25
-G_M58511_IG40: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ jmp G_M58511_IG34
+ ;; size=24 bbWeight=1 PerfScore 8.75
+G_M58511_IG45: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
xorps xmm0, xmm0
movups xmmword ptr [rbp-0x110], xmm0
movups xmmword ptr [rbp-0x100], xmm0
@@ -1447,7 +1510,7 @@ G_M58511_IG40: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
call [<unknown method>]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 7.33
-G_M58511_IG41: ; bbWeight=1, nogc, extend
+G_M58511_IG46: ; bbWeight=1, nogc, extend
movups xmm0, xmmword ptr [rbp-0x110]
movups xmmword ptr [rbp-0x70], xmm0
movups xmm0, xmmword ptr [rbp-0x100]
@@ -1455,7 +1518,7 @@ G_M58511_IG41: ; bbWeight=1, nogc, extend
mov rdx, qword ptr [rbp-0xF0]
mov qword ptr [rbp-0x50], rdx
;; size=33 bbWeight=1 PerfScore 10.00
-G_M58511_IG42: ; bbWeight=1, extend
+G_M58511_IG47: ; bbWeight=1, extend
mov rdx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
@@ -1489,11 +1552,11 @@ G_M58511_IG42: ; bbWeight=1, extend
mov edx, dword ptr [rbp-0x44]
call [<unknown method>]
; gcr arg pop 0
- jmp G_M58511_IG38
+ jmp G_M58511_IG44
;; size=97 bbWeight=1 PerfScore 99.00
-G_M58511_IG43: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M58511_IG48: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M58511_IG46
+ jne SHORT G_M58511_IG51
xor ecx, ecx
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[rax]
@@ -1512,9 +1575,9 @@ G_M58511_IG43: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
; gcrRegs +[r13]
mov rcx, qword ptr [(reloc)] ; <unknown class>
cmp qword ptr [r13], rcx
- je SHORT G_M58511_IG45
+ je SHORT G_M58511_IG50
;; size=48 bbWeight=4 PerfScore 71.00
-G_M58511_IG44: ; bbWeight=2, gcrefRegs=60C8 {rbx rsi rdi r13 r14}, byrefRegs=0000 {}, byref
+G_M58511_IG49: ; bbWeight=2, gcrefRegs=60C8 {rbx rsi rdi r13 r14}, byrefRegs=0000 {}, byref
...
libraries.pmi.windows.x64.checked.mch
-35 (-30.97%) : 200149.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov r8d, edx
- test edx, edx
- jl SHORT G_M3357_IG10
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax
+ jae SHORT G_M3357_IG13
mov r10d, r8d
movzx r10, word ptr [rcx+2*r10+0x0C]
cmp r10d, 32
je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d
cmp eax, r8d
jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
- cmp r8d, eax
- jae SHORT G_M3357_IG17
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
- cmp r10d, 32
- je SHORT G_M3357_IG12
- ;; size=20 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- cmp eax, r8d
- jg SHORT G_M3357_IG10
- ;; size=8 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
sub eax, edx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d
sub eax, edx
;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-13 (-3.54%) : 88011.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
@@ -11,12 +11,12 @@
; V00 this [V00,T05] ( 7, 8 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol>
; V01 arg1 [V01,T10] ( 3, 3 ) ubyte -> rdx single-def
; V02 loc0 [V02,T03] ( 3, 13 ) byref -> rdi single-def
-; V03 loc1 [V03,T00] ( 6, 28 ) ref -> rbp class-hnd <<unknown class>>
+; V03 loc1 [V03,T01] ( 6, 28 ) ref -> rbp class-hnd <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
; V05 loc3 [V05,T02] ( 7, 13.88) ref -> r14 class-hnd exact <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T14] ( 3, 2 ) byref -> rdi
-; V08 tmp2 [V08,T01] ( 4, 24 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T00] ( 4, 32 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
; V11 tmp5 [V11,T11] ( 4, 4.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder>
@@ -39,7 +39,7 @@
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
; V30 tmp24 [V30,T04] ( 4, 12 ) long -> rax "Inline stloc first use temp"
-; V31 tmp25 [V31,T06] ( 5, 8 ) ref -> rdx class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
+; V31 tmp25 [V31,T06] ( 4, 10 ) ref -> rdx class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo>
; V32 tmp26 [V32,T13] ( 2, 2.77) ubyte -> rcx "Inline return value spill temp"
; V33 tmp27 [V33 ] ( 3, 4.15) byref -> [rsp+0x20] must-init pinned "Inline stloc first use temp"
;* V34 tmp28 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -88,16 +88,16 @@ G_M47296_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi},
G_M47296_IG06: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref
mov rcx, qword ptr [rbp+0x08]
and rcx, -2
- je G_M47296_IG16
+ je G_M47296_IG17
test cl, 2
- jne G_M47296_IG17
+ jne G_M47296_IG18
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
;; size=28 bbWeight=2 PerfScore 11.00
G_M47296_IG07: ; bbWeight=2, gcrefRegs=0029 {rax rbx rbp}, byrefRegs=0080 {rdi}, byref
test rax, rax
- jne G_M47296_IG15
+ jne G_M47296_IG16
;; size=9 bbWeight=2 PerfScore 2.50
G_M47296_IG08: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rax]
@@ -121,7 +121,7 @@ G_M47296_IG08: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rd
; gcrRegs -[rax rcx]
; gcr arg pop 0
test rax, rax
- je G_M47296_IG19
+ je G_M47296_IG20
;; size=51 bbWeight=4 PerfScore 32.00
G_M47296_IG09: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref, isz
mov qword ptr [r15+0x08], rax
@@ -143,17 +143,24 @@ G_M47296_IG10: ; bbWeight=1.38, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRe
; byrRegs +[rdx]
mov bword ptr [rsp+0x20], rdx
test ecx, ecx
- jne G_M47296_IG20
+ jne G_M47296_IG21
;; size=50 bbWeight=1.38 PerfScore 12.12
-G_M47296_IG11: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
+G_M47296_IG11: ; bbWeight=2, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
; byrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
+ ;; size=2 bbWeight=2 PerfScore 0.50
+G_M47296_IG12: ; bbWeight=4, gcrefRegs=C02C {rdx rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref, isz
test rdx, rdx
- jne G_M47296_IG21
- ;; size=11 bbWeight=4 PerfScore 6.00
-G_M47296_IG12: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
+ je SHORT G_M47296_IG13
+ lea rcx, bword ptr [r15+0x08]
+ ; byrRegs +[rcx]
+ call [<unknown method>]
; gcrRegs -[rdx]
+ ; byrRegs -[rcx]
+ ; gcr arg pop 0
+ ;; size=15 bbWeight=4 PerfScore 19.00
+G_M47296_IG13: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
mov rcx, rdi
; byrRegs +[rcx]
mov rdx, r15
@@ -167,13 +174,13 @@ G_M47296_IG12: ; bbWeight=4, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=
cmp rax, rbp
jne G_M47296_IG05
;; size=23 bbWeight=4 PerfScore 12.00
-G_M47296_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M47296_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx rbp]
; byrRegs -[rdi]
mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47296_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -183,7 +190,7 @@ G_M47296_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M47296_IG16: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r14]
add rsp, 40
pop rbx
@@ -194,14 +201,14 @@ G_M47296_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
pop r15
ret
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M47296_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, gcvars, byref
+G_M47296_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs -[rax] +[rbx rbp]
; byrRegs +[rdi]
xor rax, rax
; gcrRegs +[rax]
jmp G_M47296_IG07
;; size=7 bbWeight=0 PerfScore 0.00
-G_M47296_IG17: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref, isz
+G_M47296_IG18: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rax]
and rcx, -4
call <unknown method>
@@ -213,17 +220,17 @@ G_M47296_IG17: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rd
call <unknown method>
; gcr arg pop 0
test rax, rax
- jne SHORT G_M47296_IG18
+ jne SHORT G_M47296_IG19
mov rcx, r14
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx r14]
; gcr arg pop 0
;; size=35 bbWeight=0 PerfScore 0.00
-G_M47296_IG18: ; bbWeight=0, gcrefRegs=0029 {rax rbx rbp}, byrefRegs=0080 {rdi}, byref
+G_M47296_IG19: ; bbWeight=0, gcrefRegs=0029 {rax rbx rbp}, byrefRegs=0080 {rdi}, byref
jmp G_M47296_IG07
;; size=5 bbWeight=0 PerfScore 0.00
-G_M47296_IG19: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
+G_M47296_IG20: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rax] +[r14-r15]
mov rcx, r14
; gcrRegs +[rcx]
@@ -233,7 +240,7 @@ G_M47296_IG19: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=
; gcr arg pop 0
jmp G_M47296_IG09
;; size=16 bbWeight=0 PerfScore 0.00
-G_M47296_IG20: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
+G_M47296_IG21: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
mov rcx, r14
; gcrRegs +[rcx]
call [<unknown method>]
@@ -241,21 +248,10 @@ G_M47296_IG20: ; bbWeight=0, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- test rdx, rdx
- je G_M47296_IG12
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M47296_IG21: ; bbWeight=0, gcrefRegs=C02C {rdx rbx rbp r14 r15}, byrefRegs=0080 {rdi}, byref
- ; gcrRegs -[rax]
- lea rcx, bword ptr [r15+0x08]
- ; byrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
jmp G_M47296_IG12
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
-Total bytes of code 367, prolog size 19, PerfScore 128.74, instruction count 106, allocated bytes for code 367 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
+Total bytes of code 354, prolog size 19, PerfScore 142.24, instruction count 104, allocated bytes for code 354 (MethodHash=912d473f) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol:GetBodyBinder(ubyte):Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:this (FullOpts)
; ============================================================
Unwind Info:
-20 (-2.79%) : 258922.dasm - Microsoft.CSharp.CSharpCodeGenerator:System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch(System.CodeDom.Compiler.CompilerParameters,System.String[]):System.CodeDom.Compiler.CompilerResults:this (FullOpts)
@@ -38,14 +38,14 @@
;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.IO.Strategies.FileStreamStrategy>
; V28 tmp21 [V28,T08] ( 2, 16 ) ref -> r12 class-hnd "Inline return value spill temp" <System.IO.Strategies.FileStreamStrategy>
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.IO.Strategies.AsyncWindowsFileStreamStrategy>
-; V30 tmp23 [V30,T02] ( 3, 48 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.IO.Strategies.SyncWindowsFileStreamStrategy>
+; V30 tmp23 [V30,T03] ( 3, 48 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.IO.Strategies.SyncWindowsFileStreamStrategy>
; V31 tmp24 [V31,T09] ( 2, 16 ) ref -> rdx class-hnd "Inline return value spill temp" <System.IO.Strategies.FileStreamStrategy>
-; V32 tmp25 [V32,T01] ( 4, 64 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.IO.Strategies.BufferedFileStreamStrategy>
+; V32 tmp25 [V32,T02] ( 4, 64 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.IO.Strategies.BufferedFileStreamStrategy>
;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V35 tmp28 [V35,T10] ( 2, 16 ) ref -> rdx class-hnd "Inline return value spill temp" <System.IO.Strategies.FileStreamStrategy>
;* V36 tmp29 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.IO.Strategies.DerivedFileStreamStrategy>
-; V37 tmp30 [V37,T04] ( 5, 44.40) ref -> r14 class-hnd "dup spill" <System.IO.Strategies.FileStreamStrategy>
+; V37 tmp30 [V37,T01] ( 5, 67.60) ref -> r14 class-hnd "dup spill" <System.IO.Strategies.FileStreamStrategy>
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref
; V39 tmp32 [V39,T19] ( 4, 7.18) ref -> r14 class-hnd exact "guarded devirt this exact temp" <System.IO.Strategies.SyncWindowsFileStreamStrategy>
; V40 tmp33 [V40,T20] ( 3, 7.17) ref -> r13 class-hnd exact "dup spill" <System.Threading.ThreadPoolBoundHandle>
@@ -60,7 +60,7 @@
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V24.value (fldOffset=0x4)" P-INDEP
;* V50 tmp43 [V50,T17] ( 0, 0 ) ubyte -> zero-ref "field V26.hasValue (fldOffset=0x0)" P-INDEP
;* V51 tmp44 [V51,T18] ( 0, 0 ) int -> zero-ref "field V26.value (fldOffset=0x4)" P-INDEP
-; V52 tmp45 [V52,T03] ( 3, 48 ) struct ( 8) [rbp-0x48] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V52 tmp45 [V52,T04] ( 3, 48 ) struct ( 8) [rbp-0x48] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V53 tmp46 [V53,T31] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V54 tmp47 [V54,T32] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V55 PSPSym [V55,T25] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
@@ -92,16 +92,16 @@ G_M64848_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=38 bbWeight=1 PerfScore 11.25
G_M64848_IG02: ; bbWeight=1, gcVars=0000000000400000 {V01}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref
test rcx, rcx
- je G_M64848_IG19
+ je G_M64848_IG18
test rbx, rbx
- je G_M64848_IG20
+ je G_M64848_IG19
;; size=18 bbWeight=1 PerfScore 2.50
G_M64848_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
xor esi, esi
mov edi, dword ptr [rbx+0x08]
test edi, edi
- jle G_M64848_IG12
+ jle G_M64848_IG09
;; size=13 bbWeight=1 PerfScore 3.50
G_M64848_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, esi
@@ -145,7 +145,7 @@ G_M64848_IG06: ; bbWeight=8, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
mov qword ptr [rsp+0x30], rdx
mov byte ptr [rbp-0x48], 0
;; size=9 bbWeight=8 PerfScore 16.00
-G_M64848_IG07: ; bbWeight=8, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M64848_IG07: ; bbWeight=8, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x44], edx
mov rdx, qword ptr [rbp-0x48]
mov qword ptr [rsp+0x38], rdx
@@ -184,20 +184,47 @@ G_M64848_IG07: ; bbWeight=8, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
mov r14, rcx
; gcrRegs +[r14]
cmp qword ptr [r14], r13
- jne G_M64848_IG17
- ;; size=102 bbWeight=8 PerfScore 154.00
-G_M64848_IG08: ; bbWeight=1.80, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ je SHORT G_M64848_IG10
+ mov rcx, r14
+ mov edx, 1
+ mov rax, qword ptr [r14]
+ mov rax, qword ptr [rax+0x58]
+ call [rax+0x20]<unknown method>
+ ; gcrRegs -[rcx r14]
+ ; gcr arg pop 0
+ ;; size=116 bbWeight=8 PerfScore 214.00
+G_M64848_IG08: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov rcx, r15
+ ; gcrRegs +[rcx]
+ call <unknown method>
+ ; gcrRegs -[rcx r15]
+ ; gcr arg pop 0
+ inc esi
+ cmp edi, esi
+ jg G_M64848_IG04
+ ;; size=18 bbWeight=8 PerfScore 22.00
+G_M64848_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ call [Microsoft.CSharp.CSharpCodeGenerator:FromFileBatch(System.CodeDom.Compiler.CompilerParameters,System.String[]):System.CodeDom.Compiler.CompilerResults]
+ ; gcrRegs -[rcx rdx rbx] +[rax]
+ ; gcr arg pop 0
+ int3
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M64848_IG10: ; bbWeight=1.80, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rbx r14-r15]
mov rcx, gword ptr [r14+0x18]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M64848_IG18
- ;; size=13 bbWeight=1.80 PerfScore 5.85
-G_M64848_IG09: ; bbWeight=1.80, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref
+ je SHORT G_M64848_IG08
+ ;; size=9 bbWeight=1.80 PerfScore 5.85
+G_M64848_IG11: ; bbWeight=1.80, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test byte ptr [rcx+0x18], 1
- jne G_M64848_IG18
- ;; size=10 bbWeight=1.80 PerfScore 7.19
-G_M64848_IG10: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M64848_IG08
+ ;; size=6 bbWeight=1.80 PerfScore 7.19
+G_M64848_IG12: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rcx, gword ptr [r14+0x18]
; gcrRegs +[rcx]
@@ -206,9 +233,9 @@ G_M64848_IG10: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov r12, r13
; gcrRegs +[r12]
test r12, r12
- jne SHORT G_M64848_IG13
+ jne SHORT G_M64848_IG14
;; size=16 bbWeight=1.79 PerfScore 9.86
-G_M64848_IG11: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M64848_IG13: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx r12-r13]
mov r12, gword ptr [r14+0x18]
; gcrRegs +[r12]
@@ -224,45 +251,34 @@ G_M64848_IG11: ; bbWeight=1.79, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
call <unknown method>
; gcrRegs -[rcx r12]
; gcr arg pop 0
- jmp G_M64848_IG18
- ;; size=33 bbWeight=1.79 PerfScore 21.06
-G_M64848_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call [Microsoft.CSharp.CSharpCodeGenerator:FromFileBatch(System.CodeDom.Compiler.CompilerParameters,System.String[]):System.CodeDom.Compiler.CompilerResults]
- ; gcrRegs -[rcx rdx rbx] +[rax]
- ; gcr arg pop 0
- int3
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M64848_IG13: ; bbWeight=0, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbx r12-r15]
+ jmp SHORT G_M64848_IG08
+ ;; size=30 bbWeight=1.79 PerfScore 21.06
+G_M64848_IG14: ; bbWeight=0, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r12-r14]
mov rcx, 0xD1FFAB1E
mov edx, 819
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
cmp byte ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- je SHORT G_M64848_IG16
+ je SHORT G_M64848_IG17
lea rcx, bword ptr [r12+0x1C]
; byrRegs +[rcx]
;; size=34 bbWeight=0 PerfScore 0.00
-G_M64848_IG14: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0002 {rcx}, byref, isz
+G_M64848_IG15: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0002 {rcx}, byref, isz
; gcrRegs -[r13]
mov eax, dword ptr [rcx]
mov dword ptr [rbp-0x3C], eax
test eax, eax
- jl SHORT G_M64848_IG15
+ jl SHORT G_M64848_IG16
mov r11d, eax
neg r11d
dec r11d
lock
cmpxchg dword ptr [rcx], r11d
cmp eax, dword ptr [rbp-0x3C]
- jne SHORT G_M64848_IG14
- cmp r11d, -1
jne SHORT G_M64848_IG15
+ cmp r11d, -1
+ jne SHORT G_M64848_IG16
mov rcx, r12
; gcrRegs +[rcx]
; byrRegs -[rcx]
@@ -272,43 +288,21 @@ G_M64848_IG14: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=55 bbWeight=0 PerfScore 0.00
-G_M64848_IG15: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M64848_IG16: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, r12
; gcrRegs +[rcx]
call <unknown method>
; gcrRegs -[rcx r12]
; gcr arg pop 0
- jmp G_M64848_IG11
+ jmp G_M64848_IG13
;; size=13 bbWeight=0 PerfScore 0.00
-G_M64848_IG16: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M64848_IG17: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r13]
mov byte ptr [r13+0x18], 1
- jmp G_M64848_IG11
+ jmp G_M64848_IG13
;; size=10 bbWeight=0 PerfScore 0.00
-G_M64848_IG17: ; bbWeight=2.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
- mov rcx, r14
- ; gcrRegs +[rcx]
- mov edx, 1
- mov rax, qword ptr [r14]
- mov rax, qword ptr [rax+0x58]
- call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx r14]
- ; gcr arg pop 0
- ;; size=18 bbWeight=2.20 PerfScore 16.49
-G_M64848_IG18: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rcx, r15
- ; gcrRegs +[rcx]
- call <unknown method>
- ; gcrRegs -[rcx r15]
- ; gcr arg pop 0
- inc esi
- cmp edi, esi
- jle G_M64848_IG12
- jmp G_M64848_IG04
- ;; size=23 bbWeight=8 PerfScore 38.00
-G_M64848_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
+G_M64848_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx r13-r15]
; GC ptr vars -{V01}
mov rcx, 0xD1FFAB1E ; System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
@@ -333,7 +327,7 @@ G_M64848_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rcx r13]
; gcr arg pop 0
;; size=58 bbWeight=0 PerfScore 0.00
-G_M64848_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64848_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -358,7 +352,7 @@ G_M64848_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=59 bbWeight=0 PerfScore 0.00
-G_M64848_IG21: ; bbWeight=0, gcVars=0000000000400000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M64848_IG20: ; bbWeight=0, gcVars=0000000000400000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V01 V22}
push rbp
push r15
@@ -373,7 +367,7 @@ G_M64848_IG21: ; bbWeight=0, gcVars=0000000000400000 {V01}, gcrefRegs=000
...
+48 (+6.11%) : 142772.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper2[ubyte,System.Nullable
1[int]]:IntroSort(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment1[ubyte],System.Span
1[System.Nullable`1[int]],int) (FullOpts)
@@ -9,14 +9,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 23, 82 ) byref -> rbx ld-addr-op single-def
-; V01 arg1 [V01,T17] ( 4, 8 ) byref -> rdx ld-addr-op single-def
+; V01 arg1 [V01,T18] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T06] ( 6, 18 ) int -> rsi
-; V03 loc0 [V03,T02] ( 21, 39.50) int -> r14
-; V04 loc1 [V04,T14] ( 3, 12 ) int -> r15
+; V03 loc0 [V03,T01] ( 23, 44 ) int -> r14
+; V04 loc1 [V04,T15] ( 3, 12 ) int -> r15
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 5, 40 ) struct (24) [rsp+0x98] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
-; V08 tmp3 [V08,T01] ( 5, 40 ) struct (24) [rsp+0x80] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
+; V08 tmp3 [V08,T02] ( 5, 40 ) struct (24) [rsp+0x80] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
; V10 tmp5 [V10 ] ( 5, 5 ) struct (24) [rsp+0x68] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
@@ -55,7 +55,7 @@
;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp40 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V46 tmp41 [V46,T07] ( 9, 12 ) byref -> rdi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V47 tmp42 [V47,T13] ( 9, 12 ) int -> rbp single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V47 tmp42 [V47,T14] ( 9, 12 ) int -> rbp single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V50 tmp45 [V50 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -68,18 +68,18 @@
; V57 tmp52 [V57,T33] ( 2, 1 ) int -> rdx single-def "field V14._length (fldOffset=0x8)" P-INDEP
; V58 tmp53 [V58,T30] ( 2, 1 ) byref -> rdi single-def "field V17._reference (fldOffset=0x0)" P-INDEP
; V59 tmp54 [V59,T34] ( 2, 1 ) int -> rdx single-def "field V17._length (fldOffset=0x8)" P-INDEP
-; V60 tmp55 [V60,T31] ( 2, 1 ) ref -> rdx single-def "field V21._items (fldOffset=0x0)" P-INDEP
-; V61 tmp56 [V61,T35] ( 2, 1 ) int -> rcx single-def "field V21._length (fldOffset=0x8)" P-INDEP
+; V60 tmp55 [V60,T31] ( 2, 1 ) ref -> rcx single-def "field V21._items (fldOffset=0x0)" P-INDEP
+; V61 tmp56 [V61,T35] ( 2, 1 ) int -> rdx single-def "field V21._length (fldOffset=0x8)" P-INDEP
; V62 tmp57 [V62,T32] ( 2, 1 ) byref -> rdx single-def "field V24._reference (fldOffset=0x0)" P-INDEP
; V63 tmp58 [V63,T36] ( 2, 1 ) int -> rcx single-def "field V24._length (fldOffset=0x8)" P-INDEP
-; V64 tmp59 [V64,T18] ( 2, 8 ) ref -> rdx "field V28._items (fldOffset=0x0)" P-INDEP
-; V65 tmp60 [V65,T21] ( 2, 8 ) int -> rcx "field V28._length (fldOffset=0x8)" P-INDEP
+; V64 tmp59 [V64,T19] ( 2, 8 ) ref -> rcx "field V28._items (fldOffset=0x0)" P-INDEP
+; V65 tmp60 [V65,T22] ( 2, 8 ) int -> rdx "field V28._length (fldOffset=0x8)" P-INDEP
;* V66 tmp61 [V66,T26] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
-; V67 tmp62 [V67,T22] ( 2, 8 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
-; V68 tmp63 [V68,T19] ( 2, 8 ) ref -> r10 "field V37._items (fldOffset=0x0)" P-INDEP
-; V69 tmp64 [V69,T23] ( 2, 8 ) int -> r9 "field V37._length (fldOffset=0x8)" P-INDEP
-; V70 tmp65 [V70,T20] ( 2, 8 ) byref -> r13 "field V42._reference (fldOffset=0x0)" P-INDEP
-; V71 tmp66 [V71,T24] ( 2, 8 ) int -> r14 "field V42._length (fldOffset=0x8)" P-INDEP
+; V67 tmp62 [V67,T23] ( 2, 8 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
+; V68 tmp63 [V68,T20] ( 2, 8 ) ref -> r10 "field V37._items (fldOffset=0x0)" P-INDEP
+; V69 tmp64 [V69,T24] ( 2, 8 ) int -> r9 "field V37._length (fldOffset=0x8)" P-INDEP
+; V70 tmp65 [V70,T21] ( 2, 8 ) byref -> r13 "field V42._reference (fldOffset=0x0)" P-INDEP
+; V71 tmp66 [V71,T25] ( 2, 8 ) int -> r14 "field V42._length (fldOffset=0x8)" P-INDEP
;* V72 tmp67 [V72 ] ( 0, 0 ) int -> zero-ref "V15.[000..004)"
;* V73 tmp68 [V73 ] ( 0, 0 ) int -> zero-ref "V15.[004..008)"
;* V74 tmp69 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "V15.[008..016)"
@@ -99,10 +99,10 @@
;* V88 tmp83 [V88 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Nullable`1[int]]>
; V89 tmp84 [V89 ] ( 24, 66 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[System.Nullable`1[int]]>
; V90 tmp85 [V90 ] ( 6, 20 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
-; V91 cse0 [V91,T15] ( 3, 12 ) int -> r14 "CSE - moderate"
-; V92 cse1 [V92,T16] ( 3, 12 ) long -> r8 "CSE - moderate"
+; V91 cse0 [V91,T16] ( 3, 12 ) int -> r14 "CSE - moderate"
+; V92 cse1 [V92,T17] ( 3, 12 ) long -> r8 "CSE - moderate"
; V93 cse2 [V93,T08] ( 4, 16 ) int -> rcx "CSE - aggressive"
-; V94 cse3 [V94,T25] ( 6, 7.50) ref -> rdx multi-def "CSE - moderate"
+; V94 cse3 [V94,T13] ( 12, 15 ) ref -> rdx multi-def "CSE - aggressive"
;
; Lcl frame size = 176
@@ -134,29 +134,42 @@ G_M23383_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx},
mov ebp, dword ptr [rdx+0x08]
mov r14d, dword ptr [rbx+0x04]
cmp r14d, 1
- jle G_M23383_IG17
+ jle G_M23383_IG20
;; size=20 bbWeight=1 PerfScore 7.25
G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs -[rdx]
cmp r14d, 16
- jle G_M23383_IG08
+ jle G_M23383_IG10
test esi, esi
- je G_M23383_IG16
+ je G_M23383_IG18
dec esi
cmp r14d, dword ptr [rbx+0x04]
- ja G_M23383_IG19
- mov rdx, gword ptr [rbx+0x08]
- ; gcrRegs +[rdx]
- mov ecx, dword ptr [rbx+0x10]
+ ja G_M23383_IG22
+ mov rcx, gword ptr [rbx+0x08]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rbx+0x10]
mov eax, dword ptr [rbx]
mov dword ptr [rsp+0x98], eax
mov dword ptr [rsp+0x9C], r14d
- mov gword ptr [rsp+0xA0], rdx
- mov dword ptr [rsp+0xA8], ecx
+ mov gword ptr [rsp+0xA0], rcx
+ mov dword ptr [rsp+0xA8], edx
cmp r14d, ebp
- ja G_M23383_IG20
+ ja G_M23383_IG23
+ test r14d, r14d
+ jge SHORT G_M23383_IG05
+ ;; size=83 bbWeight=4 PerfScore 77.00
+G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+ ; gcrRegs -[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rcx, rdx
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M23383_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
mov edx, r14d
- ; gcrRegs -[rdx]
mov bword ptr [rsp+0x40], rdi
mov dword ptr [rsp+0x48], edx
lea rdx, [rsp+0x40]
@@ -173,7 +186,7 @@ G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi},
add r8, r10
mov r10d, dword ptr [rbx+0x04]
cmp r8, r10
- ja G_M23383_IG19
+ ja G_M23383_IG22
mov r10, gword ptr [rbx+0x08]
; gcrRegs +[r10]
mov r9d, dword ptr [rbx+0x10]
@@ -184,13 +197,13 @@ G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi},
mov dword ptr [rsp+0x90], r9d
mov edx, ebp
cmp r8, rdx
- ja G_M23383_IG20
+ ja G_M23383_IG23
lea r13, bword ptr [rdi+8*rcx]
; byrRegs +[r13]
test r14d, r14d
- jge SHORT G_M23383_IG05
- ;; size=206 bbWeight=4 PerfScore 176.00
-G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref
+ jge SHORT G_M23383_IG07
+ ;; size=128 bbWeight=4 PerfScore 104.00
+G_M23383_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref
; gcrRegs -[r10]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -200,13 +213,13 @@ G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=2 PerfScore 7.00
-G_M23383_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref, nogc
+G_M23383_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref, nogc
vmovdqu xmm0, xmmword ptr [rsp+0x80]
vmovdqu xmmword ptr [rsp+0x28], xmm0
mov rcx, qword ptr [rsp+0x90]
mov qword ptr [rsp+0x38], rcx
;; size=28 bbWeight=4 PerfScore 24.00
-G_M23383_IG06: ; bbWeight=4, extend
+G_M23383_IG08: ; bbWeight=4, extend
mov bword ptr [rsp+0x40], r13
mov dword ptr [rsp+0x48], r14d
lea rcx, [rsp+0x28]
@@ -219,14 +232,14 @@ G_M23383_IG06: ; bbWeight=4, extend
cmp r14d, 1
jg G_M23383_IG03
;; size=42 bbWeight=4 PerfScore 31.00
-G_M23383_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23383_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rdi]
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=5 bbWeight=1 PerfScore 2.00
-G_M23383_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M23383_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs +[rbx rdi]
cmp r14d, 2
- jne SHORT G_M23383_IG09
+ jne SHORT G_M23383_IG11
mov bword ptr [rsp+0x40], rdi
mov dword ptr [rsp+0x48], ebp
lea rdx, [rsp+0x40]
@@ -237,20 +250,20 @@ G_M23383_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd
call [<unknown method>]
; byrRegs -[rcx rbx rdi]
; gcr arg pop 0
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=43 bbWeight=0.50 PerfScore 4.75
-G_M23383_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+G_M23383_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
; byrRegs +[rbx rdi]
cmp r14d, 3
- jne G_M23383_IG14
+ jne G_M23383_IG16
;; size=10 bbWeight=0.50 PerfScore 0.62
-G_M23383_IG10: ; bbWeight=0.50, nogc, extend
+G_M23383_IG12: ; bbWeight=0.50, nogc, extend
vmovdqu xmm0, xmmword ptr [rbx]
vmovdqu xmmword ptr [rsp+0x28], xmm0
mov rcx, qword ptr [rbx+0x10]
mov qword ptr [rsp+0x38], rcx
;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M23383_IG11: ; bbWeight=0.50, extend
+G_M23383_IG13: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x40], rdi
mov dword ptr [rsp+0x48], ebp
lea rcx, [rsp+0x28]
@@ -260,13 +273,13 @@ G_M23383_IG11: ; bbWeight=0.50, extend
call [<unknown method>]
; gcr arg pop 0
;; size=34 bbWeight=0.50 PerfScore 3.25
-G_M23383_IG12: ; bbWeight=0.50, nogc, extend
+G_M23383_IG14: ; bbWeight=0.50, nogc, extend
vmovdqu xmm0, xmmword ptr [rbx]
vmovdqu xmmword ptr [rsp+0x28], xmm0
mov rcx, qword ptr [rbx+0x10]
mov qword ptr [rsp+0x38], rcx
;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M23383_IG13: ; bbWeight=0.50, extend
+G_M23383_IG15: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x40], rdi
mov dword ptr [rsp+0x48], ebp
lea rcx, [rsp+0x28]
@@ -285,12 +298,12 @@ G_M23383_IG13: ; bbWeight=0.50, extend
call [<unknown method>]
; byrRegs -[rcx rbx rdi]
; gcr arg pop 0
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=74 bbWeight=0.50 PerfScore 7.38
-G_M23383_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M23383_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs +[rbx rdi]
cmp r14d, dword ptr [rbx+0x04]
- ja G_M23383_IG19
+ ja G_M23383_IG22
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov edx, dword ptr [rbx+0x10]
@@ -300,9 +313,9 @@ G_M23383_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd
mov gword ptr [rsp+0x58], rcx
mov dword ptr [rsp+0x60], edx
cmp r14d, ebp
- ja G_M23383_IG20
+ ja G_M23383_IG23
...
+48 (+6.11%) : 178412.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper2[ubyte,System.Nullable
1[int]]:IntroSort(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment1[ubyte],System.Span
1[System.Nullable`1[int]],int) (FullOpts)
@@ -9,14 +9,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 23, 82 ) byref -> rbx ld-addr-op single-def
-; V01 arg1 [V01,T17] ( 4, 8 ) byref -> rdx ld-addr-op single-def
+; V01 arg1 [V01,T18] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T06] ( 6, 18 ) int -> rsi
-; V03 loc0 [V03,T02] ( 21, 39.50) int -> r14
-; V04 loc1 [V04,T14] ( 3, 12 ) int -> r15
+; V03 loc0 [V03,T01] ( 23, 44 ) int -> r14
+; V04 loc1 [V04,T15] ( 3, 12 ) int -> r15
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 5, 40 ) struct (24) [rsp+0x98] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
-; V08 tmp3 [V08,T01] ( 5, 40 ) struct (24) [rsp+0x80] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
+; V08 tmp3 [V08,T02] ( 5, 40 ) struct (24) [rsp+0x80] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
; V10 tmp5 [V10 ] ( 5, 5 ) struct (24) [rsp+0x68] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
@@ -55,7 +55,7 @@
;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp40 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V46 tmp41 [V46,T07] ( 9, 12 ) byref -> rdi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V47 tmp42 [V47,T13] ( 9, 12 ) int -> rbp single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V47 tmp42 [V47,T14] ( 9, 12 ) int -> rbp single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V50 tmp45 [V50 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -68,18 +68,18 @@
; V57 tmp52 [V57,T33] ( 2, 1 ) int -> rdx single-def "field V14._length (fldOffset=0x8)" P-INDEP
; V58 tmp53 [V58,T30] ( 2, 1 ) byref -> rdi single-def "field V17._reference (fldOffset=0x0)" P-INDEP
; V59 tmp54 [V59,T34] ( 2, 1 ) int -> rdx single-def "field V17._length (fldOffset=0x8)" P-INDEP
-; V60 tmp55 [V60,T31] ( 2, 1 ) ref -> rdx single-def "field V21._items (fldOffset=0x0)" P-INDEP
-; V61 tmp56 [V61,T35] ( 2, 1 ) int -> rcx single-def "field V21._length (fldOffset=0x8)" P-INDEP
+; V60 tmp55 [V60,T31] ( 2, 1 ) ref -> rcx single-def "field V21._items (fldOffset=0x0)" P-INDEP
+; V61 tmp56 [V61,T35] ( 2, 1 ) int -> rdx single-def "field V21._length (fldOffset=0x8)" P-INDEP
; V62 tmp57 [V62,T32] ( 2, 1 ) byref -> rdx single-def "field V24._reference (fldOffset=0x0)" P-INDEP
; V63 tmp58 [V63,T36] ( 2, 1 ) int -> rcx single-def "field V24._length (fldOffset=0x8)" P-INDEP
-; V64 tmp59 [V64,T18] ( 2, 8 ) ref -> rdx "field V28._items (fldOffset=0x0)" P-INDEP
-; V65 tmp60 [V65,T21] ( 2, 8 ) int -> rcx "field V28._length (fldOffset=0x8)" P-INDEP
+; V64 tmp59 [V64,T19] ( 2, 8 ) ref -> rcx "field V28._items (fldOffset=0x0)" P-INDEP
+; V65 tmp60 [V65,T22] ( 2, 8 ) int -> rdx "field V28._length (fldOffset=0x8)" P-INDEP
;* V66 tmp61 [V66,T26] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
-; V67 tmp62 [V67,T22] ( 2, 8 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
-; V68 tmp63 [V68,T19] ( 2, 8 ) ref -> r10 "field V37._items (fldOffset=0x0)" P-INDEP
-; V69 tmp64 [V69,T23] ( 2, 8 ) int -> r9 "field V37._length (fldOffset=0x8)" P-INDEP
-; V70 tmp65 [V70,T20] ( 2, 8 ) byref -> r13 "field V42._reference (fldOffset=0x0)" P-INDEP
-; V71 tmp66 [V71,T24] ( 2, 8 ) int -> r14 "field V42._length (fldOffset=0x8)" P-INDEP
+; V67 tmp62 [V67,T23] ( 2, 8 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
+; V68 tmp63 [V68,T20] ( 2, 8 ) ref -> r10 "field V37._items (fldOffset=0x0)" P-INDEP
+; V69 tmp64 [V69,T24] ( 2, 8 ) int -> r9 "field V37._length (fldOffset=0x8)" P-INDEP
+; V70 tmp65 [V70,T21] ( 2, 8 ) byref -> r13 "field V42._reference (fldOffset=0x0)" P-INDEP
+; V71 tmp66 [V71,T25] ( 2, 8 ) int -> r14 "field V42._length (fldOffset=0x8)" P-INDEP
;* V72 tmp67 [V72 ] ( 0, 0 ) int -> zero-ref "V15.[000..004)"
;* V73 tmp68 [V73 ] ( 0, 0 ) int -> zero-ref "V15.[004..008)"
;* V74 tmp69 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "V15.[008..016)"
@@ -99,10 +99,10 @@
;* V88 tmp83 [V88 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Nullable`1[int]]>
; V89 tmp84 [V89 ] ( 24, 66 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[System.Nullable`1[int]]>
; V90 tmp85 [V90 ] ( 6, 20 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
-; V91 cse0 [V91,T15] ( 3, 12 ) int -> r14 "CSE - moderate"
-; V92 cse1 [V92,T16] ( 3, 12 ) long -> r8 "CSE - moderate"
+; V91 cse0 [V91,T16] ( 3, 12 ) int -> r14 "CSE - moderate"
+; V92 cse1 [V92,T17] ( 3, 12 ) long -> r8 "CSE - moderate"
; V93 cse2 [V93,T08] ( 4, 16 ) int -> rcx "CSE - aggressive"
-; V94 cse3 [V94,T25] ( 6, 7.50) ref -> rdx multi-def "CSE - moderate"
+; V94 cse3 [V94,T13] ( 12, 15 ) ref -> rdx multi-def "CSE - aggressive"
;
; Lcl frame size = 176
@@ -134,29 +134,42 @@ G_M23383_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx},
mov ebp, dword ptr [rdx+0x08]
mov r14d, dword ptr [rbx+0x04]
cmp r14d, 1
- jle G_M23383_IG17
+ jle G_M23383_IG20
;; size=20 bbWeight=1 PerfScore 7.25
G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs -[rdx]
cmp r14d, 16
- jle G_M23383_IG08
+ jle G_M23383_IG10
test esi, esi
- je G_M23383_IG16
+ je G_M23383_IG18
dec esi
cmp r14d, dword ptr [rbx+0x04]
- ja G_M23383_IG19
- mov rdx, gword ptr [rbx+0x08]
- ; gcrRegs +[rdx]
- mov ecx, dword ptr [rbx+0x10]
+ ja G_M23383_IG22
+ mov rcx, gword ptr [rbx+0x08]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rbx+0x10]
mov eax, dword ptr [rbx]
mov dword ptr [rsp+0x98], eax
mov dword ptr [rsp+0x9C], r14d
- mov gword ptr [rsp+0xA0], rdx
- mov dword ptr [rsp+0xA8], ecx
+ mov gword ptr [rsp+0xA0], rcx
+ mov dword ptr [rsp+0xA8], edx
cmp r14d, ebp
- ja G_M23383_IG20
+ ja G_M23383_IG23
+ test r14d, r14d
+ jge SHORT G_M23383_IG05
+ ;; size=83 bbWeight=4 PerfScore 77.00
+G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+ ; gcrRegs -[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rcx, rdx
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=2 PerfScore 7.00
+G_M23383_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
mov edx, r14d
- ; gcrRegs -[rdx]
mov bword ptr [rsp+0x40], rdi
mov dword ptr [rsp+0x48], edx
lea rdx, [rsp+0x40]
@@ -173,7 +186,7 @@ G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi},
add r8, r10
mov r10d, dword ptr [rbx+0x04]
cmp r8, r10
- ja G_M23383_IG19
+ ja G_M23383_IG22
mov r10, gword ptr [rbx+0x08]
; gcrRegs +[r10]
mov r9d, dword ptr [rbx+0x10]
@@ -184,13 +197,13 @@ G_M23383_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi},
mov dword ptr [rsp+0x90], r9d
mov edx, ebp
cmp r8, rdx
- ja G_M23383_IG20
+ ja G_M23383_IG23
lea r13, bword ptr [rdi+8*rcx]
; byrRegs +[r13]
test r14d, r14d
- jge SHORT G_M23383_IG05
- ;; size=206 bbWeight=4 PerfScore 176.00
-G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref
+ jge SHORT G_M23383_IG07
+ ;; size=128 bbWeight=4 PerfScore 104.00
+G_M23383_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref
; gcrRegs -[r10]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -200,13 +213,13 @@ G_M23383_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=2 PerfScore 7.00
-G_M23383_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref, nogc
+G_M23383_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=2088 {rbx rdi r13}, byref, nogc
vmovdqu xmm0, xmmword ptr [rsp+0x80]
vmovdqu xmmword ptr [rsp+0x28], xmm0
mov rcx, qword ptr [rsp+0x90]
mov qword ptr [rsp+0x38], rcx
;; size=28 bbWeight=4 PerfScore 24.00
-G_M23383_IG06: ; bbWeight=4, extend
+G_M23383_IG08: ; bbWeight=4, extend
mov bword ptr [rsp+0x40], r13
mov dword ptr [rsp+0x48], r14d
lea rcx, [rsp+0x28]
@@ -219,14 +232,14 @@ G_M23383_IG06: ; bbWeight=4, extend
cmp r14d, 1
jg G_M23383_IG03
;; size=42 bbWeight=4 PerfScore 31.00
-G_M23383_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23383_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rdi]
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=5 bbWeight=1 PerfScore 2.00
-G_M23383_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M23383_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs +[rbx rdi]
cmp r14d, 2
- jne SHORT G_M23383_IG09
+ jne SHORT G_M23383_IG11
mov bword ptr [rsp+0x40], rdi
mov dword ptr [rsp+0x48], ebp
lea rdx, [rsp+0x40]
@@ -237,20 +250,20 @@ G_M23383_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd
call [<unknown method>]
; byrRegs -[rcx rbx rdi]
; gcr arg pop 0
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=43 bbWeight=0.50 PerfScore 4.75
-G_M23383_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
+G_M23383_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref
; byrRegs +[rbx rdi]
cmp r14d, 3
- jne G_M23383_IG14
+ jne G_M23383_IG16
;; size=10 bbWeight=0.50 PerfScore 0.62
-G_M23383_IG10: ; bbWeight=0.50, nogc, extend
+G_M23383_IG12: ; bbWeight=0.50, nogc, extend
vmovdqu xmm0, xmmword ptr [rbx]
vmovdqu xmmword ptr [rsp+0x28], xmm0
mov rcx, qword ptr [rbx+0x10]
mov qword ptr [rsp+0x38], rcx
;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M23383_IG11: ; bbWeight=0.50, extend
+G_M23383_IG13: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x40], rdi
mov dword ptr [rsp+0x48], ebp
lea rcx, [rsp+0x28]
@@ -260,13 +273,13 @@ G_M23383_IG11: ; bbWeight=0.50, extend
call [<unknown method>]
; gcr arg pop 0
;; size=34 bbWeight=0.50 PerfScore 3.25
-G_M23383_IG12: ; bbWeight=0.50, nogc, extend
+G_M23383_IG14: ; bbWeight=0.50, nogc, extend
vmovdqu xmm0, xmmword ptr [rbx]
vmovdqu xmmword ptr [rsp+0x28], xmm0
mov rcx, qword ptr [rbx+0x10]
mov qword ptr [rsp+0x38], rcx
;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M23383_IG13: ; bbWeight=0.50, extend
+G_M23383_IG15: ; bbWeight=0.50, extend
mov bword ptr [rsp+0x40], rdi
mov dword ptr [rsp+0x48], ebp
lea rcx, [rsp+0x28]
@@ -285,12 +298,12 @@ G_M23383_IG13: ; bbWeight=0.50, extend
call [<unknown method>]
; byrRegs -[rcx rbx rdi]
; gcr arg pop 0
- jmp G_M23383_IG17
+ jmp G_M23383_IG20
;; size=74 bbWeight=0.50 PerfScore 7.38
-G_M23383_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M23383_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; byrRegs +[rbx rdi]
cmp r14d, dword ptr [rbx+0x04]
- ja G_M23383_IG19
+ ja G_M23383_IG22
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov edx, dword ptr [rbx+0x10]
@@ -300,9 +313,9 @@ G_M23383_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rd
mov gword ptr [rsp+0x58], rcx
mov dword ptr [rsp+0x60], edx
cmp r14d, ebp
- ja G_M23383_IG20
+ ja G_M23383_IG23
...
+45 (+52.33%) : 27574.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
@@ -8,73 +8,100 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 10 ) ref -> rcx this class-hnd single-def <System.Buffers.Latin1CharSearchValues>
+; V00 this [V00,T04] ( 4, 10 ) ref -> rbx this class-hnd single-def <System.Buffers.Latin1CharSearchValues>
; V01 arg1 [V01,T05] ( 4, 8 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T01] ( 5, 17 ) int -> r8
-; V04 loc2 [V04,T02] ( 4, 16 ) ushort -> r10
+; V03 loc1 [V03,T02] ( 5, 17 ) int -> rbp
+; V04 loc2 [V04,T01] ( 5, 20 ) ushort -> r14
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 2, 8 ) int -> r11 "Inline stloc first use temp"
-; V07 tmp2 [V07,T07] ( 2, 8 ) int -> r10 "Inline stloc first use temp"
-; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r9 "Inlining Arg"
-; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> r9 "dup spill"
+; V06 tmp1 [V06,T06] ( 2, 8 ) int -> rax "Inline stloc first use temp"
+; V07 tmp2 [V07,T07] ( 2, 8 ) int -> rcx "Inline stloc first use temp"
+; V08 tmp3 [V08,T03] ( 2, 16 ) byref -> r15 "Inlining Arg"
+; V09 tmp4 [V09,T00] ( 3, 24 ) byref -> rax "dup spill"
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp9 [V14,T09] ( 2, 5 ) byref -> rax single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp10 [V15,T08] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp9 [V14,T10] ( 2, 5 ) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp10 [V15,T09] ( 3, 6 ) int -> rdi "field V02._length (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
+; V17 cse0 [V17,T08] ( 3, 6 ) ref -> rdx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M159_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
+ push rdi
+ push rsi
+ push rbp
push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M159_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz
- ; gcrRegs +[rcx]
+ sub rsp, 40
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=15 bbWeight=1 PerfScore 6.50
+G_M159_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx]
- mov rax, bword ptr [rdx]
- ; byrRegs +[rax]
- mov edx, dword ptr [rdx+0x08]
+ mov rsi, bword ptr [rdx]
+ ; byrRegs +[rsi]
+ mov edi, dword ptr [rdx+0x08]
+ xor ebp, ebp
+ test edi, edi
+ jle SHORT G_M159_IG06
+ ;; size=12 bbWeight=1 PerfScore 5.50
+G_M159_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs -[rdx]
- xor r8d, r8d
- test edx, edx
- jle SHORT G_M159_IG04
- ;; size=13 bbWeight=1 PerfScore 5.50
-G_M159_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d
- movzx r10, word ptr [rax+2*r10]
- cmp r10d, 255
- jg SHORT G_M159_IG05
- cmp byte ptr [rcx], cl
- lea r9, bword ptr [rcx+0x08]
- ; byrRegs +[r9]
- mov r11d, r10d
- sar r11d, 5
- mov ebx, 1
- shlx r10d, ebx, r10d
- lea r9, bword ptr [r9+4*r11]
- or dword ptr [r9], r10d
- inc r8d
- cmp r8d, edx
+ mov ecx, ebp
+ movzx r14, word ptr [rsi+2*rcx]
+ cmp r14d, 255
+ jg SHORT G_M159_IG07
+ cmp byte ptr [rbx], bl
+ lea r15, bword ptr [rbx+0x08]
+ ; byrRegs +[r15]
+ cmp r14d, 256
+ jl SHORT G_M159_IG05
+ ;; size=31 bbWeight=4 PerfScore 33.00
+G_M159_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=8040 {rsi r15}, byref
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rcx, rdx
+ ; gcrRegs +[rcx]
+ mov rax, 0xD1FFAB1E ; code for <unknown method>
+ call [rax]<unknown method>
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=25 bbWeight=2 PerfScore 7.50
+G_M159_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=8040 {rsi r15}, byref, isz
+ mov eax, r14d
+ sar eax, 5
+ mov ecx, 1
+ shlx ecx, ecx, r14d
+ lea rax, bword ptr [r15+4*rax]
+ ; byrRegs +[rax]
+ or dword ptr [rax], ecx
+ inc ebp
+ cmp ebp, edi
jl SHORT G_M159_IG03
- ;; size=55 bbWeight=4 PerfScore 54.00
-G_M159_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
- ; byrRegs -[rax r9]
- add rsp, 32
+ ;; size=28 bbWeight=4 PerfScore 26.00
+G_M159_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rax rsi r15]
+ add rsp, 40
pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
-G_M159_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M159_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 86, prolog size 5, PerfScore 62.50, instruction count 27, allocated bytes for code 86 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
+Total bytes of code 131, prolog size 15, PerfScore 82.75, instruction count 44, allocated bytes for code 131 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -82,10 +109,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
libraries_tests.run.windows.x64.Release.mch
-35 (-30.97%) : 348158.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,12 +8,12 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 17712
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 4.33) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 5.91) int -> rdx single-def
-; V02 loc0 [V02,T01] ( 11, 7.28) int -> r8
-; V03 loc1 [V03,T03] ( 6, 3.62) ushort -> r10
+; V00 arg0 [V00,T02] ( 4, 4.33) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 4.94) int -> rdx single-def
+; V02 loc0 [V02,T00] ( 7, 8.60) int -> r8
+; V03 loc1 [V03,T04] ( 3, 3.62) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 3.36) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 4.67) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -24,80 +24,58 @@ G_M3357_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x08]
cmp eax, edx
- jle SHORT G_M3357_IG08
+ jle SHORT G_M3357_IG11
;; size=7 bbWeight=1 PerfScore 3.25
-G_M3357_IG03: ; bbWeight=0.97, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M3357_IG03: ; bbWeight=0.97, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov r8d, edx
- test edx, edx
- jl SHORT G_M3357_IG12
- ;; size=7 bbWeight=0.97 PerfScore 1.45
-G_M3357_IG04: ; bbWeight=1.32, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.97 PerfScore 0.24
+G_M3357_IG04: ; bbWeight=1.33, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax
+ jae SHORT G_M3357_IG13
mov r10d, r8d
movzx r10, word ptr [rcx+2*r10+0x0C]
cmp r10d, 32
je SHORT G_M3357_IG06
- ;; size=15 bbWeight=1.32 PerfScore 4.60
-G_M3357_IG05: ; bbWeight=0.95, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1.33 PerfScore 6.31
+G_M3357_IG05: ; bbWeight=0.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.95 PerfScore 1.19
-G_M3357_IG06: ; bbWeight=1.32, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG09
+ ;; size=6 bbWeight=0.96 PerfScore 1.20
+G_M3357_IG06: ; bbWeight=1.34, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d
cmp eax, r8d
jg SHORT G_M3357_IG04
- ;; size=8 bbWeight=1.32 PerfScore 1.98
-G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- jmp SHORT G_M3357_IG15
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG08: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0.03 PerfScore 0.01
-G_M3357_IG09: ; bbWeight=0.03, epilog, nogc, extend
- add rsp, 40
- ret
- ;; size=5 bbWeight=0.03 PerfScore 0.04
-G_M3357_IG10: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, r8d
- sub eax, edx
- ;; size=5 bbWeight=0.96 PerfScore 0.48
-G_M3357_IG11: ; bbWeight=0.96, epilog, nogc, extend
- add rsp, 40
- ret
- ;; size=5 bbWeight=0.96 PerfScore 1.20
-G_M3357_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- cmp r8d, eax
- jae SHORT G_M3357_IG17
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
- cmp r10d, 32
- je SHORT G_M3357_IG14
- ;; size=20 bbWeight=0.01 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 9
- jne SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG14: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- cmp eax, r8d
- jg SHORT G_M3357_IG12
- ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.34 PerfScore 2.00
+G_M3357_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
sub eax, edx
;; size=2 bbWeight=0.01 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0.01, epilog, nogc, extend
+G_M3357_IG08: ; bbWeight=0.01, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG09: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, r8d
+ sub eax, edx
+ ;; size=5 bbWeight=0.96 PerfScore 0.48
+G_M3357_IG10: ; bbWeight=0.96, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.96 PerfScore 1.20
+G_M3357_IG11: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.03 PerfScore 0.01
+G_M3357_IG12: ; bbWeight=0.03, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.03 PerfScore 0.04
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 113, prolog size 4, PerfScore 14.58, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 78, prolog size 4, PerfScore 15.00, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
-35 (-30.70%) : 371906.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,12 +8,12 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 549
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 3.52) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 4.55) int -> rdx single-def
-; V02 loc0 [V02,T02] ( 11, 3.13) int -> r8
-; V03 loc1 [V03,T04] ( 6, 1.56) ushort -> r10
+; V00 arg0 [V00,T01] ( 4, 3.52) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 6, 4.03) int -> rdx single-def
+; V02 loc0 [V02,T02] ( 7, 3.65) int -> r8
+; V03 loc1 [V03,T04] ( 3, 1.56) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.53) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 3.05) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -34,68 +34,50 @@ G_M3357_IG04: ; bbWeight=0.48, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.48 PerfScore 0.60
-G_M3357_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov r8d, edx
- test edx, edx
- jl SHORT G_M3357_IG09
- ;; size=7 bbWeight=0.52 PerfScore 0.78
+ ;; size=3 bbWeight=0.52 PerfScore 0.13
G_M3357_IG06: ; bbWeight=0.52, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax
+ jae SHORT G_M3357_IG11
mov r10d, r8d
movzx r10, word ptr [rcx+2*r10+0x0C]
cmp r10d, 32
je SHORT G_M3357_IG08
- ;; size=15 bbWeight=0.52 PerfScore 1.81
-G_M3357_IG07: ; bbWeight=0.51, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.52 PerfScore 2.48
+G_M3357_IG07: ; bbWeight=0.52, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG12
- ;; size=6 bbWeight=0.51 PerfScore 0.64
+ jne SHORT G_M3357_IG09
+ ;; size=6 bbWeight=0.52 PerfScore 0.65
G_M3357_IG08: ; bbWeight=0.52, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d
cmp eax, r8d
- jle SHORT G_M3357_IG15
+ jle SHORT G_M3357_IG12
jmp SHORT G_M3357_IG06
- ;; size=10 bbWeight=0.52 PerfScore 1.81
-G_M3357_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r8d, eax
- jae SHORT G_M3357_IG14
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
- cmp r10d, 32
- je SHORT G_M3357_IG11
- ;; size=20 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG10: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 9
- jne SHORT G_M3357_IG12
- ;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M3357_IG11: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- cmp eax, r8d
- jle SHORT G_M3357_IG15
- jmp SHORT G_M3357_IG09
- ;; size=10 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG12: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=0.52 PerfScore 1.83
+G_M3357_IG09: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov eax, r8d
sub eax, edx
;; size=5 bbWeight=0.52 PerfScore 0.26
-G_M3357_IG13: ; bbWeight=0.52, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.52, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.52 PerfScore 0.65
-G_M3357_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M3357_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub eax, edx
;; size=2 bbWeight=0 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG13: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
-Total bytes of code 114, prolog size 4, PerfScore 10.22, instruction count 40, allocated bytes for code 114 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 79, prolog size 4, PerfScore 10.22, instruction count 28, allocated bytes for code 79 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
-35 (-30.70%) : 353476.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
@@ -8,12 +8,12 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 195
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 3.50) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T00] ( 7, 4.49) int -> rdx single-def
-; V02 loc0 [V02,T02] ( 11, 3.01) int -> r8
-; V03 loc1 [V03,T04] ( 6, 1.50) ushort -> r10
+; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 6, 3.99) int -> rdx single-def
+; V02 loc0 [V02,T02] ( 7, 3.51) int -> r8
+; V03 loc1 [V03,T04] ( 3, 1.50) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 6, 2.51) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 5, 3.01) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -34,68 +34,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.63
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov r8d, edx
- test edx, edx
- jl SHORT G_M3357_IG09
- ;; size=7 bbWeight=0.50 PerfScore 0.75
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
G_M3357_IG06: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax
+ jae SHORT G_M3357_IG11
mov r10d, r8d
movzx r10, word ptr [rcx+2*r10+0x0C]
cmp r10d, 32
je SHORT G_M3357_IG08
- ;; size=15 bbWeight=0.50 PerfScore 1.74
-G_M3357_IG07: ; bbWeight=0.49, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 2.39
+G_M3357_IG07: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG12
- ;; size=6 bbWeight=0.49 PerfScore 0.62
+ jne SHORT G_M3357_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 0.62
G_M3357_IG08: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d
cmp eax, r8d
- jle SHORT G_M3357_IG15
+ jle SHORT G_M3357_IG12
jmp SHORT G_M3357_IG06
- ;; size=10 bbWeight=0.50 PerfScore 1.74
-G_M3357_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r8d, eax
- jae SHORT G_M3357_IG14
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
- cmp r10d, 32
- jne SHORT G_M3357_IG11
- ;; size=20 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG10: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- cmp eax, r8d
- jle SHORT G_M3357_IG15
- jmp SHORT G_M3357_IG09
- ;; size=10 bbWeight=0.01 PerfScore 0.02
-G_M3357_IG11: ; bbWeight=0.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 9
- je SHORT G_M3357_IG10
- ;; size=6 bbWeight=0.00 PerfScore 0.01
-G_M3357_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=0.50 PerfScore 1.76
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov eax, r8d
sub eax, edx
;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M3357_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3357_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub eax, edx
;; size=2 bbWeight=0 PerfScore 0.00
-G_M3357_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M3357_IG13: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
-Total bytes of code 114, prolog size 4, PerfScore 10.02, instruction count 40, allocated bytes for code 114 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
+Total bytes of code 79, prolog size 4, PerfScore 10.02, instruction count 28, allocated bytes for code 79 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier1)
; ============================================================
Unwind Info:
+43 (+5.77%) : 642586.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+FullInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1+NoOptimizationsInitialStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+FullNullabilityHandler[ulong]](System.ReadOnlySpan
1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1)
@@ -24,56 +24,56 @@
; V12 loc2 [V12,T37] ( 4, 2.72) int -> [rbp-0x44] do-not-enreg[Z] EH-live
; V13 loc3 [V13,T38] ( 4, 2.72) int -> [rbp-0x48] do-not-enreg[Z] EH-live
; V14 loc4 [V14,T35] ( 5, 3.76) int -> [rbp-0x4C] do-not-enreg[Z] EH-live
-; V15 loc5 [V15,T03] ( 5,3394.88) ubyte -> r13
+; V15 loc5 [V15,T03] ( 6,3394.88) ubyte -> r13
;* V16 loc6 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 loc7 [V17,T39] ( 4, 2 ) ubyte -> rdx
+; V17 loc7 [V17,T39] ( 4, 2 ) ubyte -> rcx
; V18 OutArgs [V18 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V19 tmp1 [V19,T13] ( 6,1529.66) int -> r12 "Inline return value spill temp"
;* V20 tmp2 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp3 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V22 tmp4 [V22,T11] ( 5,1852.05) int -> rdx "Inline stloc first use temp"
+; V22 tmp4 [V22,T11] ( 5,1852.05) int -> [rbp-0x50] spill-single-def "Inline stloc first use temp"
; V23 tmp5 [V23,T18] ( 3, 907.15) int -> r12 "Inline return value spill temp"
-; V24 tmp6 [V24,T12] ( 3,1814.30) ref -> rcx class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier>
-; V25 tmp7 [V25,T15] ( 3,1360.72) ref -> r12 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V26 tmp8 [V26,T09] ( 2,1358.39) ubyte -> rax "Inline return value spill temp"
+; V24 tmp6 [V24,T12] ( 3,1814.30) ref -> r12 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier>
+; V25 tmp7 [V25,T15] ( 3,1360.72) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V26 tmp8 [V26,T09] ( 2,1358.39) ubyte -> rdx "Inline return value spill temp"
; V27 tmp9 [V27,T30] ( 2, 149.16) int -> rdx "Inlining Arg"
; V28 tmp10 [V28,T31] ( 3, 111.87) ref -> rcx class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V29 tmp11 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
; V31 tmp13 [V31,T33] ( 2, 43.71) int -> rdx "Inline stloc first use temp"
;* V32 tmp14 [V32 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V33 tmp15 [V33,T22] ( 3, 716.49) ubyte -> rax "Inline return value spill temp"
+; V33 tmp15 [V33,T22] ( 3, 716.49) ubyte -> registers "Inline return value spill temp"
; V34 tmp16 [V34,T26] ( 4, 223.74) ref -> rcx class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V35 tmp17 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V36 tmp18 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V37 tmp19 [V37,T16] ( 3,1222.40) ubyte -> r13 "Inline return value spill temp"
-; V38 tmp20 [V38,T08] ( 4,2170.22) int -> [rbp-0x50] spill-single-def "Inline stloc first use temp"
+; V38 tmp20 [V38,T08] ( 4,2170.22) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
; V39 tmp21 [V39,T10] ( 3,1900.92) int -> rdx "Inline stloc first use temp"
-; V40 tmp22 [V40 ] ( 3, 947.82) ref -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V40 tmp22 [V40 ] ( 3, 947.82) ref -> [rbp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V41 tmp23 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V42 tmp24 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V43 tmp25 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp26 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
-; V45 tmp27 [V45,T24] ( 2, 538.60) ref -> rcx class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V45 tmp27 [V45,T24] ( 2, 538.60) ref -> rax class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V46 tmp28 [V46 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp29 [V47 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
; V48 tmp30 [V48,T17] ( 2,1151.65) byref -> rcx "field V21._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp31 [V49,T14] ( 3,1435.71) int -> r12 "field V21._length (fldOffset=0x8)" P-INDEP
+; V49 tmp31 [V49,T14] ( 3,1435.71) int -> rdx "field V21._length (fldOffset=0x8)" P-INDEP
;* V50 tmp32 [V50 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V51 tmp33 [V51,T00] ( 3,4077.15) ref -> rcx "arr expr"
; V52 tmp34 [V52,T01] ( 3,4077.15) int -> rdx "index expr"
; V53 tmp35 [V53,T27] ( 3, 223.74) ref -> rcx "arr expr"
; V54 tmp36 [V54,T28] ( 3, 223.74) ref -> rcx "arr expr"
-; V55 tmp37 [V55,T29] ( 3, 223.74) int -> rax "index expr"
+; V55 tmp37 [V55,T29] ( 3, 223.74) int -> r13 "index expr"
; V56 tmp38 [V56,T02] ( 3,4071.15) ref -> rdx "arr expr"
; V57 tmp39 [V57,T20] ( 3, 807.89) ref -> rdx "arr expr"
; V58 tmp40 [V58,T21] ( 3, 807.89) int -> r13 "index expr"
; V59 tmp41 [V59,T25] ( 2, 538.60) ref -> rdx "argument with side effect"
-; V60 PSPSym [V60,T45] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V60 PSPSym [V60,T45] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
; V61 cse0 [V61,T19] ( 2, 907.15) int -> rax "CSE - moderate"
; V62 cse1 [V62,T32] ( 3, 111.87) int -> rdx "CSE - moderate"
;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M6149_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
@@ -84,11 +84,11 @@ G_M6149_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
push rdi
push rsi
push rbx
- sub rsp, 88
- lea rbp, [rsp+0x90]
+ sub rsp, 104
+ lea rbp, [rsp+0xA0]
xor eax, eax
- mov qword ptr [rbp-0x58], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x60], rax
+ mov qword ptr [rbp-0x70], rsp
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
@@ -126,232 +126,243 @@ G_M6149_IG03: ; bbWeight=679.52, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rs
; gcrRegs +[rcx]
mov edx, dword ptr [rdi+0x08]
cmp edx, dword ptr [rcx+0x08]
- jae SHORT G_M6149_IG10
+ jae SHORT G_M6149_IG07
movzx r13, byte ptr [rcx+rdx+0x10]
test r13b, 1
- jne SHORT G_M6149_IG09
+ jne SHORT G_M6149_IG06
;; size=24 bbWeight=679.52 PerfScore 7644.65
-G_M6149_IG04: ; bbWeight=679.52, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+G_M6149_IG04: ; bbWeight=679.52, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[rcx]
test r13b, 2
- jne G_M6149_IG32
- ;; size=10 bbWeight=679.52 PerfScore 849.41
-G_M6149_IG05: ; bbWeight=679.20, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov rcx, bword ptr [rsi]
- ; byrRegs +[rcx]
- mov r12d, dword ptr [rsi+0x08]
- cmp dword ptr [rbp-0x3C], r12d
- jae SHORT G_M6149_IG08
- ;; size=13 bbWeight=679.20 PerfScore 4754.38
-G_M6149_IG06: ; bbWeight=472.45, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref, isz
- mov edx, dword ptr [rbp-0x3C]
- movzx rdx, word ptr [rcx+2*rdx]
- cmp edx, 10
- jne SHORT G_M6149_IG14
- ;; size=12 bbWeight=472.45 PerfScore 2007.92
-G_M6149_IG07: ; bbWeight=77.32, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- ; byrRegs -[rcx]
- jmp SHORT G_M6149_IG13
- ;; size=2 bbWeight=77.32 PerfScore 154.64
-G_M6149_IG08: ; bbWeight=206.75, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov r12d, -1
- jmp SHORT G_M6149_IG15
- ;; size=8 bbWeight=206.75 PerfScore 465.18
-G_M6149_IG09: ; bbWeight=1.04, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ je SHORT G_M6149_IG10
+ ;; size=6 bbWeight=679.52 PerfScore 849.41
+G_M6149_IG05: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi rdi]
+ jmp G_M6149_IG32
+ ;; size=5 bbWeight=0.33 PerfScore 0.65
+G_M6149_IG06: ; bbWeight=1.04, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs +[rbx]
+ ; byrRegs +[rsi rdi]
mov ecx, dword ptr [rbp-0x3C]
mov dword ptr [rbp-0x4C], ecx
jmp SHORT G_M6149_IG04
;; size=8 bbWeight=1.04 PerfScore 4.17
-G_M6149_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6149_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
; byrRegs -[rsi rdi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M6149_IG11: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- ; gcrRegs +[rcx rbx]
+G_M6149_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ ; gcrRegs +[rbx]
; byrRegs +[rsi rdi]
- mov rcx, gword ptr [rcx+0x10]
+ xor r13d, r13d
+ jmp G_M6149_IG25
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M6149_IG09: ; bbWeight=0, gcrefRegs=1008 {rbx r12}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs +[r12]
+ mov rcx, gword ptr [r12+0x10]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rbp-0x50]
mov r12, 0xD1FFAB1E ; code for System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this
+ ; gcrRegs -[r12]
cmp dword ptr [rcx], ecx
call [r12]System.Text.RegularExpressions.Symbolic.BDD:Find(int):int:this
; gcrRegs -[rcx]
; gcr arg pop 0
mov r12d, eax
- jmp SHORT G_M6149_IG15
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M6149_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- xor r13d, r13d
- jmp G_M6149_IG29
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M6149_IG13: ; bbWeight=77.32, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- dec r12d
- cmp dword ptr [rbp-0x3C], r12d
- je G_M6149_IG25
- ;; size=13 bbWeight=77.32 PerfScore 251.29
-G_M6149_IG14: ; bbWeight=453.57, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov rcx, gword ptr [rbx+0x50]
- ; gcrRegs +[rcx]
- mov r12, gword ptr [rcx+0x08]
+ jmp SHORT G_M6149_IG13
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M6149_IG10: ; bbWeight=679.20, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ mov rcx, bword ptr [rsi]
+ ; byrRegs +[rcx]
+ mov edx, dword ptr [rsi+0x08]
+ cmp dword ptr [rbp-0x3C], edx
+ jae G_M6149_IG26
+ ;; size=15 bbWeight=679.20 PerfScore 4754.38
+G_M6149_IG11: ; bbWeight=472.45, gcrefRegs=0008 {rbx}, byrefRegs=00C2 {rcx rsi rdi}, byref
+ mov r12d, dword ptr [rbp-0x3C]
+ movzx rcx, word ptr [rcx+2*r12]
+ ; byrRegs -[rcx]
+ mov dword ptr [rbp-0x50], ecx
+ cmp ecx, 10
+ je G_M6149_IG28
+ ;; size=21 bbWeight=472.45 PerfScore 2480.37
+G_M6149_IG12: ; bbWeight=453.57, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ mov r12, gword ptr [rbx+0x50]
; gcrRegs +[r12]
- mov eax, dword ptr [r12+0x08]
- cmp eax, edx
- jbe SHORT G_M6149_IG11
- mov ecx, edx
- ; gcrRegs -[rcx]
- mov r12d, dword ptr [r12+4*rcx+0x10]
+ mov rdx, gword ptr [r12+0x08]
+ ; gcrRegs +[rdx]
+ mov eax, dword ptr [rdx+0x08]
+ cmp eax, ecx
+ jbe SHORT G_M6149_IG09
+ mov ecx, ecx
+ mov r12d, dword ptr [rdx+4*rcx+0x10]
; gcrRegs -[r12]
- ;; size=24 bbWeight=453.57 PerfScore 4308.95
-G_M6149_IG15: ; bbWeight=679.20, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ;; size=23 bbWeight=453.57 PerfScore 4308.95
+G_M6149_IG13: ; bbWeight=660.32, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ; gcrRegs -[rdx]
test r13b, 4
- jne SHORT G_M6149_IG22
- ;; size=6 bbWeight=679.20 PerfScore 849.00
-G_M6149_IG16: ; bbWeight=677.11, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jne SHORT G_M6149_IG20
+ ;; size=6 bbWeight=660.32 PerfScore 825.40
+G_M6149_IG14: ; bbWeight=677.11, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
test r13b, 8
- je SHORT G_M6149_IG23
+ je SHORT G_M6149_IG21
;; size=6 bbWeight=677.11 PerfScore 846.39
-G_M6149_IG17: ; bbWeight=37.29, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M6149_IG15: ; bbWeight=37.29, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov rcx, gword ptr [rbx+0x98]
; gcrRegs +[rcx]
lea edx, [r12+0x01]
cmp edx, dword ptr [rcx+0x08]
- jae SHORT G_M6149_IG10
+ jae G_M6149_IG07
mov edx, dword ptr [rcx+4*rdx+0x10]
mov rcx, gword ptr [rbx+0x10]
- mov eax, dword ptr [rdi+0x08]
- cmp eax, dword ptr [rcx+0x08]
- jae SHORT G_M6149_IG10
- mov rcx, gword ptr [rcx+8*rax+0x10]
+ mov r13d, dword ptr [rdi+0x08]
+ cmp r13d, dword ptr [rcx+0x08]
+ jae G_M6149_IG07
...
+18 (+5.81%) : 60075.dasm - Microsoft.CodeAnalysis.HashSetExtensions:AnyMicrosoft.CodeAnalysis.SyntaxToken:ubyte (Tier1)
@@ -15,7 +15,7 @@
; V03 loc1 [V03 ] ( 5, 0 ) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.SyntaxToken>
;* V04 loc2 [V04,T24] ( 0, 0 ) ubyte -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T21] ( 3, 1.14) int -> r8 "guarded devirt return temp"
+; V06 tmp1 [V06,T21] ( 4, 1.14) int -> r8 "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxReplacer+Replacer`1+<>c[System.__Canon]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.SyntaxToken]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxToken>
@@ -87,27 +87,15 @@ G_M26426_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
G_M26426_IG03: ; bbWeight=1.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
cmp esi, dword ptr [rdi+0x34]
- jne G_M26426_IG12
+ jne G_M26426_IG19
mov ecx, dword ptr [rdi+0x28]
;; size=12 bbWeight=1.57 PerfScore 9.41
G_M26426_IG04: ; bbWeight=1.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp ebp, ecx
- jb SHORT G_M26426_IG11
- xor eax, eax
- ;; size=6 bbWeight=1.57 PerfScore 2.35
-G_M26426_IG05: ; bbWeight=1.57, epilog, nogc, extend
- add rsp, 56
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r12
- pop r13
- pop r14
- pop r15
- ret
- ;; size=17 bbWeight=1.57 PerfScore 8.24
-G_M26426_IG06: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ jb SHORT G_M26426_IG10
+ jmp G_M26426_IG11
+ ;; size=9 bbWeight=1.57 PerfScore 5.10
+G_M26426_IG05: ; bbWeight=0.57, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r14-r15]
mov rcx, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxReplacer+Replacer`1+<>c[System.__Canon]:<.ctor>b__10_4(Microsoft.CodeAnalysis.SyntaxToken):ubyte:this
cmp qword ptr [rbx+0x18], rcx
@@ -117,34 +105,34 @@ G_M26426_IG06: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=C08
mov r15, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterfaceDeclarationSyntax
; gcrRegs -[r15]
;; size=39 bbWeight=0.57 PerfScore 3.27
-G_M26426_IG07: ; bbWeight=1.98, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M26426_IG06: ; bbWeight=1.98, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [r14+0x18]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
cmp rax, r15
- je SHORT G_M26426_IG08
+ je SHORT G_M26426_IG07
mov rax, qword ptr [rax+0x48]
call [rax+0x30]Microsoft.CodeAnalysis.GreenNode:get_IsStructuredTrivia():ubyte:this
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M26426_IG17
- ;; size=23 bbWeight=1.98 PerfScore 22.77
-G_M26426_IG08: ; bbWeight=1.98, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+ jne G_M26426_IG17
+ ;; size=27 bbWeight=1.98 PerfScore 22.77
+G_M26426_IG07: ; bbWeight=1.98, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
mov r14, gword ptr [r14+0x08]
test r14, r14
- jne SHORT G_M26426_IG07
+ jne SHORT G_M26426_IG06
;; size=9 bbWeight=1.98 PerfScore 6.44
-G_M26426_IG09: ; bbWeight=0.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M26426_IG08: ; bbWeight=0.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
xor r8d, r8d
;; size=3 bbWeight=0.57 PerfScore 0.14
-G_M26426_IG10: ; bbWeight=0.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M26426_IG09: ; bbWeight=0.57, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
test r8d, r8d
jne SHORT G_M26426_IG13
jmp SHORT G_M26426_IG03
;; size=7 bbWeight=0.57 PerfScore 1.85
-G_M26426_IG11: ; bbWeight=0.64, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M26426_IG10: ; bbWeight=0.64, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rdi+0x10]
; gcrRegs +[rax]
lea edx, [rbp+0x01]
@@ -166,16 +154,26 @@ G_M26426_IG11: ; bbWeight=0.64, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs +[r15]
mov r13d, dword ptr [rax+0x10]
mov r12d, dword ptr [rax+0x14]
- jmp G_M26426_IG06
+ jmp G_M26426_IG05
;; size=63 bbWeight=0.64 PerfScore 14.83
-G_M26426_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26426_IG11: ; bbWeight=1.57, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi r14-r15]
; byrRegs -[rax]
- call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M26426_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ ;; size=2 bbWeight=1.57 PerfScore 0.39
+G_M26426_IG12: ; bbWeight=1.57, epilog, nogc, extend
+ add rsp, 56
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=17 bbWeight=1.57 PerfScore 8.24
+G_M26426_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0 PerfScore 0.00
G_M26426_IG14: ; bbWeight=0, epilog, nogc, extend
@@ -197,13 +195,13 @@ G_M26426_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M26426_IG16: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi]
xor r8d, r8d
- jmp SHORT G_M26426_IG10
+ jmp SHORT G_M26426_IG09
;; size=5 bbWeight=0 PerfScore 0.00
-G_M26426_IG17: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M26426_IG17: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov r8d, 1
- jmp SHORT G_M26426_IG10
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M26426_IG18: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M26426_IG09
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M26426_IG18: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14-r15]
mov gword ptr [rsp+0x20], r14
mov gword ptr [rsp+0x28], r15
@@ -216,10 +214,18 @@ G_M26426_IG18: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=
; gcrRegs -[rcx r14-r15]
; gcr arg pop 0
mov r8d, eax
- jmp G_M26426_IG10
- ;; size=40 bbWeight=0 PerfScore 0.00
+ test r8d, r8d
+ je G_M26426_IG03
+ jmp SHORT G_M26426_IG13
+ ;; size=46 bbWeight=0 PerfScore 0.00
+G_M26426_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rdi]
+ call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 310, prolog size 36, PerfScore 83.89, instruction count 98, allocated bytes for code 310 (MethodHash=541198c5) for method Microsoft.CodeAnalysis.HashSetExtensions:Any[Microsoft.CodeAnalysis.SyntaxToken](System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken],System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]):ubyte (Tier1)
+Total bytes of code 328, prolog size 36, PerfScore 87.03, instruction count 101, allocated bytes for code 328 (MethodHash=541198c5) for method Microsoft.CodeAnalysis.HashSetExtensions:Any[Microsoft.CodeAnalysis.SyntaxToken](System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken],System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]):ubyte (Tier1)
; ============================================================
Unwind Info:
+31 (+7.33%) : 622565.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:g_anyOverriddenMethodHasExplicitImplementation|2130(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
@@ -16,12 +16,12 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple>
;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V06 tmp4 [V06,T03] ( 4, 1.99) ref -> rbx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V07 tmp5 [V07,T09] ( 3, 0.51) ref -> rax "CASTCLASS eval op1"
+; V07 tmp5 [V07,T08] ( 3, 0.51) ref -> rax "CASTCLASS eval op1"
; V08 tmp6 [V08,T10] ( 3, 0.28) long -> rcx "fgMakeTemp is creating a new local variable"
; V09 tmp7 [V09,T07] ( 5, 0.85) ref -> rbx class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
; V10 tmp8 [V10,T05] ( 2, 1.99) int -> rax "guarded devirt return temp"
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple>
-; V12 tmp10 [V12,T08] ( 2, 0.23) ref -> rax "guarded devirt return temp"
+; V12 tmp10 [V12,T09] ( 2, 0.23) ref -> rax "guarded devirt return temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple>
; V14 tmp12 [V14,T11] ( 3, 0.23) ref -> rcx "guarded devirt return temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple>
@@ -64,8 +64,8 @@ G_M52252_IG04: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
G_M52252_IG05: ; bbWeight=0.58, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test dword ptr [rbx+0x68], 0xD1FFAB1E
je SHORT G_M52252_IG07
- jmp SHORT G_M52252_IG14
- ;; size=11 bbWeight=0.58 PerfScore 3.46
+ jmp G_M52252_IG21
+ ;; size=14 bbWeight=0.58 PerfScore 3.46
G_M52252_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -82,8 +82,8 @@ G_M52252_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M52252_IG13
- ;; size=31 bbWeight=1.00 PerfScore 12.94
+ jne G_M52252_IG20
+ ;; size=35 bbWeight=1.00 PerfScore 12.94
G_M52252_IG07: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
xor rbx, rbx
@@ -114,33 +114,10 @@ G_M52252_IG12: ; bbWeight=0.82, epilog, nogc, extend
pop rdi
ret
;; size=8 bbWeight=0.82 PerfScore 2.24
-G_M52252_IG13: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52252_IG13: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi+0xF8]
- call [rax]Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_ConstructedFrom():Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this
- ; gcrRegs -[rcx] +[rax]
- ; gcr arg pop 0
- cmp rax, rbx
- jne SHORT G_M52252_IG07
- ;; size=17 bbWeight=0.11 PerfScore 0.74
-G_M52252_IG14: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rsi, qword ptr [rbx]
- mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple
- cmp rsi, rcx
- jne SHORT G_M52252_IG16
- ;; size=18 bbWeight=0.11 PerfScore 0.40
-G_M52252_IG15: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, rbx
- ; gcrRegs +[rdi]
- jmp SHORT G_M52252_IG17
- ;; size=5 bbWeight=0.15 PerfScore 0.35
-G_M52252_IG16: ; bbWeight=0.30, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rcx, rbx
- ; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0xD0]
call [rax+0x30]Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_OriginalDefinition():Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this
; gcrRegs -[rcx] +[rax]
@@ -148,15 +125,15 @@ G_M52252_IG16: ; bbWeight=0.30, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdi, rax
; gcrRegs +[rdi]
;; size=16 bbWeight=0.30 PerfScore 1.64
-G_M52252_IG17: ; bbWeight=0.11, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M52252_IG14: ; bbWeight=0.11, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
cmp rbx, rdi
jne G_M52252_IG26
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple
cmp qword ptr [rdi], rcx
- jne SHORT G_M52252_IG25
- ;; size=24 bbWeight=0.11 PerfScore 0.62
-G_M52252_IG18: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M52252_IG28
+ ;; size=28 bbWeight=0.11 PerfScore 0.62
+G_M52252_IG15: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
mov rcx, rdi
; gcrRegs +[rcx]
@@ -165,13 +142,13 @@ G_M52252_IG18: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
cmp gword ptr [rdi+0x48], 0
- je SHORT G_M52252_IG24
+ je SHORT G_M52252_IG19
;; size=22 bbWeight=0.11 PerfScore 0.85
-G_M52252_IG19: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M52252_IG16: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rdi+0x48]
; gcrRegs +[rcx]
;; size=4 bbWeight=0.11 PerfScore 0.23
-G_M52252_IG20: ; bbWeight=0.11, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M52252_IG17: ; bbWeight=0.11, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Symbols.OverriddenOrHiddenMembersResult:GetOverriddenMember():Microsoft.CodeAnalysis.CSharp.Symbol:this
cmp dword ptr [rcx], ecx
@@ -181,29 +158,13 @@ G_M52252_IG20: ; bbWeight=0.11, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
mov rbx, rax
; gcrRegs +[rbx]
test rbx, rbx
- je SHORT G_M52252_IG23
+ je SHORT G_M52252_IG25
;; size=22 bbWeight=0.11 PerfScore 0.88
-G_M52252_IG21: ; bbWeight=0.06, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol
- cmp qword ptr [rbx], rcx
- je SHORT G_M52252_IG23
- ;; size=15 bbWeight=0.06 PerfScore 0.24
-G_M52252_IG22: ; bbWeight=0.03, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rdx, rax
- ; gcrRegs +[rdx]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rdx]
- ; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- ;; size=11 bbWeight=0.03 PerfScore 0.04
-G_M52252_IG23: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- jmp G_M52252_IG08
- ;; size=5 bbWeight=0.11 PerfScore 0.23
-G_M52252_IG24: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx] +[rdi]
+G_M52252_IG18: ; bbWeight=0.06, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M52252_IG23
+ ;; size=2 bbWeight=0.06 PerfScore 0.11
+G_M52252_IG19: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx] +[rdi]
lea rbx, bword ptr [rdi+0x48]
; byrRegs +[rbx]
mov rcx, rdi
@@ -215,7 +176,7 @@ G_M52252_IG24: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
mov rdx, rax
; gcrRegs +[rdx]
test rbx, rbx
- je SHORT G_M52252_IG27
+ je G_M52252_IG27
mov rcx, rbx
; byrRegs +[rcx]
xor r8, r8
@@ -224,23 +185,52 @@ G_M52252_IG24: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
; gcrRegs -[rdx r8]
; byrRegs -[rcx rbx]
; gcr arg pop 0
- jmp SHORT G_M52252_IG19
- ;; size=40 bbWeight=0.02 PerfScore 0.17
-G_M52252_IG25: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rcx, rdi
+ jmp SHORT G_M52252_IG16
+ ;; size=44 bbWeight=0.02 PerfScore 0.17
+G_M52252_IG20: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi] +[rbx]
+ mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x100]
- call [rax+0x30]<unknown method>
- ; gcrRegs -[rcx rdi] +[rax]
+ mov rax, qword ptr [rsi+0xF8]
+ call [rax]Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_ConstructedFrom():Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this
+ ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- jmp SHORT G_M52252_IG20
- ;; size=21 bbWeight=0 PerfScore 0.00
+ cmp rax, rbx
+ jne G_M52252_IG07
+ ;; size=21 bbWeight=0.11 PerfScore 0.74
+G_M52252_IG21: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rsi, qword ptr [rbx]
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple
+ cmp rsi, rcx
+ jne G_M52252_IG13
+ ;; size=22 bbWeight=0.11 PerfScore 0.40
+G_M52252_IG22: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ jmp G_M52252_IG14
+ ;; size=8 bbWeight=0.15 PerfScore 0.35
+G_M52252_IG23: ; bbWeight=0.06, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi] +[rax]
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol
+ cmp qword ptr [rbx], rcx
+ je SHORT G_M52252_IG25
+ ;; size=15 bbWeight=0.06 PerfScore 0.24
+G_M52252_IG24: ; bbWeight=0.03, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[rdx]
+ ; gcr arg pop 0
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ ;; size=11 bbWeight=0.03 PerfScore 0.04
+G_M52252_IG25: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ jmp G_M52252_IG08
+ ;; size=5 bbWeight=0.11 PerfScore 0.23
G_M52252_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx] +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0xD0]
@@ -281,8 +271,21 @@ G_M52252_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=13 bbWeight=0 PerfScore 0.00
+G_M52252_IG28: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x100]
+ call [rax+0x30]<unknown method>
+ ; gcrRegs -[rcx rdi] +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp G_M52252_IG17
+ ;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 423, prolog size 7, PerfScore 40.78, instruction count 118, allocated bytes for code 423 (MethodHash=162c33e3) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__anyOverriddenMethodHasExplicitImplementation|213_0(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
+Total bytes of code 454, prolog size 7, PerfScore 40.89, instruction count 119, allocated bytes for code 454 (MethodHash=162c33e3) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__anyOverriddenMethodHasExplicitImplementation|213_0(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-35 (-30.97%) : 154417.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov r8d, edx
- test edx, edx
- jl SHORT G_M3357_IG10
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax
+ jae SHORT G_M3357_IG13
mov r10d, r8d
movzx r10, word ptr [rcx+2*r10+0x0C]
cmp r10d, 32
je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d
cmp eax, r8d
jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
- cmp r8d, eax
- jae SHORT G_M3357_IG17
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
- cmp r10d, 32
- je SHORT G_M3357_IG12
- ;; size=20 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- cmp eax, r8d
- jg SHORT G_M3357_IG10
- ;; size=8 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
sub eax, edx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d
sub eax, edx
;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-35 (-30.97%) : 20163.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov r8d, edx
- test edx, edx
- jl SHORT G_M3357_IG10
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax
+ jae SHORT G_M3357_IG13
mov r10d, r8d
movzx r10, word ptr [rcx+2*r10+0x0C]
cmp r10d, 32
je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d
cmp eax, r8d
jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
- cmp r8d, eax
- jae SHORT G_M3357_IG17
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
- cmp r10d, 32
- je SHORT G_M3357_IG12
- ;; size=20 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- cmp eax, r8d
- jg SHORT G_M3357_IG10
- ;; size=8 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
sub eax, edx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d
sub eax, edx
;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-38 (-7.44%) : 148114.dasm - System.Linq.Tests.SelectManyTests:CollectionInterleavedWithLazyEnumerables_ToArray(System.Collections.Generic.IEnumerable`1[int][]):this (FullOpts)
@@ -13,28 +13,25 @@
; V02 loc0 [V02,T07] ( 3, 6.06) ref -> rbx class-hnd single-def <int[]>
; V03 loc1 [V03,T03] ( 6, 21.31) int -> rsi
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T16] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
+; V05 tmp1 [V05,T13] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp3 [V07,T15] ( 5, 4 ) ref -> rsi
-; V08 tmp4 [V08,T13] ( 5, 5 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp5 [V09,T19] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V10 tmp6 [V10,T18] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[int]>
-; V11 tmp7 [V11,T14] ( 5, 5 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V12 tmp8 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp9 [V13,T17] ( 3, 2.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.IEnumerable`1[int][]>
-; V14 tmp10 [V14,T04] ( 2, 16.25) int -> r12 "Inlining Arg"
-; V15 tmp11 [V15,T02] ( 3, 24.37) ref -> [rsp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V07 tmp3 [V07,T12] ( 5, 4 ) ref -> rsi
+; V08 tmp4 [V08,T10] ( 5, 5 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V09 tmp5 [V09,T16] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V10 tmp6 [V10,T15] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[int]>
+; V11 tmp7 [V11,T11] ( 5, 5 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V12 tmp8 [V12,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp9 [V13,T14] ( 3, 2.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.IEnumerable`1[int][]>
+; V14 tmp10 [V14,T04] ( 2, 16.25) int -> r14 "Inlining Arg"
+; V15 tmp11 [V15,T02] ( 3, 24.37) ref -> r15 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V17 tmp13 [V17,T05] ( 3, 12.19) ref -> [rsp+0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp14 [V18,T00] ( 4, 32.50) ref -> [rsp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp15 [V19,T01] ( 4, 32.50) ref -> [rsp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V20 cse0 [V20,T09] ( 2, 5.06) long -> rbp hoist "CSE - aggressive"
-; V21 cse1 [V21,T10] ( 2, 5.06) long -> r14 hoist "CSE - aggressive"
-; V22 cse2 [V22,T11] ( 2, 5.06) long -> r15 hoist "CSE - aggressive"
-; V23 cse3 [V23,T12] ( 2, 5.06) long -> r13 hoist "CSE - moderate"
-; V24 cse4 [V24,T08] ( 3, 6.06) int -> rdi "CSE - moderate"
+; V17 tmp13 [V17,T05] ( 3, 12.19) ref -> r13 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V18 tmp14 [V18,T00] ( 4, 32.50) ref -> r12 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp15 [V19,T01] ( 4, 32.50) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V20 cse0 [V20,T08] ( 3, 6.06) int -> rdi "CSE - aggressive"
+; V21 cse1 [V21,T09] ( 2, 5.06) long -> rbp hoist "CSE - aggressive"
;
-; Lcl frame size = 72
+; Lcl frame size = 40
G_M61860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -45,7 +42,7 @@ G_M61860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 72
+ sub rsp, 40
mov rbx, rdx
; gcrRegs +[rbx]
;; size=19 bbWeight=1 PerfScore 8.50
@@ -142,98 +139,86 @@ G_M61860_IG07: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
test edi, edi
jle G_M61860_IG09
mov rbp, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int]
- mov r14, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]
- mov r15, 0xD1FFAB1E ; <unknown class>
- mov r13, 0xD1FFAB1E ; <unknown class>
- ;; size=62 bbWeight=1 PerfScore 7.75
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M61860_IG08: ; bbWeight=4.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov ecx, esi
- mov r12d, dword ptr [rbx+4*rcx+0x10]
+ mov r14d, dword ptr [rbx+4*rcx+0x10]
mov rcx, rbp
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x40], rax
- ; GC ptr vars +{V15}
- mov rcx, r14
+ mov r15, rax
+ ; gcrRegs +[r15]
+ mov rcx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
- mov gword ptr [rsp+0x38], rax
- ; GC ptr vars +{V17}
+ mov r13, rax
+ ; gcrRegs +[r13]
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rax+0x08], rcx
- mov rcx, r15
+ mov gword ptr [r13+0x08], rcx
+ mov rcx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[rcx]
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
- mov gword ptr [rsp+0x30], rax
- ; GC ptr vars +{V18}
- lea rcx, bword ptr [rax+0x08]
+ mov r12, rax
+ ; gcrRegs +[r12]
+ lea rcx, bword ptr [r12+0x08]
; byrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x38]
+ mov rdx, r13
; gcrRegs +[rdx]
- ; GC ptr vars -{V17}
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx r13]
; byrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; code for <unknown method>
- mov rax, gword ptr [rsp+0x30]
- ; gcrRegs +[rax]
- mov qword ptr [rax+0x18], rcx
- mov rcx, r13
+ mov qword ptr [r12+0x18], rcx
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x28], rax
- ; GC ptr vars +{V19}
- lea rcx, bword ptr [rax+0x10]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ lea rcx, bword ptr [r13+0x10]
; byrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, r12
; gcrRegs +[rdx]
- ; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx r12]
; byrRegs -[rcx]
mov ecx, 2
xor edx, edx
call [System.LazyHelper:Create(int,ubyte):System.LazyHelper]
; gcrRegs +[rax]
; gcr arg pop 0
- mov r8, gword ptr [rsp+0x28]
- ; gcrRegs +[r8]
- lea rcx, bword ptr [r8+0x08]
+ lea rcx, bword ptr [r13+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx r8]
- ; byrRegs -[rcx]
- mov rax, gword ptr [rsp+0x40]
- ; gcrRegs +[rax]
- lea rcx, bword ptr [rax+0x08]
- ; byrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x28]
- ; gcrRegs +[rdx]
- ; GC ptr vars -{V19}
- call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
+ lea rcx, bword ptr [r15+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, r13
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx r13]
+ ; byrRegs -[rcx]
mov ecx, esi
- mov edx, r12d
- mov r8, gword ptr [rsp+0x40]
+ mov edx, r14d
+ mov r8, r15
; gcrRegs +[r8]
- ; GC ptr vars -{V15}
call [<unknown method>]
- ; gcrRegs -[r8]
+ ; gcrRegs -[r8 r15]
; gcr arg pop 0
inc esi
cmp edi, esi
jg G_M61860_IG08
- ;; size=187 bbWeight=4.06 PerfScore 144.21
+ ;; size=179 bbWeight=4.06 PerfScore 107.65
G_M61860_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
- add rsp, 72
+ add rsp, 40
pop rbx
pop rbp
pop rsi
@@ -257,7 +242,7 @@ G_M61860_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 511, prolog size 16, PerfScore 185.21, instruction count 120, allocated bytes for code 511 (MethodHash=0aa00e5b) for method System.Linq.Tests.SelectManyTests:CollectionInterleavedWithLazyEnumerables_ToArray(System.Collections.Generic.IEnumerable`1[int][]):this (FullOpts)
+Total bytes of code 473, prolog size 16, PerfScore 147.90, instruction count 114, allocated bytes for code 473 (MethodHash=0aa00e5b) for method System.Linq.Tests.SelectManyTests:CollectionInterleavedWithLazyEnumerables_ToArray(System.Collections.Generic.IEnumerable`1[int][]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -270,7 +255,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+20 (+3.03%) : 102926.dasm - System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
@@ -13,14 +13,14 @@
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03,T03] ( 3, 9 ) ref -> rbp class-hnd exact single-def <<unknown class>>
; V04 loc3 [V04 ] ( 8, 14 ) struct (40) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V05 loc4 [V05,T01] ( 4, 16 ) ref -> r15 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_1>
+; V05 loc4 [V05,T01] ( 4, 16 ) ref -> r12 class-hnd exact <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_1>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_0>
; V08 tmp2 [V08,T02] ( 7, 14 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp3 [V09,T08] ( 2, 4 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
+; V09 tmp3 [V09,T10] ( 2, 4 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
-; V12 tmp6 [V12,T10] ( 4, 3.50) ref -> r8
+; V12 tmp6 [V12,T12] ( 4, 3.50) ref -> r8
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref
@@ -30,27 +30,30 @@
;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V21 tmp15 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V22 tmp16 [V22,T13] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V23 tmp17 [V23,T09] ( 2, 4 ) struct (40) [rsp+0x28] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
-; V24 tmp18 [V24,T15] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V22 tmp16 [V22,T14] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V23 tmp17 [V23,T11] ( 2, 4 ) struct (40) [rsp+0x28] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.String]>
+; V24 tmp18 [V24,T16] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "V23.[000..008)"
-; V27 tmp21 [V27,T14] ( 2, 2 ) int -> rcx single-def "V23.[008..012)"
+; V27 tmp21 [V27,T15] ( 2, 2 ) int -> rcx single-def "V23.[008..012)"
;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref single-def "V23.[012..016)"
;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref single-def "V23.[016..020)"
;* V30 tmp24 [V30 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V32 tmp26 [V32,T16] ( 2, 0 ) ref -> rcx "argument with side effect"
-; V33 tmp27 [V33,T17] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V34 cse0 [V34,T05] ( 3, 6 ) long -> r14 "CSE - aggressive"
-; V35 cse1 [V35,T11] ( 6, 3 ) ref -> rdx multi-def "CSE - aggressive"
-; V36 cse2 [V36,T12] ( 3, 3 ) ref -> rbp "CSE - aggressive"
+; V32 tmp26 [V32,T17] ( 2, 0 ) ref -> rcx "argument with side effect"
+; V33 tmp27 [V33,T18] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V34 cse0 [V34,T08] ( 2, 5 ) long -> r15 hoist "CSE - aggressive"
+; V35 cse1 [V35,T09] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
+; V36 cse2 [V36,T05] ( 3, 6 ) long -> r14 "CSE - aggressive"
+; V37 cse3 [V37,T13] ( 6, 3 ) ref -> rdx multi-def "CSE - moderate"
;
; Lcl frame size = 120
G_M16238_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
+ push r13
+ push r12
push rdi
push rsi
push rbp
@@ -65,7 +68,7 @@ G_M16238_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x70], rax
mov rsi, rcx
; gcrRegs +[rsi]
- ;; size=46 bbWeight=1 PerfScore 14.08
+ ;; size=50 bbWeight=1 PerfScore 16.08
G_M16238_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_0
call CORINFO_HELP_NEWSFAST
@@ -91,9 +94,7 @@ G_M16238_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
- mov rbp, 0xD1FFAB1E
- ; gcrRegs +[rbp]
- mov r8, rbp
+ mov r8, 0xD1FFAB1E
; gcrRegs +[r8]
mov r9d, 2
call [<unknown method>]
@@ -101,8 +102,8 @@ G_M16238_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
test eax, eax
jne SHORT G_M16238_IG04
- ;; size=102 bbWeight=1 PerfScore 14.25
-G_M16238_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=99 bbWeight=1 PerfScore 14.00
+G_M16238_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -111,20 +112,20 @@ G_M16238_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M16238_IG04: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M16238_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
- mov r8, rbp
+ mov r8, 0xD1FFAB1E
; gcrRegs +[r8]
mov r9d, 2
call [<unknown method>]
- ; gcrRegs -[rcx rdx rbp r8]
+ ; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
test eax, eax
jne SHORT G_M16238_IG06
- ;; size=32 bbWeight=1 PerfScore 5.25
+ ;; size=39 bbWeight=1 PerfScore 5.25
G_M16238_IG05: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -203,28 +204,30 @@ G_M16238_IG10: ; bbWeight=1, extend
; gcr arg pop 0
test eax, eax
je G_M16238_IG12
- ;; size=55 bbWeight=1 PerfScore 9.50
+ mov r15, 0xD1FFAB1E ; System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_1
+ mov r13, 0xD1FFAB1E ; <unknown class>
+ ;; size=75 bbWeight=1 PerfScore 10.00
G_M16238_IG11: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; System.Diagnostics.Tests.ProcessStartInfoTests+<>c__DisplayClass7_1
+ mov rcx, r15
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- lea rcx, bword ptr [r15+0x08]
+ mov r12, rax
+ ; gcrRegs +[r12]
+ lea rcx, bword ptr [r12+0x08]
; byrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- lea rdi, bword ptr [r15+0x10]
+ lea rdi, bword ptr [r12+0x10]
; byrRegs +[rdi]
lea rsi, bword ptr [rsp+0x68]
; byrRegs +[rsi]
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
- mov rcx, 0xD1FFAB1E ; <unknown class>
+ mov rcx, r13
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; byrRegs -[rsi rdi]
@@ -233,10 +236,10 @@ G_M16238_IG11: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
; gcrRegs +[rsi]
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
- mov rdx, r15
+ mov rdx, r12
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx r15]
+ ; gcrRegs -[rax rdx r12]
; byrRegs -[rcx]
mov r8, 0xD1FFAB1E ; code for <unknown method>
mov qword ptr [rsi+0x18], r8
@@ -259,7 +262,7 @@ G_M16238_IG11: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
; gcr arg pop 0
test eax, eax
jne G_M16238_IG11
- ;; size=152 bbWeight=4 PerfScore 84.00
+ ;; size=140 bbWeight=4 PerfScore 84.00
G_M16238_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rbp]
add rsp, 120
@@ -267,10 +270,12 @@ G_M16238_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
pop rsi
pop rdi
+ pop r12
+ pop r13
pop r14
pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25
+ ;; size=17 bbWeight=1 PerfScore 5.25
G_M16238_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -303,7 +308,7 @@ G_M16238_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=73 bbWeight=0 PerfScore 0.00
-Total bytes of code 661, prolog size 43, PerfScore 157.54, instruction count 140, allocated bytes for code 661 (MethodHash=aa32c091) for method System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
+Total bytes of code 681, prolog size 47, PerfScore 160.79, instruction count 145, allocated bytes for code 681 (MethodHash=aa32c091) for method System.Diagnostics.Tests.ProcessStartInfoTests:ProcessStartInfoEnvironmentDoesNotThrowForCaseSensitiveDuplicates():this (FullOpts)
; ============================================================
Unwind Info:
@@ -311,15 +316,17 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x10
+ CountOfUnwindCodes: 9
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78
+ CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+20 (+3.68%) : 9669.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>cDisplayClass11_0[ushort]:gexecuteExecutableCodeActions|2():this (FullOpts)
@@ -22,20 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.DeclarationInfo[]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]>
-; V14 tmp7 [V14,T03] ( 4, 12.50) int -> r10 "Inline stloc first use temp"
+; V14 tmp7 [V14,T03] ( 4, 12.50) int -> rax "Inline stloc first use temp"
; V15 tmp8 [V15,T06] ( 5, 5.50) ref -> rbx "field V01.array (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 4.50) ref -> rdx single-def "field V03._array (fldOffset=0x0)" P-INDEP
-; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r9 "field V03._index (fldOffset=0x8)" P-INDEP
+; V17 tmp10 [V17,T02] ( 4, 12.50) int -> r10 "field V03._index (fldOffset=0x8)" P-INDEP
; V18 tmp11 [V18,T04] ( 3, 10 ) ref -> r11 "field V04.<DeclaredNode>k__BackingField (fldOffset=0x0)" P-INDEP
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "field V04.<DeclaredSymbol>k__BackingField (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> r10 "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
+; V20 tmp13 [V20,T05] ( 2, 6 ) ref -> rax "field V04.<ExecutableCodeBlocks>k__BackingField (fldOffset=0x10)" P-INDEP
; V21 tmp14 [V21,T11] ( 5, 2 ) ref -> [rbp-0x28] do-not-enreg[H] EH-live "field V05.array (fldOffset=0x0)" P-INDEP
; V22 tmp15 [V22,T10] ( 5, 2.50) ref -> rsi "field V06.array (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rdx single-def "field V09.array (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T13] ( 2, 1 ) ref -> rdx single-def "field V10._array (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> r10 "BlockOp address local"
+; V27 tmp20 [V27,T00] ( 3, 24 ) byref -> rax "BlockOp address local"
; V28 PSPSym [V28,T14] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T07] ( 3, 5 ) int -> r8 "CSE - aggressive"
;
@@ -92,83 +92,62 @@ G_M10501_IG05: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=
call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x20], rax
+ mov r9, rax
+ ; gcrRegs +[r9]
+ mov gword ptr [rbp-0x20], r9
; GC ptr vars +{V02}
- ;; size=62 bbWeight=0.50 PerfScore 7.50
-G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=65 bbWeight=0.50 PerfScore 7.62
+G_M10501_IG06: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x68]
; gcrRegs +[rdx]
mov r8d, dword ptr [rdx+0x08]
+ xor eax, eax
xor r10d, r10d
- xor r9d, r9d
test r8d, r8d
- jle SHORT G_M10501_IG11
- ;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M10501_IG07: ; bbWeight=4, gcrefRegs=000F {rax rcx rdx rbx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r10d
- lea r10, [r10+2*r10]
- lea r10, bword ptr [rdx+8*r10+0x10]
- ; byrRegs +[r10]
- mov r11, gword ptr [r10]
+ jle G_M10501_IG17
+ ;; size=26 bbWeight=0.50 PerfScore 3.38
+G_M10501_IG07: ; bbWeight=4, gcrefRegs=020E {rcx rdx rbx r9}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
+ lea rax, [rax+2*rax]
+ lea rax, bword ptr [rdx+8*rax+0x10]
+ ; byrRegs +[rax]
+ mov r11, gword ptr [rax]
; gcrRegs +[r11]
- mov r10, gword ptr [r10+0x10]
- ; gcrRegs +[r10]
- ; byrRegs -[r10]
+ mov rax, gword ptr [rax+0x10]
+ ; gcrRegs +[rax]
+ ; byrRegs -[rax]
cmp r11, gword ptr [rcx+0x50]
je SHORT G_M10501_IG09
- ;; size=25 bbWeight=4 PerfScore 39.00
-G_M10501_IG08: ; bbWeight=2, gcrefRegs=0C0F {rax rcx rdx rbx r10 r11}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=4 PerfScore 39.00
+G_M10501_IG08: ; bbWeight=2, gcrefRegs=0A0F {rax rcx rdx rbx r9 r11}, byrefRegs=0000 {}, byref
cmp r11, gword ptr [rcx+0x48]
- jne SHORT G_M10501_IG10
- ;; size=6 bbWeight=2 PerfScore 8.00
-G_M10501_IG09: ; bbWeight=2, gcrefRegs=0407 {rax rcx rdx r10}, byrefRegs=0000 {}, byref, isz
+ jne G_M10501_IG12
+ ;; size=10 bbWeight=2 PerfScore 8.00
+G_M10501_IG09: ; bbWeight=2, gcrefRegs=0207 {rax rcx rdx r9}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r11]
- mov rbx, r10
+ mov rbx, rax
; gcrRegs +[rbx]
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M10501_IG12
- ;; size=9 bbWeight=2 PerfScore 8.50
-G_M10501_IG10: ; bbWeight=4, gcrefRegs=000F {rax rcx rdx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
- lea r10d, [r9+0x01]
- mov r9d, r10d
- cmp r8d, r9d
- jg SHORT G_M10501_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx rdx]
- mov rcx, gword ptr [rbp+0x10]
- ; gcrRegs +[rcx]
- mov rax, gword ptr [rbp-0x20]
- ; gcrRegs +[rax]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov r8, rax
- ; gcrRegs +[r8]
- ; GC ptr vars -{V00}
- call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbx r8]
- ; gcr arg pop 0
- jmp G_M10501_IG17
- ;; size=25 bbWeight=0.50 PerfScore 3.75
-G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax rcx rbx]
- ; GC ptr vars +{V00}
+ je G_M10501_IG12
+ ;; size=13 bbWeight=2 PerfScore 8.50
+G_M10501_IG10: ; bbWeight=0.50, gcrefRegs=020A {rcx rbx r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rdx]
movzx rdx, byte ptr [rcx+0x42]
movzx r8, byte ptr [rcx+0x44]
or edx, r8d
- je SHORT G_M10501_IG13
+ je SHORT G_M10501_IG11
mov rcx, gword ptr [rcx+0x08]
mov rsi, gword ptr [rbp+0x10]
; gcrRegs +[rsi]
mov rdx, gword ptr [rsi+0x18]
; gcrRegs +[rdx]
- mov r8, rax
+ mov r8, r9
; gcrRegs +[r8]
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])]
- ; gcrRegs -[rax rcx rdx r8]
+ ; gcrRegs -[rcx rdx r8-r9]
; gcr arg pop 0
mov rcx, gword ptr [rsi+0x10]
; gcrRegs +[rcx]
@@ -179,24 +158,24 @@ G_M10501_IG12: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefR
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:<ExecuteDeclaringReferenceActions>g__addExecutableCodeBlockAnalyzerActions|11_8(Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+ExecutableCodeBlockAnalyzerActions[ushort]])]
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
+ ;; size=53 bbWeight=0.50 PerfScore 10.75
+G_M10501_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ mov rsi, gword ptr [rbp+0x10]
+ ; gcrRegs +[rsi]
+ movzx r8, byte ptr [rsi+0x43]
+ movzx rdx, byte ptr [rsi+0x44]
+ or r8d, edx
mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, gword ptr [rbp-0x20]
- ; gcrRegs +[rax]
- ;; size=60 bbWeight=0.50 PerfScore 11.38
-G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- movzx r8, byte ptr [rcx+0x43]
- movzx rdx, byte ptr [rcx+0x44]
- or r8d, edx
- je SHORT G_M10501_IG11
+ je G_M10501_IG17
mov r8, gword ptr [rcx+0x70]
; gcrRegs +[r8]
mov rdx, gword ptr [rcx+0x28]
; gcrRegs +[rdx]
mov rcx, rbx
call [Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:GetOperationBlocksToAnalyze(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SemanticModel,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation]]
- ; gcrRegs -[rcx rdx r8]
+ ; gcrRegs -[rcx rdx rsi r8] +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x28], rax
; GC ptr vars +{V21}
@@ -210,24 +189,41 @@ G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0
mov rsi, rax
; gcrRegs +[rsi]
cmp dword ptr [rsi+0x08], 0
- je G_M10501_IG11
- ;; size=62 bbWeight=0.50 PerfScore 11.38
-G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rdi, gword ptr [rbp+0x10]
- ; gcrRegs +[rdi]
- cmp byte ptr [rdi+0x43], 0
- je SHORT G_M10501_IG15
- mov r8, gword ptr [rdi+0x08]
- ; gcrRegs +[r8]
- mov rcx, rdi
+ mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
+ je SHORT G_M10501_IG17
+ mov r9, gword ptr [rbp-0x20]
+ ; gcrRegs +[r9]
+ jmp SHORT G_M10501_IG14
+ ;; size=79 bbWeight=0.50 PerfScore 14.00
+G_M10501_IG12: ; bbWeight=4, gcVars=0000000000000202 {V00 V02}, gcrefRegs=020E {rcx rdx rbx r9}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi] +[rdx]
+ ; GC ptr vars -{V21}
+ lea eax, [r10+0x01]
+ mov r10d, eax
+ cmp r8d, r10d
+ jg G_M10501_IG07
+ ;; size=16 bbWeight=4 PerfScore 8.00
+G_M10501_IG13: ; bbWeight=0.50, gcrefRegs=020A {rcx rbx r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ jmp SHORT G_M10501_IG17
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M10501_IG14: ; bbWeight=0.50, gcVars=0000000000000A02 {V00 V02 V21}, gcrefRegs=024A {rcx rbx rsi r9}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rsi]
+ ; GC ptr vars +{V21}
+ cmp byte ptr [rcx+0x43], 0
+ je SHORT G_M10501_IG15
+ mov r8, gword ptr [rcx+0x08]
+ ; gcrRegs +[r8]
mov rdx, rsi
; gcrRegs +[rdx]
xor r9d, r9d
+ ; gcrRegs -[r9]
call [<unknown method>]
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
+ mov rdi, gword ptr [rbp+0x10]
+ ; gcrRegs +[rdi]
mov r8, gword ptr [rdi+0x10]
; gcrRegs +[r8]
mov rcx, rdi
@@ -238,23 +234,26 @@ G_M10501_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
- ;; size=51 bbWeight=0.50 PerfScore 8.25
-G_M10501_IG15: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi
; gcrRegs +[rcx]
+ mov r9, gword ptr [rbp-0x20]
+ ; gcrRegs +[r9]
+ ;; size=55 bbWeight=0.50 PerfScore 8.75
+G_M10501_IG15: ; bbWeight=0.50, gcrefRegs=024A {rcx rbx rsi r9}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx]
mov r8, rsi
; gcrRegs +[r8]
- mov r9, gword ptr [rbp-0x20]
- ; gcrRegs +[r9]
call [<unknown method>]
; gcrRegs -[rcx rdx rsi r8-r9]
; gcr arg pop 0
...
+12 (+3.82%) : 129188.dasm - System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
@@ -23,9 +23,9 @@
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V14 tmp9 [V14,T10] ( 3, 20 ) ref -> rcx class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
-; V15 tmp10 [V15,T12] ( 2, 16 ) ref -> rax class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
+; V15 tmp10 [V15,T12] ( 2, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.IO.Compression.InflaterManaged>
; V16 tmp11 [V16,T07] ( 4, 28 ) ref -> rdx class-hnd "Inlining Arg" <ubyte[]>
-; V17 tmp12 [V17,T01] ( 6, 48 ) ref -> r13 class-hnd exact "Inlining Arg" <System.IO.Compression.InputBuffer>
+; V17 tmp12 [V17,T01] ( 6, 48 ) ref -> registers class-hnd exact "Inlining Arg" <System.IO.Compression.InputBuffer>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -40,7 +40,7 @@
;* V29 tmp24 [V29,T21] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x8)" P-INDEP
; V30 tmp25 [V30,T18] ( 2, 8 ) int -> r15 "field V19._length (fldOffset=0xc)" P-INDEP
;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
-; V32 tmp27 [V32 ] ( 3, 48 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
+; V32 tmp27 [V32 ] ( 3, 48 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
; V33 tmp28 [V33,T06] ( 2, 32 ) ref -> rcx "argument with side effect"
; V34 tmp29 [V34,T09] ( 3, 24 ) ref -> rcx "argument with side effect"
; V35 tmp30 [V35,T25] ( 2, 0 ) ref -> rdx "argument with side effect"
@@ -48,44 +48,43 @@
; V37 cse1 [V37,T15] ( 3, 12 ) ref -> rdx "CSE - moderate"
; V38 cse2 [V38,T20] ( 3, 6 ) ref -> rdx "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M58280_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
- push r13
push rdi
push rsi
push rbp
push rbx
- sub rsp, 48
+ sub rsp, 56
xor eax, eax
- mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 8.75
+ ;; size=22 bbWeight=1 PerfScore 7.75
G_M58280_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
; byrRegs +[rdx]
mov rsi, bword ptr [rdx]
; byrRegs +[rsi]
mov edi, dword ptr [rdx+0x08]
cmp gword ptr [rbx+0x10], 0
- je G_M58280_IG13
+ je G_M58280_IG14
mov ebp, edi
;; size=19 bbWeight=1 PerfScore 8.25
G_M58280_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs -[rdx]
mov rcx, gword ptr [rbx+0x18]
; gcrRegs +[rcx]
- mov bword ptr [rsp+0x20], rsi
- mov dword ptr [rsp+0x28], edi
- lea rdx, [rsp+0x20]
+ mov bword ptr [rsp+0x28], rsi
+ mov dword ptr [rsp+0x30], edi
+ lea rdx, [rsp+0x28]
cmp dword ptr [rcx], ecx
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, edi
- ja G_M58280_IG15
+ ja G_M58280_IG16
mov r14d, eax
add rsi, r14
sub edi, eax
@@ -100,20 +99,20 @@ G_M58280_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=2 PerfScore 7.00
-G_M58280_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+G_M58280_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov r14d, edi
test r14d, r14d
- je SHORT G_M58280_IG11
- ;; size=8 bbWeight=8 PerfScore 12.00
+ je G_M58280_IG12
+ ;; size=12 bbWeight=8 PerfScore 12.00
G_M58280_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, gword ptr [rbx+0x18]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x58], 24
- je SHORT G_M58280_IG11
+ je SHORT G_M58280_IG12
;; size=10 bbWeight=4 PerfScore 24.00
G_M58280_IG07: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref, isz
cmp dword ptr [rcx+0x58], 23
- je SHORT G_M58280_IG11
+ je SHORT G_M58280_IG12
;; size=6 bbWeight=2 PerfScore 8.00
G_M58280_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rcx]
@@ -130,56 +129,65 @@ G_M58280_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
; gcr arg pop 0
mov r15d, eax
test r15d, r15d
- jle SHORT G_M58280_IG11
+ jle SHORT G_M58280_IG12
mov rdx, gword ptr [rbx+0x20]
; gcrRegs +[rdx]
cmp dword ptr [rdx+0x08], r15d
- jl SHORT G_M58280_IG14
- mov rax, gword ptr [rbx+0x18]
- ; gcrRegs +[rax]
- mov r13, gword ptr [rax+0x10]
- ; gcrRegs +[r13]
- cmp byte ptr [r13], r13b
+ jl SHORT G_M58280_IG15
+ mov rcx, gword ptr [rbx+0x18]
+ ; gcrRegs +[rcx]
+ mov rdi, gword ptr [rcx+0x10]
+ ; gcrRegs +[rdi]
+ cmp byte ptr [rdi], dil
test rdx, rdx
- je SHORT G_M58280_IG15
- ;; size=60 bbWeight=4 PerfScore 116.00
-G_M58280_IG09: ; bbWeight=2, gcrefRegs=200C {rdx rbx r13}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs -[rax]
+ je G_M58280_IG16
+ ;; size=63 bbWeight=4 PerfScore 116.00
+G_M58280_IG09: ; bbWeight=2, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rcx]
cmp dword ptr [rdx+0x08], r15d
- jb SHORT G_M58280_IG15
+ jb SHORT G_M58280_IG16
;; size=6 bbWeight=2 PerfScore 8.00
-G_M58280_IG10: ; bbWeight=4, gcrefRegs=200C {rdx rbx r13}, byrefRegs=0040 {rsi}, byref
- cmp dword ptr [r13+0x1C], 0
+G_M58280_IG10: ; bbWeight=4, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ cmp dword ptr [rdi+0x1C], 0
+ jne SHORT G_M58280_IG11
+ mov rax, rdi
+ ; gcrRegs +[rax]
mov edi, r14d
- jne G_M58280_IG03
- lea rcx, bword ptr [r13+0x10]
+ ; gcrRegs -[rdi]
+ mov r14, rax
+ ; gcrRegs +[r14]
+ lea rcx, bword ptr [r14+0x10]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- xor ecx, ecx
- mov dword ptr [r13+0x18], ecx
- mov dword ptr [r13+0x1C], r15d
+ xor eax, eax
+ mov dword ptr [r14+0x18], eax
+ mov dword ptr [r14+0x1C], r15d
jmp G_M58280_IG03
- ;; size=38 bbWeight=4 PerfScore 40.00
-G_M58280_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r13]
+ ;; size=39 bbWeight=4 PerfScore 42.00
+G_M58280_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[r14]
+ mov edi, r14d
+ jmp G_M58280_IG03
+ ;; size=8 bbWeight=2 PerfScore 4.50
+G_M58280_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
; byrRegs -[rsi]
mov eax, ebp
sub eax, edi
;; size=4 bbWeight=1 PerfScore 0.50
-G_M58280_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
+G_M58280_IG13: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
- pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M58280_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M58280_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -188,7 +196,7 @@ G_M58280_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M58280_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58280_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -210,13 +218,13 @@ G_M58280_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M58280_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58280_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 314, prolog size 21, PerfScore 345.25, instruction count 93, allocated bytes for code 314 (MethodHash=bf671c57) for method System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
+Total bytes of code 326, prolog size 19, PerfScore 350.25, instruction count 95, allocated bytes for code 326 (MethodHash=bf671c57) for method System.IO.Compression.DeflateManagedStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -224,16 +232,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0E
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
realworld.run.windows.x64.checked.mch
-35 (-30.97%) : 18178.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
@@ -7,12 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T03] ( 7, 5 ) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 11, 17.04) int -> r8
-; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> r10
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String>
+; V01 arg1 [V01,T04] ( 6, 4.50) int -> rdx single-def
+; V02 loc0 [V02,T00] ( 7, 21 ) int -> r8
+; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> r10
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 6, 6.54) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 5, 10.50) int -> rax "CSE - aggressive"
;
; Lcl frame size = 40
@@ -33,72 +33,50 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov r8d, edx
- test edx, edx
- jl SHORT G_M3357_IG10
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M3357_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, eax
+ jae SHORT G_M3357_IG13
mov r10d, r8d
movzx r10, word ptr [rcx+2*r10+0x0C]
cmp r10d, 32
je SHORT G_M3357_IG08
- ;; size=15 bbWeight=3.96 PerfScore 13.86
-G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 19.00
+G_M3357_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=1.98 PerfScore 2.48
-G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3357_IG11
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M3357_IG08: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc r8d
cmp eax, r8d
jg SHORT G_M3357_IG06
- ;; size=8 bbWeight=3.96 PerfScore 5.94
-G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- jmp SHORT G_M3357_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
- cmp r8d, eax
- jae SHORT G_M3357_IG17
- mov r10d, r8d
- movzx r10, word ptr [rcx+2*r10+0x0C]
- cmp r10d, 32
- je SHORT G_M3357_IG12
- ;; size=20 bbWeight=0.04 PerfScore 0.19
-G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r10d, 9
- jne SHORT G_M3357_IG15
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- cmp eax, r8d
- jg SHORT G_M3357_IG10
- ;; size=8 bbWeight=0.04 PerfScore 0.06
-G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 6.00
+G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
sub eax, edx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, r8d
sub eax, edx
;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M3357_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 113, prolog size 4, PerfScore 30.18, instruction count 40, allocated bytes for code 113 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 78, prolog size 4, PerfScore 33.50, instruction count 28, allocated bytes for code 78 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================
Unwind Info:
-15 (-1.87%) : 24009.dasm - Roslyn.Utilities.EnumerableExtensions+d56`1[System.Canon]:MoveNext():ubyte:this (FullOpts)
@@ -77,7 +77,7 @@ G_M39186_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
cmp edx, 1
je G_M39186_IG23
xor ebx, ebx
- jmp G_M39186_IG36
+ jmp G_M39186_IG38
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M39186_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rcx+0x28], -1
@@ -262,7 +262,7 @@ G_M39186_IG23: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; gcrRegs +[rbx]
xor esi, esi
cmp dword ptr [rcx+0x30], 0
- jle G_M39186_IG30
+ jle G_M39186_IG37
;; size=21 bbWeight=0.50 PerfScore 2.75
G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
@@ -271,10 +271,10 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov r11, gword ptr [rcx+0x20]
; gcrRegs +[r11]
cmp esi, dword ptr [r11+0x10]
- jae G_M39186_IG31
+ jae SHORT G_M39186_IG27
mov r11, gword ptr [r11+0x08]
cmp esi, dword ptr [r11+0x08]
- jae G_M39186_IG32
+ jae SHORT G_M39186_IG26
mov eax, esi
mov rdi, gword ptr [r11+8*rax+0x10]
; gcrRegs +[rdi]
@@ -285,11 +285,36 @@ G_M39186_IG24: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M39186_IG35
- test rbx, rbx
jne SHORT G_M39186_IG28
- ;; size=68 bbWeight=4 PerfScore 85.00
-G_M39186_IG25: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=51 bbWeight=4 PerfScore 80.00
+G_M39186_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rdi]
+ xor ebx, ebx
+ mov rcx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ mov rcx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rcx]
+ jmp G_M39186_IG38
+ ;; size=21 bbWeight=0.50 PerfScore 3.62
+G_M39186_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M39186_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M39186_IG28: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx rdi]
+ test rbx, rbx
+ jne SHORT G_M39186_IG33
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M39186_IG29: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
mov rbx, gword ptr [rbp+0x10]
; gcrRegs +[rbx]
@@ -298,12 +323,19 @@ G_M39186_IG25: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
mov rdx, qword ptr [rdx]
mov rax, qword ptr [rdx+0x38]
test rax, rax
- je SHORT G_M39186_IG33
+ je SHORT G_M39186_IG31
;; size=23 bbWeight=2 PerfScore 20.50
-G_M39186_IG26: ; bbWeight=1.60, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M39186_IG30: ; bbWeight=1.60, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rax
- ;; size=3 bbWeight=1.60 PerfScore 0.40
-G_M39186_IG27: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M39186_IG32
+ ;; size=5 bbWeight=1.60 PerfScore 3.60
+G_M39186_IG31: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov rcx, rax
+ ;; size=18 bbWeight=0.40 PerfScore 0.60
+G_M39186_IG32: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
movsxd rdx, dword ptr [rbx+0x30]
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
@@ -312,7 +344,7 @@ G_M39186_IG27: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
; gcrRegs +[r14]
mov rbx, r14
;; size=15 bbWeight=2 PerfScore 11.00
-G_M39186_IG28: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG33: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r14]
mov r14, gword ptr [rbp+0x10]
; gcrRegs +[r14]
@@ -321,9 +353,18 @@ G_M39186_IG28: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
mov rdx, qword ptr [rdx]
mov r11, qword ptr [rdx+0x30]
test r11, r11
- je SHORT G_M39186_IG34
+ je SHORT G_M39186_IG35
;; size=23 bbWeight=4 PerfScore 41.00
-G_M39186_IG29: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
+G_M39186_IG34: ; bbWeight=3.20, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M39186_IG36
+ ;; size=2 bbWeight=3.20 PerfScore 6.40
+G_M39186_IG35: ; bbWeight=0.80, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r11, rax
+ ;; size=18 bbWeight=0.80 PerfScore 1.20
+G_M39186_IG36: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
mov rcx, rdi
; gcrRegs +[rcx]
call [r11]
@@ -341,7 +382,7 @@ G_M39186_IG29: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000
cmp esi, dword ptr [r14+0x30]
jl G_M39186_IG24
;; size=32 bbWeight=4 PerfScore 37.00
-G_M39186_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M39186_IG37: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
mov r14, gword ptr [rbp+0x10]
; gcrRegs +[r14]
@@ -356,51 +397,12 @@ G_M39186_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov ebx, 1
mov rcx, r14
; gcrRegs +[rcx]
- jmp SHORT G_M39186_IG36
- ;; size=34 bbWeight=0.50 PerfScore 3.12
-G_M39186_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx r14]
- call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M39186_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M39186_IG33: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx rdi]
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov rcx, rax
- jmp G_M39186_IG27
- ;; size=23 bbWeight=0.40 PerfScore 1.40
-G_M39186_IG34: ; bbWeight=0.80, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r14]
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r11, rax
- jmp SHORT G_M39186_IG29
- ;; size=20 bbWeight=0.80 PerfScore 2.80
-G_M39186_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi r14]
- mov r14, gword ptr [rbp+0x10]
- ; gcrRegs +[r14]
- xor ebx, ebx
- mov rcx, r14
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx r14]
- ; gcr arg pop 0
- mov rcx, gword ptr [rbp+0x10]
- ; gcrRegs +[rcx]
- ;; size=19 bbWeight=0.50 PerfScore 2.75
-G_M39186_IG36: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 2.12
+G_M39186_IG38: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
mov eax, ebx
;; size=2 bbWeight=1 PerfScore 0.25
-G_M39186_IG37: ; bbWeight=1, epilog, nogc, extend
+G_M39186_IG39: ; bbWeight=1, epilog, nogc, extend
add rsp, 64
pop rbx
pop rsi
@@ -409,7 +411,7 @@ G_M39186_IG37: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M39186_IG38: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M39186_IG40: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[rcx]
; GC ptr vars +{V03 V23}
push rbp
@@ -422,9 +424,9 @@ G_M39186_IG38: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x60]
;; size=23 bbWeight=0 PerfScore 0.00
-G_M39186_IG39: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39186_IG41: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x30], 0
- je SHORT G_M39186_IG40
+ je SHORT G_M39186_IG42
mov rcx, gword ptr [rbp-0x30]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -433,10 +435,10 @@ G_M39186_IG39: ; bbWeight=0, gcVars=0000000000800001 {V00 V03}, gcrefRegs
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M39186_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M39186_IG41: ; bbWeight=0, funclet epilog, nogc, extend
+G_M39186_IG43: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
@@ -445,7 +447,7 @@ G_M39186_IG41: ; bbWeight=0, funclet epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0 PerfScore 0.00
-G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M39186_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
push r14
push rdi
@@ -456,7 +458,7 @@ G_M39186_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x60]
;; size=23 bbWeight=0 PerfScore 0.00
-G_M39186_IG43: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39186_IG45: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
call [<unknown method>]
@@ -464,7 +466,7 @@ G_M39186_IG43: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000
; gcr arg pop 0
nop
;; size=11 bbWeight=0 PerfScore 0.00
-G_M39186_IG44: ; bbWeight=0, funclet epilog, nogc, extend
+G_M39186_IG46: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48
...
-2 (-0.08%) : 2140.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -28,19 +28,19 @@
; V17 loc13 [V17,T42] ( 6, 12 ) int -> r10
; V18 loc14 [V18,T43] ( 3, 12 ) ref -> rax class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [rsp+0x50] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T20] ( 3, 24 ) ref -> [rsp+0x50] class-hnd spill-single-def <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
; V22 OutArgs [V22 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T72] ( 3, 2 ) ref -> rdx
;* V24 tmp2 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> rdx
+; V25 tmp3 [V25,T21] ( 3, 24 ) ref -> rdx
;* V26 tmp4 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V27 tmp5 [V27,T37] ( 2, 16 ) int -> rdx "impAppendStmt"
;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp7 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp8 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp9 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp10 [V32,T25] ( 3, 24 ) int -> [rsp+0xAC] spill-single-def "Inlining Arg"
+; V32 tmp10 [V32,T24] ( 3, 24 ) int -> [rsp+0xAC] spill-single-def "Inlining Arg"
; V33 tmp11 [V33,T34] ( 2, 16 ) byref -> [rsp+0x48] spill-single-def "Inlining Arg"
;* V34 tmp12 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -51,7 +51,7 @@
;* V40 tmp18 [V40,T59] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V41 tmp19 [V41,T60] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V42 tmp20 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V43 tmp21 [V43,T20] ( 6, 24 ) int -> [rsp+0xA8] spill-single-def "Inline return value spill temp"
+; V43 tmp21 [V43,T30] ( 5, 20 ) int -> [rsp+0xA8] spill-single-def "Inline return value spill temp"
;* V44 tmp22 [V44 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
;* V45 tmp23 [V45 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
;* V46 tmp24 [V46 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
@@ -74,13 +74,13 @@
;* V63 tmp41 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V64 tmp42 [V64,T51] ( 2, 8 ) byref -> [rsp+0x40] spill-single-def "Inlining Arg"
;* V65 tmp43 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V66 tmp44 [V66,T23] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <ushort[]>
-; V67 tmp45 [V67,T26] ( 3, 24 ) int -> rcx "Inlining Arg"
-; V68 tmp46 [V68,T27] ( 3, 24 ) int -> rdx "Inlining Arg"
+; V66 tmp44 [V66,T22] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <ushort[]>
+; V67 tmp45 [V67,T25] ( 3, 24 ) int -> rcx "Inlining Arg"
+; V68 tmp46 [V68,T26] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V69 tmp47 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V70 tmp48 [V70,T35] ( 2, 16 ) ref -> r8 class-hnd "Inlining Arg" <ushort[]>
; V71 tmp49 [V71,T38] ( 2, 16 ) int -> r10 "Inlining Arg"
-; V72 tmp50 [V72,T28] ( 3, 24 ) int -> r9 "Inlining Arg"
+; V72 tmp50 [V72,T27] ( 3, 24 ) int -> r9 "Inlining Arg"
;* V73 tmp51 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V74 tmp52 [V74,T15] ( 8, 40 ) int -> r12 "Inlining Arg"
; V75 tmp53 [V75,T63] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" <ushort[]>
@@ -97,14 +97,14 @@
;* V86 tmp64 [V86 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V87 tmp65 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V88 tmp66 [V88,T04] ( 8, 256 ) int -> r12 "Inlining Arg"
-; V89 tmp67 [V89,T24] ( 3, 24 ) ref -> rcx class-hnd "Inline stloc first use temp" <ushort[]>
-; V90 tmp68 [V90,T29] ( 3, 24 ) int -> r8 "Inline stloc first use temp"
+; V89 tmp67 [V89,T23] ( 3, 24 ) ref -> rcx class-hnd "Inline stloc first use temp" <ushort[]>
+; V90 tmp68 [V90,T28] ( 3, 24 ) int -> r8 "Inline stloc first use temp"
;* V91 tmp69 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V92 tmp70 [V92 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V93 tmp71 [V93 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
; V94 tmp72 [V94,T65] ( 2, 5 ) byref -> rbp single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V95 tmp73 [V95,T66] ( 2, 5 ) int -> r14 "field V03._length (fldOffset=0x8)" P-INDEP
-; V96 tmp74 [V96,T30] ( 5, 20 ) byref -> [rsp+0x38] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp74 [V96,T29] ( 5, 20 ) byref -> [rsp+0x38] "field V09._reference (fldOffset=0x0)" P-INDEP
; V97 tmp75 [V97,T19] ( 7, 30 ) int -> [rsp+0xA0] "field V09._length (fldOffset=0x8)" P-INDEP
;* V98 tmp76 [V98 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V99 tmp77 [V99 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
@@ -295,9 +295,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
jl G_M4730_IG61
cmp eax, dword ptr [rsp+0x9C]
ja G_M4730_IG75
- mov ecx, eax
- not ecx
- shr ecx, 31
+ mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
mov rcx, rbx
@@ -312,7 +310,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- ;; size=233 bbWeight=4 PerfScore 214.00
+ ;; size=231 bbWeight=4 PerfScore 211.00
G_M4730_IG08: ; bbWeight=4, isz, extend
jae G_M4730_IG63
mov ecx, r13d
@@ -516,7 +514,7 @@ G_M4730_IG28: ; bbWeight=16, gcVars=00000000000000000000000000000000 {},
je G_M4730_IG68
jmp SHORT G_M4730_IG28
;; size=36 bbWeight=16 PerfScore 132.00
-G_M4730_IG29: ; bbWeight=1, gcVars=00000000000000000000000040000000 {V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG29: ; bbWeight=1, gcVars=00000000000000000000000020000000 {V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; GC ptr vars +{V96}
mov dword ptr [rsp+0xC0], r8d
mov dword ptr [rsp+0xB8], edx
@@ -555,7 +553,7 @@ G_M4730_IG30: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
mov edx, r9d
mov dword ptr [rsp+0xA0], edx
;; size=108 bbWeight=2 PerfScore 33.00
-G_M4730_IG31: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=4, gcVars=00000000000000000000000020000000 {V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs -[r10]
; GC ptr vars -{V64}
cmp r13d, r12d
@@ -582,7 +580,7 @@ G_M4730_IG31: ; bbWeight=4, gcVars=00000000000000000000000040000000 {V96}
test r15, r15
je SHORT G_M4730_IG34
;; size=71 bbWeight=4 PerfScore 65.00
-G_M4730_IG32: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V96}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG32: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V96}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[rdx r12]
mov r12d, dword ptr [rsp+0xA0]
test r12d, r12d
@@ -618,7 +616,7 @@ G_M4730_IG33: ; bbWeight=2, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRe
; gcrRegs +[r12]
mov rax, gword ptr [rsp+0x60]
;; size=51 bbWeight=2 PerfScore 17.00
-G_M4730_IG34: ; bbWeight=4, gcVars=00000000000000000000000040010000 {V13 V96}, gcrefRegs=90C9 {rax rbx rsi rdi r12 r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M4730_IG34: ; bbWeight=4, gcVars=00000000000000000000000020010000 {V13 V96}, gcrefRegs=90C9 {rax rbx rsi rdi r12 r15}, byrefRegs=0020 {rbp}, gcvars, byref
; gcrRegs -[rdx]
; GC ptr vars -{V12}
test r12, r12
@@ -637,7 +635,7 @@ G_M4730_IG35: ; bbWeight=2, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRe
; GC ptr vars +{V12}
jne G_M4730_IG43
;; size=19 bbWeight=2 PerfScore 8.00
-G_M4730_IG36: ; bbWeight=4, gcVars=00000000000000000000000040030000 {V12 V13 V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M4730_IG36: ; bbWeight=4, gcVars=00000000000000000000000020030000 {V12 V13 V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
; gcrRegs -[rax]
mov rdx, gword ptr [rsp+0x58]
; gcrRegs +[rdx]
@@ -739,7 +737,7 @@ G_M4730_IG38: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g
add dword ptr [rbx+0x18], r12d
jmp SHORT G_M4730_IG42
;; size=45 bbWeight=2 PerfScore 27.50
-G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000040010000 {V13 V96}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M4730_IG39: ; bbWeight=2, gcVars=00000000000000000000000020010000 {V13 V96}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
; gcrRegs +[rax]
; GC ptr vars +{V13 V16 V96}
mov gword ptr [rsp+0x60], rax
@@ -770,7 +768,7 @@ G_M4730_IG42: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcr arg pop 0
jmp G_M4730_IG06
;; size=14 bbWeight=16 PerfScore 84.00
-G_M4730_IG43: ; bbWeight=8, gcVars=00000000000000000000000040030000 {V12 V13 V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG43: ; bbWeight=8, gcVars=00000000000000000000000020030000 {V12 V13 V96}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; GC ptr vars +{V12 V13 V16 V17 V96}
mov rdx, gword ptr [rsp+0x58]
; gcrRegs +[rdx]
@@ -807,7 +805,7 @@ G_M4730_IG43: ; bbWeight=8, gcVars=00000000000000000000000040030000 {V12
; GC ptr vars +{V12}
mov rax, gword ptr [rsp+0x50]
;; size=107 bbWeight=8 PerfScore 142.00
-G_M4730_IG44: ; bbWeight=8, gcVars=00000000000000000000000000220000 {V12 V20}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG44: ; bbWeight=8, gcVars=00000000000000000000000000120000 {V12 V20}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[rdx]
mov rcx, rax
; gcrRegs +[rcx]
@@ -1144,7 +1142,7 @@ G_M4730_IG75: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 2489, prolog size 56, PerfScore 5564.58, instruction count 583, allocated bytes for code 2489 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
+Total bytes of code 2487, prolog size 56, PerfScore 5561.58, instruction count 581, allocated bytes for code 2487 (MethodHash=4203ed85) for method System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
; ============================================================
Unwind Info:
+5 (+1.71%) : 28333.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int
@@ -10,15 +10,15 @@
;
;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T03] ( 6, 10 ) ref -> rsi class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]>
-; V04 loc0 [V04 ] ( 8, 13.50) struct ( 8) [rsp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
+; V04 loc0 [V04 ] ( 9, 14 ) struct ( 8) [rsp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[int]>
; V05 loc1 [V05,T07] ( 5, 8.50) ref -> r14 ld-addr-op class-hnd <System.__Canon>
;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
; V07 loc3 [V07,T00] ( 6, 18.50) int -> r15
; V08 loc4 [V08,T04] ( 4, 12 ) ref -> r13 class-hnd <System.__Canon>
; V09 loc5 [V09,T09] ( 4, 8 ) int -> rax
-; V10 loc6 [V10,T02] ( 6, 12.50) int -> r15
+; V10 loc6 [V10,T01] ( 7, 17 ) int -> r15
; V11 loc7 [V11,T11] ( 3, 6 ) ref -> r13 class-hnd <System.__Canon>
; V12 loc8 [V12,T12] ( 3, 6 ) int -> rax
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -28,7 +28,7 @@
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp5 [V18,T05] ( 4, 8 ) ref -> rdi single-def "field V01.array (fldOffset=0x0)" P-INDEP
; V19 tmp6 [V19,T10] ( 6, 7.50) ubyte -> [rsp+0x28] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V20 tmp7 [V20,T06] ( 5, 9 ) int -> [rsp+0x2C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
+; V20 tmp7 [V20,T06] ( 6, 9.50) int -> [rsp+0x2C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP
; V23 cse0 [V23,T08] ( 5, 8.50) int -> rbp "CSE - aggressive"
@@ -162,11 +162,12 @@ G_M52223_IG15: ; bbWeight=0.50, epilog, nogc, extend
;; size=15 bbWeight=0.50 PerfScore 2.38
G_M52223_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
xor r15d, r15d
- jmp SHORT G_M52223_IG19
- ;; size=5 bbWeight=0.50 PerfScore 1.12
+ cmp r15d, dword ptr [rsp+0x2C]
+ jge SHORT G_M52223_IG19
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M52223_IG17: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp r15d, ebp
- jae SHORT G_M52223_IG24
+ jae SHORT G_M52223_IG23
mov edx, r15d
mov r13, gword ptr [rdi+8*rdx+0x10]
; gcrRegs +[r13]
@@ -191,20 +192,18 @@ G_M52223_IG17: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
test eax, eax
je SHORT G_M52223_IG18
cmp eax, 3
- jne SHORT G_M52223_IG22
+ jne SHORT G_M52223_IG21
;; size=49 bbWeight=2 PerfScore 36.00
-G_M52223_IG18: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M52223_IG18: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
inc r15d
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M52223_IG19: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp r15d, dword ptr [rsp+0x2C]
jl SHORT G_M52223_IG17
- ;; size=7 bbWeight=4 PerfScore 12.00
-G_M52223_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 13.00
+G_M52223_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi rdi r14]
mov rax, qword ptr [rsp+0x28]
;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M52223_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -215,10 +214,10 @@ G_M52223_IG21: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M52223_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M52223_IG23: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG22: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -229,13 +228,13 @@ G_M52223_IG23: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M52223_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52223_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 292, prolog size 21, PerfScore 152.50, instruction count 117, allocated bytes for code 292 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 297, prolog size 21, PerfScore 153.50, instruction count 118, allocated bytes for code 297 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================
Unwind Info:
+10 (+1.81%) : 35075.dasm - System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)
@@ -84,14 +84,14 @@ G_M55093_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs +[r14]
mov r15d, dword ptr [rdi+0x08]
test r15d, r15d
- je G_M55093_IG14
+ je G_M55093_IG16
;; size=118 bbWeight=1 PerfScore 16.75
G_M55093_IG03: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, gword ptr [rsi+0x50]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M55093_IG14
+ je G_M55093_IG16
mov rcx, gword ptr [rcx+0x08]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
@@ -108,9 +108,9 @@ G_M55093_IG04: ; bbWeight=0.50, gcVars=0000000000000100 {V04}, gcrefRegs=
; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
- je G_M55093_IG13
+ je G_M55093_IG15
;; size=24 bbWeight=0.50 PerfScore 2.38
-G_M55093_IG05: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M55093_IG05: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -121,9 +121,9 @@ G_M55093_IG05: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000
; gcrRegs +[rsi]
xor r13d, r13d
test r15d, r15d
- jle SHORT G_M55093_IG07
- ;; size=28 bbWeight=4 PerfScore 24.00
-G_M55093_IG06: ; bbWeight=16, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ jle G_M55093_IG09
+ ;; size=32 bbWeight=4 PerfScore 24.00
+G_M55093_IG06: ; bbWeight=16, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov edx, r13d
mov rdx, gword ptr [rdi+8*rdx+0x10]
@@ -136,41 +136,12 @@ G_M55093_IG06: ; bbWeight=16, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M55093_IG11
- inc r13d
- cmp r15d, r13d
- jg SHORT G_M55093_IG06
- ;; size=37 bbWeight=16 PerfScore 184.00
-G_M55093_IG07: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+ je G_M55093_IG13
+ ;; size=33 bbWeight=16 PerfScore 160.00
+G_M55093_IG07: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- mov rcx, gword ptr [rbp-0x38]
- ; gcrRegs +[rcx]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M55093_IG05
- ;; size=21 bbWeight=4 PerfScore 22.00
-G_M55093_IG08: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- jmp G_M55093_IG13
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M55093_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- mov ecx, 8
- call [System.ThrowHelper:ThrowNotSupportedException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M55093_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M55093_IG11: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rdi r14]
test r14, r14
- jne SHORT G_M55093_IG12
+ jne SHORT G_M55093_IG08
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs -[r14] +[rax]
@@ -192,9 +163,9 @@ G_M55093_IG11: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=64 bbWeight=2 PerfScore 14.00
-G_M55093_IG12: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M55093_IG08: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
cmp r13d, dword ptr [rbx+0x08]
- jae SHORT G_M55093_IG10
+ jae SHORT G_M55093_IG12
mov ecx, r13d
mov rsi, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rsi]
@@ -205,7 +176,7 @@ G_M55093_IG12: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M55093_IG09
+ jne SHORT G_M55093_IG11
mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -222,9 +193,43 @@ G_M55093_IG12: ; bbWeight=2, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000
call [rax+0x08]<unknown method>
; gcrRegs -[rcx rsi r8]
; gcr arg pop 0
- jmp G_M55093_IG07
- ;; size=75 bbWeight=2 PerfScore 55.50
-G_M55093_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ ;; size=70 bbWeight=2 PerfScore 51.50
+G_M55093_IG09: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp-0x38]
+ ; gcrRegs +[rcx]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M55093_IG05
+ ;; size=25 bbWeight=4 PerfScore 22.00
+G_M55093_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rdi]
+ jmp SHORT G_M55093_IG15
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M55093_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
+ mov ecx, 8
+ call [System.ThrowHelper:ThrowNotSupportedException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M55093_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M55093_IG13: ; bbWeight=16, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi rdi r14]
+ inc r13d
+ cmp r15d, r13d
+ jg G_M55093_IG06
+ ;; size=12 bbWeight=16 PerfScore 24.00
+G_M55093_IG14: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M55093_IG09
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M55093_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
@@ -234,11 +239,11 @@ G_M55093_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=17 bbWeight=0.50 PerfScore 2.12
-G_M55093_IG14: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M55093_IG16: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M55093_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M55093_IG17: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
@@ -249,7 +254,7 @@ G_M55093_IG15: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.75
-G_M55093_IG16: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M55093_IG18: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[rax r14]
; GC ptr vars +{V04 V08}
push rbp
@@ -264,9 +269,9 @@ G_M55093_IG16: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=000
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x60]
;; size=27 bbWeight=0 PerfScore 0.00
-G_M55093_IG17: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55093_IG19: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x38], 0
- je SHORT G_M55093_IG18
+ je SHORT G_M55093_IG20
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -275,10 +280,10 @@ G_M55093_IG17: ; bbWeight=0, gcVars=0000000000000100 {V04}, gcrefRegs=000
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M55093_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55093_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M55093_IG19: ; bbWeight=0, funclet epilog, nogc, extend
+G_M55093_IG21: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
@@ -290,7 +295,7 @@ G_M55093_IG19: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 554, prolog size 29, PerfScore 340.75, instruction count 144, allocated bytes for code 554 (MethodHash=c6d028ca) for method System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)
+Total bytes of code 564, prolog size 29, PerfScore 344.75, instruction count 144, allocated bytes for code 564 (MethodHash=c6d028ca) for method System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -331,4 +336,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M55093_IG04..G_M55093_IG13) handled by [G_M55093_IG16..END) (fault)
+EH#0: try [G_M55093_IG04..G_M55093_IG15) handled by [G_M55093_IG18..END) (fault)
+12 (+3.32%) : 2931.dasm - System.String:Concat(System.String[]):System.String (FullOpts)
@@ -12,7 +12,7 @@
; V01 loc0 [V01,T12] ( 5, 28 ) long -> rcx
; V02 loc1 [V02,T13] ( 5, 24 ) int -> rdi
; V03 loc2 [V03,T11] ( 5, 28.50) ref -> rbp class-hnd exact <System.String>
-; V04 loc3 [V04,T03] ( 8, 50 ) int -> r14
+; V04 loc3 [V04,T04] ( 8, 50 ) int -> r14
; V05 loc4 [V05,T00] ( 5, 68 ) int -> rax
; V06 loc5 [V06,T07] ( 3, 40 ) ref -> rdx class-hnd exact <System.String>
; V07 loc6 [V07,T01] ( 5, 68 ) int -> r15
@@ -28,7 +28,7 @@
;* V17 tmp7 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V18 tmp8 [V18,T17] ( 4, 5 ) ref -> rax "Single return block return value"
; V19 tmp9 [V19,T15] ( 2, 16 ) ref -> rbx single-def "arg temp"
-; V20 cse0 [V20,T04] ( 6, 49 ) int -> rsi "CSE - aggressive"
+; V20 cse0 [V20,T03] ( 8, 57 ) int -> rsi "CSE - aggressive"
; V21 cse1 [V21,T06] ( 5, 40 ) int -> r12 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -53,10 +53,12 @@ G_M46295_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp esi, 1
jle G_M46295_IG14
;; size=21 bbWeight=8 PerfScore 36.00
-G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M46295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor ecx, ecx
xor eax, eax
- ;; size=4 bbWeight=4 PerfScore 2.00
+ test esi, esi
+ jle SHORT G_M46295_IG07
+ ;; size=8 bbWeight=4 PerfScore 7.00
G_M46295_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edx, eax
mov rdx, gword ptr [rbx+8*rdx+0x10]
@@ -88,7 +90,9 @@ G_M46295_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rbp]
xor r14d, r14d
xor r15d, r15d
- ;; size=39 bbWeight=4 PerfScore 19.00
+ test esi, esi
+ jle G_M46295_IG13
+ ;; size=47 bbWeight=4 PerfScore 24.00
G_M46295_IG08: ; bbWeight=16, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov ecx, r15d
@@ -222,7 +226,7 @@ G_M46295_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 361, prolog size 19, PerfScore 521.50, instruction count 110, allocated bytes for code 361 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
+Total bytes of code 373, prolog size 19, PerfScore 531.50, instruction count 114, allocated bytes for code 373 (MethodHash=82bc4b28) for method System.String:Concat(System.String[]):System.String (FullOpts)
; ============================================================
Unwind Info:
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.x64.checked.mch |
21 |
8 |
9 |
4 |
-287 |
+283 |
benchmarks.run_pgo.windows.x64.checked.mch |
323 |
225 |
69 |
29 |
-8,399 |
+2,081 |
benchmarks.run_tiered.windows.x64.checked.mch |
7 |
1 |
4 |
2 |
-15 |
+112 |
coreclr_tests.run.windows.x64.checked.mch |
311 |
116 |
135 |
60 |
-1,246 |
+1,093 |
libraries.crossgen2.windows.x64.checked.mch |
1 |
1 |
0 |
0 |
-1 |
+0 |
libraries.pmi.windows.x64.checked.mch |
181 |
46 |
89 |
46 |
-458 |
+1,496 |
libraries_tests.run.windows.x64.Release.mch |
994 |
500 |
281 |
213 |
-6,901 |
+3,073 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
303 |
80 |
71 |
152 |
-1,665 |
+967 |
realworld.run.windows.x64.checked.mch |
26 |
6 |
13 |
7 |
-128 |
+142 |
smoke_tests.nativeaot.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2,167 |
983 |
671 |
513 |
-19,100 |
+9,247 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x64.checked.mch |
27,917 |
4 |
27,913 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch |
102,635 |
50,161 |
52,474 |
19 (0.02%) |
19 (0.02%) |
benchmarks.run_tiered.windows.x64.checked.mch |
54,333 |
36,871 |
17,462 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch |
573,722 |
341,128 |
232,594 |
8 (0.00%) |
8 (0.00%) |
libraries.crossgen2.windows.x64.checked.mch |
2,104 |
0 |
2,104 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.x64.checked.mch |
309,148 |
6 |
309,142 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.windows.x64.Release.mch |
671,224 |
476,124 |
195,100 |
111 (0.02%) |
111 (0.02%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
320,489 |
21,924 |
298,565 |
0 (0.00%) |
0 (0.00%) |
realworld.run.windows.x64.checked.mch |
36,887 |
3 |
36,884 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.windows.x64.checked.mch |
67 |
0 |
67 |
0 (0.00%) |
0 (0.00%) |
|
2,098,526 |
926,221 |
1,172,305 |
138 (0.01%) |
138 (0.01%) |
jit-analyze output
benchmarks.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8737750 (overridden on cmd)
Total bytes of diff: 8737746 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 21 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35778033 (overridden on cmd)
Total bytes of diff: 35771715 (overridden on cmd)
Total bytes of delta: -6318 (-0.02 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 77 unchanged.
benchmarks.run_tiered.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12549088 (overridden on cmd)
Total bytes of diff: 12549185 (overridden on cmd)
Total bytes of delta: 97 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 7 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 392964649 (overridden on cmd)
Total bytes of diff: 392964496 (overridden on cmd)
Total bytes of delta: -153 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 100 unchanged.
libraries.crossgen2.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 214877 (overridden on cmd)
Total bytes of diff: 214876 (overridden on cmd)
Total bytes of delta: -1 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61646281 (overridden on cmd)
Total bytes of diff: 61647319 (overridden on cmd)
Total bytes of delta: 1038 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 77 unchanged.
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 278843071 (overridden on cmd)
Total bytes of diff: 278839243 (overridden on cmd)
Total bytes of delta: -3828 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 87 unchanged.
librariestestsnotieredcompilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 137561184 (overridden on cmd)
Total bytes of diff: 137560486 (overridden on cmd)
Total bytes of delta: -698 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 79 unchanged.
realworld.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14184922 (overridden on cmd)
Total bytes of diff: 14184936 (overridden on cmd)
Total bytes of delta: 14 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 26 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).