Assembly Diffs
linux arm
Diffs are based on 1,450,643 contexts (345,734 MinOpts, 1,104,909 FullOpts).
MISSED contexts: base: 53,862 (3.58%), diff: 54,343 (3.61%)
Overall (-4,886 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
13,712,182 |
-38 |
| coreclr_tests.run.linux.arm.checked.mch |
321,358,662 |
-3,940 |
| libraries.pmi.linux.arm.checked.mch |
49,904,152 |
-38 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
94,495,714 |
-776 |
| realworld.run.linux.arm.checked.mch |
13,599,632 |
-94 |
FullOpts (-4,886 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
13,399,606 |
-38 |
| coreclr_tests.run.linux.arm.checked.mch |
108,923,712 |
-3,940 |
| libraries.pmi.linux.arm.checked.mch |
49,797,928 |
-38 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
84,465,944 |
-776 |
| realworld.run.linux.arm.checked.mch |
13,164,560 |
-94 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-38 (-18.63%) : 2545.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
@@ -12,27 +12,27 @@
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T00] ( 4, 6 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.String>
-;* V06 tmp3 [V06,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp3 [V06,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T04] ( 2, 2 ) int -> r5 "Inlining Arg"
-; V11 tmp8 [V11,T02] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
+; V10 tmp7 [V10,T03] ( 2, 2 ) int -> r5 "Inlining Arg"
+; V11 tmp8 [V11,T01] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V16 tmp13 [V16,T05] ( 3, 1.50) int -> r0 "Inline return value spill temp"
-; V17 tmp14 [V17,T01] ( 3, 3 ) int -> r0 "Inlining Arg"
-; V18 tmp15 [V18,T06] ( 2, 1 ) byref -> r4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp16 [V19,T08] ( 2, 1 ) int -> r5 "field V07._length (fldOffset=0x4)" P-INDEP
-; V20 tmp17 [V20,T07] ( 2, 1 ) byref -> r4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp18 [V21,T09] ( 2, 1 ) int -> r5 "field V08._length (fldOffset=0x4)" P-INDEP
+;* V16 tmp13 [V16,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V17 tmp14 [V17,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V18 tmp15 [V18,T04] ( 2, 1 ) byref -> r4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp16 [V19,T06] ( 2, 1 ) int -> r5 "field V07._length (fldOffset=0x4)" P-INDEP
+; V20 tmp17 [V20,T05] ( 2, 1 ) byref -> r4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp18 [V21,T07] ( 2, 1 ) int -> r5 "field V08._length (fldOffset=0x4)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V24 tmp21 [V24,T03] ( 2, 2 ) ref -> r3 single-def "argument with side effect"
+; V24 tmp21 [V24,T02] ( 2, 2 ) ref -> r3 single-def "argument with side effect"
;
; Lcl frame size = 16
@@ -96,7 +96,7 @@ G_M29212_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne SHORT G_M29212_IG12
+ bne SHORT G_M29212_IG11
;; size=18 bbWeight=0.50 PerfScore 3.00
G_M29212_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
@@ -110,28 +110,14 @@ G_M29212_IG08: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M29212_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- vcvt.d2i s8, d0
- vmov.f2i r0, s8
- cmp r0, 1
- ble SHORT G_M29212_IG10
- b SHORT G_M29212_IG11
- ;; size=38 bbWeight=0.50 PerfScore 6.00
-G_M29212_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29212_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M29212_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M29212_IG10: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M29212_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M29212_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 107
@@ -141,7 +127,7 @@ G_M29212_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
b SHORT G_M29212_IG07
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 10, PerfScore 37.50, instruction count 71, allocated bytes for code 204 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
+; Total bytes of code 166, prolog size 10, PerfScore 31.50, instruction count 59, allocated bytes for code 166 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 102 (0x00066) Actual length = 204 (0x0000cc)
+ Function Length : 83 (0x00053) Actual length = 166 (0x0000a6)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm.checked.mch
-34 (-32.69%) : 413885.dasm - Test10w5d.testout1:Func06633():double (FullOpts)
@@ -16,36 +16,24 @@
;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V07 tmp5 [V07,T01] ( 2, 4 ) double -> f0:f1 "Inlining Arg"
-; V08 tmp6 [V08,T02] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V09 rat0 [V09,T00] ( 3, 6 ) int -> r4 "ReplaceWithLclVar is creating a new local variable"
-; V10 rat1 [V10 ] ( 1, 2 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V11 rat2 [V11,T03] ( 2, 3 ) int -> r0 "field V10.lo (fldOffset=0x0)" P-INDEP
-; V12 rat3 [V12,T04] ( 2, 3 ) int -> r1 "field V10.hi (fldOffset=0x4)" P-INDEP
+; V08 rat0 [V08,T00] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M34134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M34134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r0, [r0]
+ asrs r1, r0, 31
movw r3, 0xd1ff
movt r3, 0xd1ff
- ldr r4, [r3]
- asrs r5, r4, 31
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBL2LNG_OVF
- subs r0, r4, r0
- sbc r1, r5, r1
+ movs r2, 0
+ subs r0, r0, r3
+ sbcs r1, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_LNG2DBL
@@ -55,12 +43,12 @@ G_M34134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movt r3, 0xd1ff
vmov.i2d d4, r2, r3
vdiv d0, d0, d4
- ;; size=92 bbWeight=1 PerfScore 26.00
+ ;; size=60 bbWeight=1 PerfScore 18.00
G_M34134_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 104, prolog size 8, PerfScore 29.00, instruction count 29, allocated bytes for code 104 (MethodHash=ea597aa9) for method Test_10w5d.testout1:Func_0_6_6_3_3():double (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 21.00, instruction count 21, allocated bytes for code 70 (MethodHash=ea597aa9) for method Test_10w5d.testout1:Func_0_6_6_3_3():double (FullOpts)
; ============================================================
Unwind Info:
@@ -72,11 +60,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 104 (0x000068)
+ Function Length : 35 (0x00023) Actual length = 70 (0x000046)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-34 (-32.69%) : 407604.dasm - Test10w5d.testout1:Func06633():double (FullOpts)
@@ -17,36 +17,24 @@
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V08 tmp5 [V08,T01] ( 2, 4 ) double -> f0:f1 "Inlining Arg"
-; V09 tmp6 [V09,T02] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V10 rat0 [V10,T00] ( 3, 6 ) int -> r4 "ReplaceWithLclVar is creating a new local variable"
-; V11 rat1 [V11 ] ( 1, 2 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V12 rat2 [V12,T03] ( 2, 3 ) int -> r0 "field V11.lo (fldOffset=0x0)" P-INDEP
-; V13 rat3 [V13,T04] ( 2, 3 ) int -> r1 "field V11.hi (fldOffset=0x4)" P-INDEP
+; V09 rat0 [V09,T00] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M34134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M34134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r0, [r0]
+ asrs r1, r0, 31
movw r3, 0xd1ff
movt r3, 0xd1ff
- ldr r4, [r3]
- asrs r5, r4, 31
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBL2LNG_OVF
- subs r0, r4, r0
- sbc r1, r5, r1
+ movs r2, 0
+ subs r0, r0, r3
+ sbcs r1, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_LNG2DBL
@@ -56,12 +44,12 @@ G_M34134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movt r3, 0xd1ff
vmov.i2d d4, r2, r3
vdiv d0, d0, d4
- ;; size=92 bbWeight=1 PerfScore 26.00
+ ;; size=60 bbWeight=1 PerfScore 18.00
G_M34134_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 104, prolog size 8, PerfScore 29.00, instruction count 29, allocated bytes for code 104 (MethodHash=ea597aa9) for method Test_10w5d.testout1:Func_0_6_6_3_3():double (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 21.00, instruction count 21, allocated bytes for code 70 (MethodHash=ea597aa9) for method Test_10w5d.testout1:Func_0_6_6_3_3():double (FullOpts)
; ============================================================
Unwind Info:
@@ -73,11 +61,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 104 (0x000068)
+ Function Length : 35 (0x00023) Actual length = 70 (0x000046)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-44 (-25.88%) : 415189.dasm - Test10w5d.testout1:Func01113():ulong (FullOpts)
@@ -22,47 +22,32 @@
;* V11 tmp9 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V12 tmp10 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V13 tmp11 [V13 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V14 tmp12 [V14,T01] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V15 cse0 [V15,T05] ( 2, 2 ) double -> f16:f17 "CSE - aggressive"
-;* V16 rat0 [V16 ] ( 0, 0 ) int -> zero-ref "field V00.lo (fldOffset=0x0)" P-INDEP
-;* V17 rat1 [V17 ] ( 0, 0 ) int -> zero-ref "field V00.hi (fldOffset=0x4)" P-INDEP
-; V18 rat2 [V18,T06] ( 2, 2 ) int -> r0 "field V13.lo (fldOffset=0x0)" P-INDEP
-; V19 rat3 [V19,T02] ( 3, 3 ) int -> r1 "field V13.hi (fldOffset=0x4)" P-INDEP
-; V20 rat4 [V20 ] ( 1, 2 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V21 rat5 [V21,T03] ( 2, 3 ) int -> r4 "field V20.lo (fldOffset=0x0)" P-INDEP
-; V22 rat6 [V22,T04] ( 2, 3 ) int -> r5 "field V20.hi (fldOffset=0x4)" P-INDEP
-; V23 rat7 [V23,T00] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V14 cse0 [V14,T02] ( 2, 2 ) double -> f0:f1 "CSE - aggressive"
+;* V15 rat0 [V15 ] ( 0, 0 ) int -> zero-ref "field V00.lo (fldOffset=0x0)" P-INDEP
+;* V16 rat1 [V16 ] ( 0, 0 ) int -> zero-ref "field V00.hi (fldOffset=0x4)" P-INDEP
+; V17 rat2 [V17,T03] ( 2, 2 ) int -> r0 "field V13.lo (fldOffset=0x0)" P-INDEP
+; V18 rat3 [V18,T01] ( 3, 3 ) int -> r1 "field V13.hi (fldOffset=0x4)" P-INDEP
+; V19 rat4 [V19,T00] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M4446_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r11,lr}
- vpush {d8-d8}
- sub sp, 8
- add r11, sp, 24
- ;; size=14 bbWeight=1 PerfScore 4.00
-G_M4446_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ add r11, sp, 8
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M4446_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r2, 0xd1ff
movt r2, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- vmov.i2d d8, r2, r3
- mov r2, 0x40000000
- movw r3, 0xd1ff
- movt r3, 0xd1ff
vmov.i2d d0, r2, r3
+ movs r4, 0
+ movw r5, 0xd1ff
+ movt r5, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBL2LNG_OVF
- mov r4, r0
- mov r5, r1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vldr d0, [r3]
- vsub d0, d8, d0
+ vldr d4, [r3]
+ vsub d0, d0, d4
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -78,18 +63,17 @@ G_M4446_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
adcs r1, r5
movw r3, 0xd1ff
movt r3, 0xd1ff
- movs r2, 0
+ ;; size=92 bbWeight=1 PerfScore 27.00
+G_M4446_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
adds r0, r0, r3
- adcs r1, r2
+ adcs r1, r4
cmp r1, 0
- blt SHORT G_M4446_IG04
- ;; size=132 bbWeight=1 PerfScore 41.00
-G_M4446_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 8
- vpop {d8-d8}
+ blt SHORT G_M4446_IG05
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M4446_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc}
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M4446_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M4446_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -97,19 +81,19 @@ G_M4446_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 14, PerfScore 48.00, instruction count 53, allocated bytes for code 170 (MethodHash=2651eea1) for method Test_10w5d.testout1:Func_0_1_1_1_3():ulong (FullOpts)
+; Total bytes of code 126, prolog size 8, PerfScore 34.00, instruction count 39, allocated bytes for code 126 (MethodHash=2651eea1) for method Test_10w5d.testout1:Func_0_1_1_1_3():ulong (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
+ Function Length : 63 (0x0003f) Actual length = 126 (0x00007e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -117,11 +101,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- 02 add sp, sp, #8 ; opsize 16
- E0 vpop {d8} ; opsize 32
A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
FF end
- FF end
- FF end
-10 (-1.41%) : 424581.dasm - ILGEN0x142726a2:Method0x6a72bf0e(long):int (FullOpts)
@@ -28,20 +28,19 @@
;* V18 tmp10 [V18 ] ( 0, 0 ) int -> zero-ref "index expr"
; V19 tmp11 [V19,T07] ( 2, 4 ) ref -> r7 single-def "arr expr"
; V20 tmp12 [V20,T03] ( 3, 6 ) ref -> r0 single-def "arr expr"
-; V21 tmp13 [V21,T21] ( 2, 0 ) double -> f0:f1 "argument with side effect"
+;* V21 tmp13 [V21,T21] ( 0, 0 ) int -> zero-ref "argument with side effect"
;* V22 tmp14 [V22,T22] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V23 tmp15 [V23,T23] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V24 tmp16 [V24,T04] ( 3, 6 ) int -> r0 "index expr"
-; V25 cse0 [V25,T13] ( 2, 2 ) int -> r1 "CSE - moderate"
-; V26 cse1 [V26,T00] ( 13, 13 ) int -> r6 "CSE - aggressive"
-; V27 rat0 [V27,T01] ( 5, 5 ) int -> [sp+0x10] do-not-enreg[] "field V00.lo (fldOffset=0x0)" P-DEP
-; V28 rat1 [V28,T02] ( 4, 4 ) int -> [sp+0x14] do-not-enreg[] "field V00.hi (fldOffset=0x4)" P-DEP
-; V29 rat2 [V29,T05] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V30 rat3 [V30,T08] ( 2, 4 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V31 rat4 [V31,T06] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V32 rat5 [V32 ] ( 1, 2 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V33 rat6 [V33,T10] ( 2, 3 ) int -> r0 "field V32.lo (fldOffset=0x0)" P-INDEP
-; V34 rat7 [V34,T11] ( 2, 3 ) int -> r1 "field V32.hi (fldOffset=0x4)" P-INDEP
+; V23 tmp15 [V23,T04] ( 3, 6 ) int -> r0 "index expr"
+; V24 cse0 [V24,T13] ( 2, 2 ) int -> r1 "CSE - moderate"
+; V25 cse1 [V25,T00] ( 13, 13 ) int -> r6 "CSE - aggressive"
+; V26 rat0 [V26,T01] ( 5, 5 ) int -> [sp+0x10] do-not-enreg[] "field V00.lo (fldOffset=0x0)" P-DEP
+; V27 rat1 [V27,T02] ( 4, 4 ) int -> [sp+0x14] do-not-enreg[] "field V00.hi (fldOffset=0x4)" P-DEP
+; V28 rat2 [V28,T05] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V29 rat3 [V29,T08] ( 2, 4 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V30 rat4 [V30,T06] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V31 rat5 [V31 ] ( 1, 2 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V32 rat6 [V32,T10] ( 2, 3 ) int -> r0 "field V31.lo (fldOffset=0x0)" P-INDEP
+; V33 rat7 [V33,T11] ( 2, 3 ) int -> r1 "field V31.hi (fldOffset=0x4)" P-INDEP
; TEMP_01 ref -> [r11-0x24]
;
; Lcl frame size = 24
@@ -292,9 +291,6 @@ G_M8224_IG09: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
vmov.i2d d0, r2, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- movw r3, 0xd1ff
- movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBL2INT_OVF
cmp r0, 0x10000
bhs SHORT G_M8224_IG07
@@ -310,9 +306,9 @@ G_M8224_IG09: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DIV
bkpt
- ;; size=78 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
-; Total bytes of code 708, prolog size 14, PerfScore 189.00, instruction count 223, allocated bytes for code 708 (MethodHash=0a2bdfdf) for method ILGEN_0x142726a2:Method_0x6a72bf0e(long):int (FullOpts)
+; Total bytes of code 698, prolog size 14, PerfScore 189.00, instruction count 220, allocated bytes for code 698 (MethodHash=0a2bdfdf) for method ILGEN_0x142726a2:Method_0x6a72bf0e(long):int (FullOpts)
; ============================================================
Unwind Info:
@@ -324,7 +320,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 354 (0x00162) Actual length = 708 (0x0002c4)
+ Function Length : 349 (0x0015d) Actual length = 698 (0x0002ba)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-1.23%) : 424905.dasm - ILGEN0x2c1d0308:Method0x286335f2(double,int,int,ulong,ulong,uint,ushort,float,long):int (FullOpts)
@@ -38,7 +38,7 @@
;* V28 tmp4 [V28 ] ( 0, 0 ) long -> zero-ref
; V29 tmp5 [V29,T05] ( 3, 0 ) int -> r9
; V30 tmp6 [V30,T14] ( 2, 0 ) int -> r3 "impAppendStmt"
-; V31 tmp7 [V31,T15] ( 2, 0 ) int -> r3 "impAppendStmt"
+; V31 tmp7 [V31,T15] ( 2, 0 ) int -> r0 "impAppendStmt"
; V32 tmp8 [V32,T16] ( 2, 0 ) int -> r5 "impAppendStmt"
;* V33 tmp9 [V33 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V34 tmp10 [V34,T17] ( 2, 0 ) int -> r6 "impAppendStmt"
@@ -54,11 +54,11 @@
;* V44 tmp20 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp21 [V45 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V46 tmp22 [V46 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V47 tmp23 [V47,T18] ( 2, 0 ) int -> r0 "argument with side effect"
-; V48 tmp24 [V48,T19] ( 2, 0 ) int -> r1 "argument with side effect"
-; V49 tmp25 [V49,T20] ( 2, 0 ) int -> r8 "argument with side effect"
-; V50 tmp26 [V50,T21] ( 2, 0 ) int -> r1 "argument with side effect"
-;* V51 tmp27 [V51 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V47 tmp23 [V47 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V48 tmp24 [V48,T18] ( 2, 0 ) int -> r0 "argument with side effect"
+; V49 tmp25 [V49,T19] ( 2, 0 ) int -> r1 "argument with side effect"
+; V50 tmp26 [V50,T20] ( 2, 0 ) int -> r8 "argument with side effect"
+; V51 tmp27 [V51,T21] ( 2, 0 ) int -> r1 "argument with side effect"
;* V52 rat0 [V52 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V03.lo (fldOffset=0x0)" P-DEP
;* V53 rat1 [V53 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V03.hi (fldOffset=0x4)" P-DEP
;* V54 rat2 [V54 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V04.lo (fldOffset=0x0)" P-DEP
@@ -267,28 +267,24 @@ G_M21186_IG13: ; bbWeight=0, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}
blx r3 // CORINFO_HELP_DBL2ULNG_OVF
tst r1, r1
bne G_M21186_IG21
- mov r3, r0
- adds r3, r6, r3
+ adds r0, r6, r0
bhs G_M21186_IG21
- cmp r3, 127
+ cmp r0, 127
bgt G_M21186_IG21
- cmn r3, 128
+ cmn r0, 128
blt G_M21186_IG21
- movs r2, 255
- cmp r5, r2
+ movs r1, 255
+ cmp r5, r1
bhs G_M21186_IG20
- movw r2, 0xd1ff
- sxth r2, r2
- orr r5, r3, r2
- mov r2, -0x20000000
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- vcvt.d2u s8, d0
- vmov.f2i r0, s8
+ movw r1, 0xd1ff
+ sxth r1, r1
+ orr r5, r0, r1
+ mov r0, -0x20000000
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ vmov.i2d d4, r0, r1
+ vcvt.d2u s10, d4
+ vmov.f2i r0, s10
movw r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -324,7 +320,7 @@ G_M21186_IG13: ; bbWeight=0, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}
blt SHORT G_M21186_IG14
movs r3, 0
b SHORT G_M21186_IG15
- ;; size=224 bbWeight=0 PerfScore 0.00
+ ;; size=212 bbWeight=0 PerfScore 0.00
G_M21186_IG14: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
@@ -455,7 +451,7 @@ G_M21186_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 978, prolog size 10, PerfScore 0.00, instruction count 318, allocated bytes for code 978 (MethodHash=e019ad3d) for method ILGEN_0x2c1d0308:Method_0x286335f2(double,int,int,ulong,ulong,uint,ushort,float,long):int (FullOpts)
+; Total bytes of code 966, prolog size 10, PerfScore 0.00, instruction count 314, allocated bytes for code 966 (MethodHash=e019ad3d) for method ILGEN_0x2c1d0308:Method_0x286335f2(double,int,int,ulong,ulong,uint,ushort,float,long):int (FullOpts)
; ============================================================
Unwind Info:
@@ -467,7 +463,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 489 (0x001e9) Actual length = 978 (0x0003d2)
+ Function Length : 483 (0x001e3) Actual length = 966 (0x0003c6)
---- Epilog scopes ----
No epilogs
---- Unwind codes ----
-4 (-0.94%) : 416795.dasm - testout1:Func06_4():long (FullOpts)
@@ -11,7 +11,7 @@
;* V00 loc0 [V00 ] ( 0, 0 ) struct (72) zero-ref do-not-enreg[SF] ld-addr-op double-align <testout1+VT_0_6_4>
;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 1, 2 ) long -> [sp+0x08] multireg-ret "impAppendStmt"
+;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 tmp3 [V05,T08] ( 2, 4 ) int -> r7 "non-inline candidate call"
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
@@ -32,7 +32,7 @@
;* V21 tmp19 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V24 tmp22 [V24,T09] ( 2, 4 ) double -> f0:f1 "Inlining Arg"
+;* V24 tmp22 [V24,T17] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V25 tmp23 [V25 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V26 tmp24 [V26 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -50,33 +50,33 @@
;* V39 tmp37 [V39 ] ( 0, 0 ) double -> zero-ref "V00.[048..056)"
;* V40 tmp38 [V40 ] ( 0, 0 ) long -> zero-ref "V00.[056..064)"
;* V41 tmp39 [V41 ] ( 0, 0 ) short -> zero-ref "V00.[064..066)"
-; V42 tmp40 [V42,T10] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-;* V43 tmp41 [V43 ] ( 0, 0 ) double -> zero-ref "argument with side effect"
-; V44 cse0 [V44,T13] ( 2, 2 ) double -> f0:f1 "CSE - moderate"
-; V45 cse1 [V45,T14] ( 2, 2 ) double -> f0:f1 "CSE - moderate"
-; V46 cse2 [V46,T00] ( 14, 14 ) ref -> r4 "CSE - aggressive"
-; V47 cse3 [V47,T07] ( 4, 4 ) double -> f16:f17 "CSE - moderate"
-; V48 cse4 [V48,T15] ( 2, 2 ) double -> f8:f9 "CSE - moderate"
-; V49 rat0 [V49,T11] ( 2, 3 ) int -> r5 "field V03.lo (fldOffset=0x0)" P-INDEP
-; V50 rat1 [V50,T12] ( 2, 3 ) int -> r6 "field V03.hi (fldOffset=0x4)" P-INDEP
-;* V51 rat2 [V51 ] ( 0, 0 ) int -> zero-ref "field V08.lo (fldOffset=0x0)" P-INDEP
-;* V52 rat3 [V52 ] ( 0, 0 ) int -> zero-ref "field V08.hi (fldOffset=0x4)" P-INDEP
-;* V53 rat4 [V53 ] ( 0, 0 ) int -> zero-ref "field V21.lo (fldOffset=0x0)" P-INDEP
-;* V54 rat5 [V54 ] ( 0, 0 ) int -> zero-ref "field V21.hi (fldOffset=0x4)" P-INDEP
-; V55 rat6 [V55,T16] ( 2, 2 ) int -> r1 "field V31.lo (fldOffset=0x0)" P-INDEP
-; V56 rat7 [V56,T17] ( 2, 2 ) int -> [sp+0x04] spill-single-def "field V31.hi (fldOffset=0x4)" P-INDEP
-;* V57 rat8 [V57 ] ( 0, 0 ) int -> zero-ref "field V33.lo (fldOffset=0x0)" P-INDEP
-;* V58 rat9 [V58 ] ( 0, 0 ) int -> zero-ref "field V33.hi (fldOffset=0x4)" P-INDEP
-;* V59 rat10 [V59 ] ( 0, 0 ) int -> zero-ref "field V36.lo (fldOffset=0x0)" P-INDEP
-;* V60 rat11 [V60 ] ( 0, 0 ) int -> zero-ref "field V36.hi (fldOffset=0x4)" P-INDEP
-;* V61 rat12 [V61 ] ( 0, 0 ) int -> zero-ref "field V40.lo (fldOffset=0x0)" P-INDEP
-;* V62 rat13 [V62 ] ( 0, 0 ) int -> zero-ref "field V40.hi (fldOffset=0x4)" P-INDEP
-; V63 rat14 [V63,T01] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V64 rat15 [V64,T02] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V65 rat16 [V65,T03] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V66 rat17 [V66,T04] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V67 rat18 [V67,T06] ( 3, 6 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V68 rat19 [V68,T05] ( 3, 6 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V42 cse0 [V42,T09] ( 2, 2 ) double -> f0:f1 "CSE - moderate"
+; V43 cse1 [V43 ] ( 1, 1 ) long -> [sp+0x08] multireg-ret must-init "CSE - moderate"
+; V44 cse2 [V44,T00] ( 14, 14 ) ref -> r4 "CSE - aggressive"
+; V45 cse3 [V45,T07] ( 4, 4 ) double -> f16:f17 "CSE - moderate"
+; V46 cse4 [V46,T10] ( 2, 2 ) double -> f8:f9 "CSE - moderate"
+; V47 rat0 [V47,T11] ( 2, 2 ) int -> r5 "field V03.lo (fldOffset=0x0)" P-INDEP
+; V48 rat1 [V48,T12] ( 2, 2 ) int -> r6 "field V03.hi (fldOffset=0x4)" P-INDEP
+;* V49 rat2 [V49 ] ( 0, 0 ) int -> zero-ref "field V08.lo (fldOffset=0x0)" P-INDEP
+;* V50 rat3 [V50 ] ( 0, 0 ) int -> zero-ref "field V08.hi (fldOffset=0x4)" P-INDEP
+;* V51 rat4 [V51 ] ( 0, 0 ) int -> zero-ref "field V21.lo (fldOffset=0x0)" P-INDEP
+;* V52 rat5 [V52 ] ( 0, 0 ) int -> zero-ref "field V21.hi (fldOffset=0x4)" P-INDEP
+; V53 rat6 [V53,T13] ( 2, 2 ) int -> r1 "field V31.lo (fldOffset=0x0)" P-INDEP
+; V54 rat7 [V54,T14] ( 2, 2 ) int -> [sp+0x04] spill-single-def "field V31.hi (fldOffset=0x4)" P-INDEP
+;* V55 rat8 [V55 ] ( 0, 0 ) int -> zero-ref "field V33.lo (fldOffset=0x0)" P-INDEP
+;* V56 rat9 [V56 ] ( 0, 0 ) int -> zero-ref "field V33.hi (fldOffset=0x4)" P-INDEP
+;* V57 rat10 [V57 ] ( 0, 0 ) int -> zero-ref "field V36.lo (fldOffset=0x0)" P-INDEP
+;* V58 rat11 [V58 ] ( 0, 0 ) int -> zero-ref "field V36.hi (fldOffset=0x4)" P-INDEP
+;* V59 rat12 [V59 ] ( 0, 0 ) int -> zero-ref "field V40.lo (fldOffset=0x0)" P-INDEP
+;* V60 rat13 [V60 ] ( 0, 0 ) int -> zero-ref "field V40.hi (fldOffset=0x4)" P-INDEP
+; V61 rat14 [V61,T15] ( 2, 2 ) int -> r5 "field V43.lo (fldOffset=0x0)" P-INDEP
+; V62 rat15 [V62,T16] ( 2, 2 ) int -> r6 "field V43.hi (fldOffset=0x4)" P-INDEP
+; V63 rat16 [V63,T01] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V64 rat17 [V64,T02] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V65 rat18 [V65,T03] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V66 rat19 [V66,T04] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V67 rat20 [V67,T06] ( 3, 6 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V68 rat21 [V68,T05] ( 3, 6 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 16
@@ -85,7 +85,10 @@ G_M25291_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vpush {d8-d8}
sub sp, 16
add r11, sp, 40
- ;; size=14 bbWeight=1 PerfScore 4.00
+ movs r0, 0
+ str r0, [sp+0x08] // [V43 cse1]
+ str r0, [sp+0x0C] // [V43 cse1+0x04]
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M25291_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -164,9 +167,6 @@ G_M25291_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vdiv d0, d0, d4
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- movw r3, 0xd1ff
- movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBL2LNG_OVF
mov r5, r0
mov r6, r1
@@ -215,18 +215,18 @@ G_M25291_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sbc r3, r12, r3
adds r1, r1, r2
adcs r0, r3
- str r0, [sp+0x04] // [V56 rat7]
+ str r0, [sp+0x04] // [V54 rat7]
adds r0, r5, r1
- ldr r1, [sp+0x04] // [V56 rat7]
+ ldr r1, [sp+0x04] // [V54 rat7]
adcs r1, r6
- ;; size=400 bbWeight=1 PerfScore 121.00
+ ;; size=390 bbWeight=1 PerfScore 118.00
G_M25291_IG03: ; bbWeight=1, epilog, nogc, extend
add sp, 16
vpop {d8-d8}
pop {r4,r5,r6,r7,r11,pc}
;; size=10 bbWeight=1 PerfScore 3.00
-; Total bytes of code 424, prolog size 14, PerfScore 128.00, instruction count 128, allocated bytes for code 424 (MethodHash=3aa39d34) for method testout1:Func_0_6_4():long (FullOpts)
+; Total bytes of code 420, prolog size 20, PerfScore 128.00, instruction count 128, allocated bytes for code 420 (MethodHash=3aa39d34) for method testout1:Func_0_6_4():long (FullOpts)
; ============================================================
Unwind Info:
@@ -238,7 +238,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 212 (0x000d4) Actual length = 424 (0x0001a8)
+ Function Length : 210 (0x000d2) Actual length = 420 (0x0001a4)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
libraries.pmi.linux.arm.checked.mch
-38 (-18.81%) : 11100.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
@@ -12,27 +12,27 @@
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T00] ( 4, 6 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V06 tmp3 [V06,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T04] ( 2, 2 ) int -> r5 "Inlining Arg"
-; V11 tmp8 [V11,T02] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
+; V10 tmp7 [V10,T03] ( 2, 2 ) int -> r5 "Inlining Arg"
+; V11 tmp8 [V11,T01] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V16 tmp13 [V16,T05] ( 3, 1 ) int -> r0 "Inline return value spill temp"
-; V17 tmp14 [V17,T01] ( 3, 2.20) int -> r0 "Inlining Arg"
-; V18 tmp15 [V18,T06] ( 2, 1 ) byref -> r4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp16 [V19,T08] ( 2, 1 ) int -> r5 "field V07._length (fldOffset=0x4)" P-INDEP
-; V20 tmp17 [V20,T07] ( 2, 1 ) byref -> r4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp18 [V21,T09] ( 2, 1 ) int -> r5 "field V08._length (fldOffset=0x4)" P-INDEP
+;* V16 tmp13 [V16,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V17 tmp14 [V17,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V18 tmp15 [V18,T04] ( 2, 1 ) byref -> r4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp16 [V19,T06] ( 2, 1 ) int -> r5 "field V07._length (fldOffset=0x4)" P-INDEP
+; V20 tmp17 [V20,T05] ( 2, 1 ) byref -> r4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp18 [V21,T07] ( 2, 1 ) int -> r5 "field V08._length (fldOffset=0x4)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V24 tmp21 [V24,T03] ( 2, 2 ) ref -> r3 single-def "argument with side effect"
+; V24 tmp21 [V24,T02] ( 2, 2 ) ref -> r3 single-def "argument with side effect"
;
; Lcl frame size = 16
@@ -93,7 +93,7 @@ G_M29212_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne SHORT G_M29212_IG13
+ bne SHORT G_M29212_IG11
;; size=18 bbWeight=0.50 PerfScore 3.00
G_M29212_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
@@ -107,30 +107,14 @@ G_M29212_IG08: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M29212_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- vcvt.d2i s8, d0
- vmov.f2i r0, s8
- cmp r0, 1
- bgt SHORT G_M29212_IG12
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M29212_IG10: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29212_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 1
- ;; size=2 bbWeight=0.40 PerfScore 0.40
-G_M29212_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M29212_IG10: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M29212_IG12: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- b SHORT G_M29212_IG11
- ;; size=2 bbWeight=0.10 PerfScore 0.10
-G_M29212_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M29212_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 107
@@ -140,7 +124,7 @@ G_M29212_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
b SHORT G_M29212_IG07
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 202, prolog size 10, PerfScore 35.70, instruction count 70, allocated bytes for code 202 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
+; Total bytes of code 164, prolog size 10, PerfScore 30.20, instruction count 58, allocated bytes for code 164 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
; ============================================================
Unwind Info:
@@ -152,7 +136,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 101 (0x00065) Actual length = 202 (0x0000ca)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-38 (-18.81%) : 20778.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
@@ -12,27 +12,27 @@
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T00] ( 4, 6 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V06 tmp3 [V06,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T04] ( 2, 2 ) int -> r5 "Inlining Arg"
-; V11 tmp8 [V11,T02] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
+; V10 tmp7 [V10,T03] ( 2, 2 ) int -> r5 "Inlining Arg"
+; V11 tmp8 [V11,T01] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V16 tmp13 [V16,T05] ( 3, 1 ) int -> r0 "Inline return value spill temp"
-; V17 tmp14 [V17,T01] ( 3, 2.20) int -> r0 "Inlining Arg"
-; V18 tmp15 [V18,T06] ( 2, 1 ) byref -> r4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp16 [V19,T08] ( 2, 1 ) int -> r5 "field V07._length (fldOffset=0x4)" P-INDEP
-; V20 tmp17 [V20,T07] ( 2, 1 ) byref -> r4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp18 [V21,T09] ( 2, 1 ) int -> r5 "field V08._length (fldOffset=0x4)" P-INDEP
+;* V16 tmp13 [V16,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V17 tmp14 [V17,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V18 tmp15 [V18,T04] ( 2, 1 ) byref -> r4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp16 [V19,T06] ( 2, 1 ) int -> r5 "field V07._length (fldOffset=0x4)" P-INDEP
+; V20 tmp17 [V20,T05] ( 2, 1 ) byref -> r4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp18 [V21,T07] ( 2, 1 ) int -> r5 "field V08._length (fldOffset=0x4)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V24 tmp21 [V24,T03] ( 2, 2 ) ref -> r3 single-def "argument with side effect"
+; V24 tmp21 [V24,T02] ( 2, 2 ) ref -> r3 single-def "argument with side effect"
;
; Lcl frame size = 16
@@ -93,7 +93,7 @@ G_M29212_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne SHORT G_M29212_IG13
+ bne SHORT G_M29212_IG11
;; size=18 bbWeight=0.50 PerfScore 3.00
G_M29212_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
@@ -107,30 +107,14 @@ G_M29212_IG08: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M29212_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- vcvt.d2i s8, d0
- vmov.f2i r0, s8
- cmp r0, 1
- bgt SHORT G_M29212_IG12
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M29212_IG10: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29212_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 1
- ;; size=2 bbWeight=0.40 PerfScore 0.40
-G_M29212_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M29212_IG10: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M29212_IG12: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- b SHORT G_M29212_IG11
- ;; size=2 bbWeight=0.10 PerfScore 0.10
-G_M29212_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M29212_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 107
@@ -140,7 +124,7 @@ G_M29212_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
b SHORT G_M29212_IG07
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 202, prolog size 10, PerfScore 35.70, instruction count 70, allocated bytes for code 202 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
+; Total bytes of code 164, prolog size 10, PerfScore 30.20, instruction count 58, allocated bytes for code 164 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
; ============================================================
Unwind Info:
@@ -152,7 +136,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 101 (0x00065) Actual length = 202 (0x0000ca)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-10 (-15.62%) : 207705.dasm - System.Tests.TimeSpanTests+<>c:b_861():System.Object:this (FullOpts)
@@ -20,7 +20,7 @@
;* V09 tmp8 [V09 ] ( 0, 0 ) long -> zero-ref "field V04._ticks (fldOffset=0x0)" P-INDEP
;* V10 tmp9 [V10 ] ( 0, 0 ) long -> zero-ref "field V05._ticks (fldOffset=0x0)" P-INDEP
;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "field V06._ticks (fldOffset=0x0)" P-INDEP
-; V12 tmp11 [V12,T01] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+;* V12 tmp11 [V12,T01] ( 0, 0 ) double -> zero-ref "argument with side effect"
;
; Lcl frame size = 0
@@ -37,15 +37,11 @@ G_M41797_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
+ movs r0, 0
; gcrRegs -[r0]
- ; gcr arg pop 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ vmov.i2d d0, r0, r3
adds r0, r4, 4
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -56,12 +52,12 @@ G_M41797_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r0, r4
; gcrRegs +[r0]
- ;; size=60 bbWeight=1 PerfScore 19.00
+ ;; size=50 bbWeight=1 PerfScore 16.00
G_M41797_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 64, prolog size 2, PerfScore 21.00, instruction count 21, allocated bytes for code 64 (MethodHash=b8275cba) for method System.Tests.TimeSpanTests+<>c:<DivideByZero>b__86_1():System.Object:this (FullOpts)
+; Total bytes of code 54, prolog size 2, PerfScore 18.00, instruction count 18, allocated bytes for code 54 (MethodHash=b8275cba) for method System.Tests.TimeSpanTests+<>c:<DivideByZero>b__86_1():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +69,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-10 (-15.62%) : 207753.dasm - System.Tests.TimeSpanTests+<>c:b_921():System.Object:this (FullOpts)
@@ -20,7 +20,7 @@
;* V09 tmp7 [V09 ] ( 0, 0 ) long -> zero-ref "field V04._ticks (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref single-def "field V05._ticks (fldOffset=0x0)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) long -> zero-ref single-def "field V06._ticks (fldOffset=0x0)" P-INDEP
-; V12 tmp10 [V12,T01] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+;* V12 tmp10 [V12,T01] ( 0, 0 ) double -> zero-ref "argument with side effect"
;
; Lcl frame size = 0
@@ -37,15 +37,11 @@ G_M20483_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
+ movs r0, 0
; gcrRegs -[r0]
- ; gcr arg pop 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ vmov.i2d d0, r0, r3
adds r0, r4, 4
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -56,12 +52,12 @@ G_M20483_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r0, r4
; gcrRegs +[r0]
- ;; size=60 bbWeight=1 PerfScore 19.00
+ ;; size=50 bbWeight=1 PerfScore 16.00
G_M20483_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 64, prolog size 2, PerfScore 21.00, instruction count 21, allocated bytes for code 64 (MethodHash=5f9caffc) for method System.Tests.TimeSpanTests+<>c:<NamedDivideByZero>b__92_1():System.Object:this (FullOpts)
+; Total bytes of code 54, prolog size 2, PerfScore 18.00, instruction count 18, allocated bytes for code 54 (MethodHash=5f9caffc) for method System.Tests.TimeSpanTests+<>c:<NamedDivideByZero>b__92_1():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +69,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-10 (-14.29%) : 207854.dasm - System.Tests.TimeSpanTests+<>c:b_830():System.Object:this (FullOpts)
@@ -14,7 +14,7 @@
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op double-align "Inlining Arg" <System.TimeSpan>
;* V04 tmp3 [V04 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
;* V05 tmp4 [V05,T02] ( 0, 0 ) long -> zero-ref "field V03._ticks (fldOffset=0x0)" P-INDEP
-; V06 tmp5 [V06,T01] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+;* V06 tmp5 [V06,T01] ( 0, 0 ) double -> zero-ref "argument with side effect"
;
; Lcl frame size = 0
@@ -31,16 +31,12 @@ G_M46741_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
+ movw r0, 0xd1ff
; gcrRegs -[r0]
- ; gcr arg pop 0
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ vmov.i2d d0, r0, r3
adds r0, r4, 4
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -51,12 +47,12 @@ G_M46741_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r0, r4
; gcrRegs +[r0]
- ;; size=66 bbWeight=1 PerfScore 20.00
+ ;; size=56 bbWeight=1 PerfScore 17.00
G_M46741_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 70, prolog size 2, PerfScore 22.00, instruction count 22, allocated bytes for code 70 (MethodHash=2d63496a) for method System.Tests.TimeSpanTests+<>c:<OverflowingMultiplication>b__83_0():System.Object:this (FullOpts)
+; Total bytes of code 60, prolog size 2, PerfScore 19.00, instruction count 19, allocated bytes for code 60 (MethodHash=2d63496a) for method System.Tests.TimeSpanTests+<>c:<OverflowingMultiplication>b__83_0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -68,7 +64,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 70 (0x000046)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-10 (-14.29%) : 207855.dasm - System.Tests.TimeSpanTests+<>c:b_831():System.Object:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 tmp4 [V05 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
;* V06 tmp5 [V06 ] ( 0, 0 ) long -> zero-ref "field V03._ticks (fldOffset=0x0)" P-INDEP
;* V07 tmp6 [V07,T02] ( 0, 0 ) long -> zero-ref "field V04._ticks (fldOffset=0x0)" P-INDEP
-; V08 tmp7 [V08,T01] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+;* V08 tmp7 [V08,T01] ( 0, 0 ) double -> zero-ref "argument with side effect"
;
; Lcl frame size = 0
@@ -33,16 +33,12 @@ G_M43060_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
+ movw r0, 0xd1ff
; gcrRegs -[r0]
- ; gcr arg pop 0
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ vmov.i2d d0, r0, r3
adds r0, r4, 4
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -53,12 +49,12 @@ G_M43060_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r0, r4
; gcrRegs +[r0]
- ;; size=66 bbWeight=1 PerfScore 20.00
+ ;; size=56 bbWeight=1 PerfScore 17.00
G_M43060_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 70, prolog size 2, PerfScore 22.00, instruction count 22, allocated bytes for code 70 (MethodHash=163957cb) for method System.Tests.TimeSpanTests+<>c:<OverflowingMultiplication>b__83_1():System.Object:this (FullOpts)
+; Total bytes of code 60, prolog size 2, PerfScore 19.00, instruction count 19, allocated bytes for code 60 (MethodHash=163957cb) for method System.Tests.TimeSpanTests+<>c:<OverflowingMultiplication>b__83_1():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,7 +66,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 70 (0x000046)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-26 (-8.67%) : 207812.dasm - System.Numerics.Tests.IFloatingPointTests:ToEvenRoundingTest() (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T03] ( 2, 4.01) float -> f16 "impAppendStmt"
+;* V01 tmp1 [V01,T05] ( 0, 0 ) float -> zero-ref "impAppendStmt"
;* V02 tmp2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref HFA(float) "location for address-of(RValue)" <System.Numerics.Tests.FloatingPointDimHelper>
;* V03 tmp3 [V03 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
;* V04 tmp4 [V04 ] ( 0, 0 ) struct ( 4) zero-ref HFA(float) "Inlining Arg" <System.Numerics.Tests.FloatingPointDimHelper>
@@ -19,32 +19,24 @@
;* V08 tmp8 [V08 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
; V09 tmp9 [V09,T02] ( 3, 6.01) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[float]>
;* V10 tmp10 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[float]>
-; V11 tmp11 [V11,T04] ( 3, 3.00) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[float]>
+; V11 tmp11 [V11,T03] ( 3, 3.00) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[float]>
; V12 tmp12 [V12,T00] ( 5, 10.02) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V13 tmp13 [V13,T01] ( 4, 8.01) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp14 [V14 ] ( 0, 0 ) float -> zero-ref "field V02.Value (fldOffset=0x0)" P-INDEP
;* V15 tmp15 [V15,T06] ( 0, 0 ) float -> zero-ref "field V04.Value (fldOffset=0x0)" P-INDEP
-; V16 tmp16 [V16,T05] ( 2, 2.00) float -> [sp+0x04] spill-single-def "field V05.Value (fldOffset=0x0)" P-INDEP
-; TEMP_01 ref -> [r11-0x20]
+; V16 tmp16 [V16,T04] ( 2, 2.00) float -> [sp+0x04] spill-single-def "field V05.Value (fldOffset=0x0)" P-INDEP
+; TEMP_01 ref -> [r11-0x18]
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M27984_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- vpush {d8-d8}
- sub sp, 8
- add r11, sp, 32
+ push {r4,r5,r6,r11,lr}
+ sub sp, 12
+ add r11, sp, 24
movs r0, 0
str r0, [sp] // [TEMP_01]
- ;; size=18 bbWeight=1.00 PerfScore 6.01
+ ;; size=14 bbWeight=1.00 PerfScore 5.01
G_M27984_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2f s0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_FLTROUND
- vmov s16, s0
movw r0, 0xd1ff
movt r0, 0xd1ff
vmov.i2f s0, r0
@@ -148,7 +140,9 @@ G_M27984_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r5]
; byrRegs -[r0]
- vmov s0, s16
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ vmov.i2f s0, r0
vldr s1, [sp+0x04] // [V16 tmp16]
mov r0, r4
; gcrRegs +[r0]
@@ -157,34 +151,29 @@ G_M27984_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r0 r4]
- ;; size=272 bbWeight=1.00 PerfScore 87.14
+ ;; size=254 bbWeight=1.00 PerfScore 82.13
G_M27984_IG03: ; bbWeight=1.00, epilog, nogc, extend
- add sp, 8
- vpop {d8-d8}
- pop {r4,r5,r6,r7,r11,pc}
- ;; size=10 bbWeight=1.00 PerfScore 3.00
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=1.00 PerfScore 2.00
-; Total bytes of code 300, prolog size 18, PerfScore 96.15, instruction count 96, allocated bytes for code 300 (MethodHash=605c92af) for method System.Numerics.Tests.IFloatingPointTests:ToEvenRoundingTest() (FullOpts)
+; Total bytes of code 274, prolog size 14, PerfScore 89.14, instruction count 89, allocated bytes for code 274 (MethodHash=605c92af) for method System.Numerics.Tests.IFloatingPointTests:ToEvenRoundingTest() (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 0
F bit : 0
E bit : 1
X bit : 0
Vers : 0
- Function Length : 150 (0x00096) Actual length = 300 (0x00012c)
+ Function Length : 137 (0x00089) Actual length = 274 (0x000112)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 02 add sp, sp, #8 ; opsize 16
- E0 vpop {d8} ; opsize 32
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
- FF end
- FF end
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
realworld.run.linux.arm.checked.mch
-38 (-18.63%) : 19583.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
@@ -12,27 +12,27 @@
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T00] ( 4, 6 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.String>
-;* V06 tmp3 [V06,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp3 [V06,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T04] ( 2, 2 ) int -> r5 "Inlining Arg"
-; V11 tmp8 [V11,T02] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
+; V10 tmp7 [V10,T03] ( 2, 2 ) int -> r5 "Inlining Arg"
+; V11 tmp8 [V11,T01] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V16 tmp13 [V16,T05] ( 3, 1.50) int -> r0 "Inline return value spill temp"
-; V17 tmp14 [V17,T01] ( 3, 3 ) int -> r0 "Inlining Arg"
-; V18 tmp15 [V18,T06] ( 2, 1 ) byref -> r4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp16 [V19,T08] ( 2, 1 ) int -> r5 "field V07._length (fldOffset=0x4)" P-INDEP
-; V20 tmp17 [V20,T07] ( 2, 1 ) byref -> r4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp18 [V21,T09] ( 2, 1 ) int -> r5 "field V08._length (fldOffset=0x4)" P-INDEP
+;* V16 tmp13 [V16,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V17 tmp14 [V17,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V18 tmp15 [V18,T04] ( 2, 1 ) byref -> r4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp16 [V19,T06] ( 2, 1 ) int -> r5 "field V07._length (fldOffset=0x4)" P-INDEP
+; V20 tmp17 [V20,T05] ( 2, 1 ) byref -> r4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp18 [V21,T07] ( 2, 1 ) int -> r5 "field V08._length (fldOffset=0x4)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V24 tmp21 [V24,T03] ( 2, 2 ) ref -> r3 single-def "argument with side effect"
+; V24 tmp21 [V24,T02] ( 2, 2 ) ref -> r3 single-def "argument with side effect"
;
; Lcl frame size = 16
@@ -96,7 +96,7 @@ G_M29212_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne SHORT G_M29212_IG12
+ bne SHORT G_M29212_IG11
;; size=18 bbWeight=0.50 PerfScore 3.00
G_M29212_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
@@ -110,28 +110,14 @@ G_M29212_IG08: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M29212_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- vmov.i2d d0, r2, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_DBLROUND
- vcvt.d2i s8, d0
- vmov.f2i r0, s8
- cmp r0, 1
- ble SHORT G_M29212_IG10
- b SHORT G_M29212_IG11
- ;; size=38 bbWeight=0.50 PerfScore 6.00
-G_M29212_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29212_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M29212_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M29212_IG10: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M29212_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M29212_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 107
@@ -141,7 +127,7 @@ G_M29212_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
b SHORT G_M29212_IG07
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 10, PerfScore 37.50, instruction count 71, allocated bytes for code 204 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
+; Total bytes of code 166, prolog size 10, PerfScore 31.50, instruction count 59, allocated bytes for code 166 (MethodHash=c01d8de3) for method System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 102 (0x00066) Actual length = 204 (0x0000cc)
+ Function Length : 83 (0x00053) Actual length = 166 (0x0000a6)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm.checked.mch |
1 |
1 |
0 |
0 |
-38 |
+0 |
| benchmarks.run_pgo.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_tiered.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.linux.arm.checked.mch |
74 |
74 |
0 |
0 |
-3,940 |
+0 |
| libraries.crossgen2.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.linux.arm.checked.mch |
1 |
1 |
0 |
0 |
-38 |
+0 |
| libraries_tests.run.linux.arm.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
16 |
16 |
0 |
0 |
-776 |
+0 |
| realworld.run.linux.arm.checked.mch |
2 |
2 |
0 |
0 |
-94 |
+0 |
|
94 |
94 |
0 |
0 |
-4,886 |
+0 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
42,354 |
4,278 |
38,076 |
1,135 (2.61%) |
1,142 (2.63%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
47,709 |
18,036 |
29,673 |
753 (1.55%) |
753 (1.55%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
72,888 |
38,765 |
34,123 |
985 (1.33%) |
989 (1.34%) |
| coreclr_tests.run.linux.arm.checked.mch |
471,687 |
259,195 |
212,492 |
7,196 (1.50%) |
7,476 (1.56%) |
| libraries.crossgen2.linux.arm.checked.mch |
198,321 |
14 |
198,307 |
1 (0.00%) |
77 (0.04%) |
| libraries.pmi.linux.arm.checked.mch |
272,849 |
6 |
272,843 |
7,807 (2.78%) |
7,861 (2.80%) |
| libraries_tests.run.linux.arm.Release.mch |
33,539 |
3,662 |
29,877 |
1,184 (3.41%) |
1,184 (3.41%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,858 |
21,625 |
253,233 |
33,391 (10.83%) |
33,437 (10.85%) |
| realworld.run.linux.arm.checked.mch |
36,438 |
153 |
36,285 |
1,410 (3.72%) |
1,424 (3.76%) |
|
1,450,643 |
345,734 |
1,104,909 |
53,862 (3.58%) |
54,343 (3.61%) |
jit-analyze output
benchmarks.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13712182 (overridden on cmd)
Total bytes of diff: 13712144 (overridden on cmd)
Total bytes of delta: -38 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-38 : 2545.dasm (-18.63 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-38 (-18.63 % of base) : 2545.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
Top method improvements (percentages):
-38 (-18.63 % of base) : 2545.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
coreclr_tests.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 321358662 (overridden on cmd)
Total bytes of diff: 321354722 (overridden on cmd)
Total bytes of delta: -3940 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-166 : 408883.dasm (-10.79 % of base)
-166 : 415162.dasm (-10.79 % of base)
-130 : 424562.dasm (-38.24 % of base)
-116 : 408838.dasm (-17.90 % of base)
-106 : 414776.dasm (-54.08 % of base)
-106 : 408497.dasm (-54.08 % of base)
-92 : 408349.dasm (-15.97 % of base)
-92 : 414628.dasm (-15.97 % of base)
-88 : 408111.dasm (-39.64 % of base)
-88 : 414391.dasm (-39.64 % of base)
-84 : 408223.dasm (-30.66 % of base)
-84 : 414503.dasm (-30.66 % of base)
-80 : 407819.dasm (-53.33 % of base)
-80 : 408456.dasm (-15.56 % of base)
-80 : 414099.dasm (-53.33 % of base)
-80 : 414735.dasm (-15.56 % of base)
-74 : 408485.dasm (-28.03 % of base)
-74 : 414764.dasm (-28.03 % of base)
-70 : 408797.dasm (-7.81 % of base)
-62 : 407815.dasm (-12.70 % of base)
57 total files with Code Size differences (57 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-166 (-10.79 % of base) : 408883.dasm - Test_10w5d.testout1:Func_0_1_1_6_1():double (FullOpts)
-166 (-10.79 % of base) : 415162.dasm - Test_10w5d.testout1:Func_0_1_1_6_1():double (FullOpts)
-130 (-38.24 % of base) : 424562.dasm - ILGEN_0x1c24c9c8:Method_0x70ae6ea7(int,int,byte,int,uint):int (FullOpts)
-116 (-17.90 % of base) : 408838.dasm - Test_10w5d.testout1:Func_0_1_4_1_3():double (FullOpts)
-106 (-54.08 % of base) : 414776.dasm - Test_10w5d.testout1:Func_0_3_1_3_6():ulong (FullOpts)
-106 (-54.08 % of base) : 408497.dasm - Test_10w5d.testout1:Func_0_3_1_3_6():ulong (FullOpts)
-92 (-15.97 % of base) : 408349.dasm - Test_10w5d.testout1:Func_0_3_6_1_4():short (FullOpts)
-92 (-15.97 % of base) : 414628.dasm - Test_10w5d.testout1:Func_0_3_6_1_4():short (FullOpts)
-88 (-39.64 % of base) : 408111.dasm - Test_10w5d.testout1:Func_0_4_5_6_4():ulong (FullOpts)
-88 (-39.64 % of base) : 414391.dasm - Test_10w5d.testout1:Func_0_4_5_6_4():ulong (FullOpts)
-84 (-30.66 % of base) : 408223.dasm - Test_10w5d.testout1:Func_0_4_3_3_2():float (FullOpts)
-84 (-30.66 % of base) : 414503.dasm - Test_10w5d.testout1:Func_0_4_3_3_2():float (FullOpts)
-80 (-15.56 % of base) : 408456.dasm - Test_10w5d.testout1:Func_0_3_2_3_3():ulong (FullOpts)
-80 (-15.56 % of base) : 414735.dasm - Test_10w5d.testout1:Func_0_3_2_3_3():ulong (FullOpts)
-80 (-53.33 % of base) : 407819.dasm - Test_10w5d.testout1:Func_0_6_1_1_3():double (FullOpts)
-80 (-53.33 % of base) : 414099.dasm - Test_10w5d.testout1:Func_0_6_1_1_3():double (FullOpts)
-74 (-28.03 % of base) : 408485.dasm - Test_10w5d.testout1:Func_0_3_1_5_4():ulong (FullOpts)
-74 (-28.03 % of base) : 414764.dasm - Test_10w5d.testout1:Func_0_3_1_5_4():ulong (FullOpts)
-70 (-7.81 % of base) : 408797.dasm - Test_10w5d.testout1:Func_0_1_5_4_2():ulong (FullOpts)
-62 (-12.70 % of base) : 407815.dasm - Test_10w5d.testout1:Func_0_6_1_1():float (FullOpts)
Top method improvements (percentages):
-106 (-54.08 % of base) : 414776.dasm - Test_10w5d.testout1:Func_0_3_1_3_6():ulong (FullOpts)
-106 (-54.08 % of base) : 408497.dasm - Test_10w5d.testout1:Func_0_3_1_3_6():ulong (FullOpts)
-80 (-53.33 % of base) : 407819.dasm - Test_10w5d.testout1:Func_0_6_1_1_3():double (FullOpts)
-80 (-53.33 % of base) : 414099.dasm - Test_10w5d.testout1:Func_0_6_1_1_3():double (FullOpts)
-88 (-39.64 % of base) : 408111.dasm - Test_10w5d.testout1:Func_0_4_5_6_4():ulong (FullOpts)
-88 (-39.64 % of base) : 414391.dasm - Test_10w5d.testout1:Func_0_4_5_6_4():ulong (FullOpts)
-130 (-38.24 % of base) : 424562.dasm - ILGEN_0x1c24c9c8:Method_0x70ae6ea7(int,int,byte,int,uint):int (FullOpts)
-34 (-32.69 % of base) : 407604.dasm - Test_10w5d.testout1:Func_0_6_6_3_3():double (FullOpts)
-34 (-32.69 % of base) : 413885.dasm - Test_10w5d.testout1:Func_0_6_6_3_3():double (FullOpts)
-84 (-30.66 % of base) : 408223.dasm - Test_10w5d.testout1:Func_0_4_3_3_2():float (FullOpts)
-84 (-30.66 % of base) : 414503.dasm - Test_10w5d.testout1:Func_0_4_3_3_2():float (FullOpts)
-74 (-28.03 % of base) : 408485.dasm - Test_10w5d.testout1:Func_0_3_1_5_4():ulong (FullOpts)
-74 (-28.03 % of base) : 414764.dasm - Test_10w5d.testout1:Func_0_3_1_5_4():ulong (FullOpts)
-44 (-25.88 % of base) : 408910.dasm - Test_10w5d.testout1:Func_0_1_1_1_3():ulong (FullOpts)
-44 (-25.88 % of base) : 415189.dasm - Test_10w5d.testout1:Func_0_1_1_1_3():ulong (FullOpts)
-32 (-25.40 % of base) : 408823.dasm - Test_10w5d.testout1:Func_0_1_4_3_5():long (FullOpts)
-32 (-25.40 % of base) : 415102.dasm - Test_10w5d.testout1:Func_0_1_4_3_5():long (FullOpts)
-60 (-24.19 % of base) : 414202.dasm - Test_10w5d.testout1:Func_0_5_4_4_5():float (FullOpts)
-60 (-24.19 % of base) : 407922.dasm - Test_10w5d.testout1:Func_0_5_4_4_5():float (FullOpts)
-38 (-20.00 % of base) : 414071.dasm - Test_10w5d.testout1:Func_0_6_1_6_1():long (FullOpts)
libraries.pmi.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 49904152 (overridden on cmd)
Total bytes of diff: 49904114 (overridden on cmd)
Total bytes of delta: -38 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-38 : 11100.dasm (-18.81 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-38 (-18.81 % of base) : 11100.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
Top method improvements (percentages):
-38 (-18.81 % of base) : 11100.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
librariestestsnotieredcompilation.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 94495714 (overridden on cmd)
Total bytes of diff: 94494938 (overridden on cmd)
Total bytes of delta: -776 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-186 : 189217.dasm (-4.10 % of base)
-120 : 188961.dasm (-6.60 % of base)
-120 : 24389.dasm (-7.41 % of base)
-112 : 188958.dasm (-2.29 % of base)
-84 : 188937.dasm (-4.50 % of base)
-38 : 20778.dasm (-18.81 % of base)
-26 : 207812.dasm (-8.67 % of base)
-10 : 207706.dasm (-15.62 % of base)
-10 : 207754.dasm (-15.62 % of base)
-10 : 207705.dasm (-15.62 % of base)
-10 : 207752.dasm (-15.62 % of base)
-10 : 207753.dasm (-15.62 % of base)
-10 : 207855.dasm (-14.29 % of base)
-10 : 207704.dasm (-15.62 % of base)
-10 : 207850.dasm (-14.29 % of base)
-10 : 207854.dasm (-14.29 % of base)
16 total files with Code Size differences (16 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-186 (-4.10 % of base) : 189217.dasm - System.Tests.MathTests:Round_Float_Constant_Arg() (FullOpts)
-120 (-6.60 % of base) : 188961.dasm - System.Tests.MathFTests:Round() (FullOpts)
-120 (-7.41 % of base) : 24389.dasm - System.Tests.MathFTests:Round() (FullOpts)
-112 (-2.29 % of base) : 188958.dasm - System.Tests.MathTests:Round_Double_Constant_Arg() (FullOpts)
-84 (-4.50 % of base) : 188937.dasm - System.Tests.MathTests:Round_Double() (FullOpts)
-38 (-18.81 % of base) : 20778.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
-26 (-8.67 % of base) : 207812.dasm - System.Numerics.Tests.IFloatingPointTests:ToEvenRoundingTest() (FullOpts)
-10 (-15.62 % of base) : 207704.dasm - System.Tests.TimeSpanTests+<>c:<DivideByZero>b__86_0():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207705.dasm - System.Tests.TimeSpanTests+<>c:<DivideByZero>b__86_1():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207706.dasm - System.Tests.TimeSpanTests+<>c:<DivideByZero>b__86_2():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207752.dasm - System.Tests.TimeSpanTests+<>c:<NamedDivideByZero>b__92_0():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207753.dasm - System.Tests.TimeSpanTests+<>c:<NamedDivideByZero>b__92_1():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207754.dasm - System.Tests.TimeSpanTests+<>c:<NamedDivideByZero>b__92_2():System.Object:this (FullOpts)
-10 (-14.29 % of base) : 207850.dasm - System.Tests.TimeSpanTests+<>c:<NamedOverflowingMultiplication>b__89_0():System.Object:this (FullOpts)
-10 (-14.29 % of base) : 207854.dasm - System.Tests.TimeSpanTests+<>c:<OverflowingMultiplication>b__83_0():System.Object:this (FullOpts)
-10 (-14.29 % of base) : 207855.dasm - System.Tests.TimeSpanTests+<>c:<OverflowingMultiplication>b__83_1():System.Object:this (FullOpts)
Top method improvements (percentages):
-38 (-18.81 % of base) : 20778.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
-10 (-15.62 % of base) : 207704.dasm - System.Tests.TimeSpanTests+<>c:<DivideByZero>b__86_0():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207705.dasm - System.Tests.TimeSpanTests+<>c:<DivideByZero>b__86_1():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207706.dasm - System.Tests.TimeSpanTests+<>c:<DivideByZero>b__86_2():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207752.dasm - System.Tests.TimeSpanTests+<>c:<NamedDivideByZero>b__92_0():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207753.dasm - System.Tests.TimeSpanTests+<>c:<NamedDivideByZero>b__92_1():System.Object:this (FullOpts)
-10 (-15.62 % of base) : 207754.dasm - System.Tests.TimeSpanTests+<>c:<NamedDivideByZero>b__92_2():System.Object:this (FullOpts)
-10 (-14.29 % of base) : 207850.dasm - System.Tests.TimeSpanTests+<>c:<NamedOverflowingMultiplication>b__89_0():System.Object:this (FullOpts)
-10 (-14.29 % of base) : 207854.dasm - System.Tests.TimeSpanTests+<>c:<OverflowingMultiplication>b__83_0():System.Object:this (FullOpts)
-10 (-14.29 % of base) : 207855.dasm - System.Tests.TimeSpanTests+<>c:<OverflowingMultiplication>b__83_1():System.Object:this (FullOpts)
-26 (-8.67 % of base) : 207812.dasm - System.Numerics.Tests.IFloatingPointTests:ToEvenRoundingTest() (FullOpts)
-120 (-7.41 % of base) : 24389.dasm - System.Tests.MathFTests:Round() (FullOpts)
-120 (-6.60 % of base) : 188961.dasm - System.Tests.MathFTests:Round() (FullOpts)
-84 (-4.50 % of base) : 188937.dasm - System.Tests.MathTests:Round_Double() (FullOpts)
-186 (-4.10 % of base) : 189217.dasm - System.Tests.MathTests:Round_Float_Constant_Arg() (FullOpts)
-112 (-2.29 % of base) : 188958.dasm - System.Tests.MathTests:Round_Double_Constant_Arg() (FullOpts)
16 total methods with Code Size differences (16 improved, 0 regressed).
realworld.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13599632 (overridden on cmd)
Total bytes of diff: 13599538 (overridden on cmd)
Total bytes of delta: -94 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-56 : 16392.dasm (-2.10 % of base)
-38 : 19583.dasm (-18.63 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-56 (-2.10 % of base) : 16392.dasm - SixLabors.ImageSharp.Formats.Bmp.BmpDecoderCore:ReadInfoHeader():this (FullOpts)
-38 (-18.63 % of base) : 19583.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
Top method improvements (percentages):
-38 (-18.63 % of base) : 19583.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
-56 (-2.10 % of base) : 16392.dasm - SixLabors.ImageSharp.Formats.Bmp.BmpDecoderCore:ReadInfoHeader():this (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
windows x86
Diffs are based on 1,628,940 contexts (327,626 MinOpts, 1,301,314 FullOpts).
MISSED contexts: 799 (0.05%)
No diffs found.
Details
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
38,862 |
6 |
38,856 |
33 (0.08%) |
33 (0.08%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
85,422 |
41,585 |
43,837 |
11 (0.01%) |
11 (0.01%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
73,605 |
45,417 |
28,188 |
24 (0.03%) |
24 (0.03%) |
| coreclr_tests.run.windows.x86.checked.mch |
406,548 |
186,921 |
219,627 |
74 (0.02%) |
74 (0.02%) |
| libraries.crossgen2.windows.x86.checked.mch |
272,993 |
15 |
272,978 |
32 (0.01%) |
32 (0.01%) |
| libraries.pmi.windows.x86.checked.mch |
320,509 |
6 |
320,503 |
72 (0.02%) |
72 (0.02%) |
| libraries_tests.run.windows.x86.Release.mch |
49,276 |
31,248 |
18,028 |
350 (0.71%) |
350 (0.71%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
343,876 |
22,425 |
321,451 |
192 (0.06%) |
192 (0.06%) |
| realworld.run.windows.x86.checked.mch |
37,849 |
3 |
37,846 |
11 (0.03%) |
11 (0.03%) |
|
1,628,940 |
327,626 |
1,301,314 |
799 (0.05%) |
799 (0.05%) |