Assembly Diffs
linux arm64
Diffs are based on 1,610,272 contexts (368,644 MinOpts, 1,241,628 FullOpts).
MISSED contexts: 3,428 (0.21%)
Overall (-16 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.linux.arm64.checked.mch |
301,232,224 |
-16 |
FullOpts (-16 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.linux.arm64.checked.mch |
140,438,460 |
-16 |
Example diffs
coreclr_tests.run.linux.arm64.checked.mch
-8 (-4.55%) : 251204.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
@@ -10,11 +10,12 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 30.05) long -> x0 single-def
-; V01 arg1 [V01,T02] ( 7, 5.44) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T00] ( 17, 95.49) long -> x2
+; V00 arg0 [V00,T01] ( 8, 6.97) long -> x0 single-def
+; V01 arg1 [V01,T02] ( 7, 4.90) ref -> registers class-hnd <System.Object>
+; V02 loc0 [V02,T00] ( 17, 9.21) long -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V05 cse0 [V05,T03] ( 3, 0.19) ref -> x1 "CSE - conservative"
;
; Lcl frame size = 0
@@ -24,91 +25,88 @@ G_M45526_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M45526_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M45526_IG16
+ cbz x1, G_M45526_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M45526_IG03: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M45526_IG03: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=0.80 PerfScore 3.60
-G_M45526_IG04: ; bbWeight=0.64, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M45526_IG04: ; bbWeight=0.40, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
ldr x2, [x1]
ldr x2, [x2, #0x18]
- ;; size=8 bbWeight=0.64 PerfScore 3.84
-G_M45526_IG05: ; bbWeight=8.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.40 PerfScore 2.40
+G_M45526_IG05: ; bbWeight=3.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
cmp x2, x0
- beq G_M45526_IG16
- ;; size=8 bbWeight=8.99 PerfScore 13.48
-G_M45526_IG06: ; bbWeight=8.09, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=8.09 PerfScore 8.09
-G_M45526_IG07: ; bbWeight=7.28, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M45526_IG14
+ ;; size=8 bbWeight=3.24 PerfScore 4.86
+G_M45526_IG06: ; bbWeight=1.62, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=1.62 PerfScore 1.62
+G_M45526_IG07: ; bbWeight=0.81, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=7.28 PerfScore 32.77
-G_M45526_IG08: ; bbWeight=6.55, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=6.55 PerfScore 6.55
-G_M45526_IG09: ; bbWeight=5.90, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.81 PerfScore 3.65
+G_M45526_IG08: ; bbWeight=0.41, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.41 PerfScore 0.41
+G_M45526_IG09: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=5.90 PerfScore 26.54
-G_M45526_IG10: ; bbWeight=5.31, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=5.31 PerfScore 5.31
-G_M45526_IG11: ; bbWeight=4.78, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.20 PerfScore 0.91
+G_M45526_IG10: ; bbWeight=0.10, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.10 PerfScore 0.10
+G_M45526_IG11: ; bbWeight=0.09, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=4.78 PerfScore 21.50
-G_M45526_IG12: ; bbWeight=4.30, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=4.30 PerfScore 4.30
-G_M45526_IG13: ; bbWeight=3.87, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.09 PerfScore 0.41
+G_M45526_IG12: ; bbWeight=0.05, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M45526_IG13: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
ldr x2, [x2, #0x18]
b G_M45526_IG05
- ;; size=8 bbWeight=3.87 PerfScore 15.48
-G_M45526_IG14: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr w1, [x0]
- tbz w1, #25, G_M45526_IG19
- ;; size=8 bbWeight=0.30 PerfScore 1.21
-G_M45526_IG15: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M45526_IG18
- ;; size=4 bbWeight=0.24 PerfScore 0.24
-G_M45526_IG16: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x1]
+ ;; size=8 bbWeight=0.04 PerfScore 0.16
+G_M45526_IG14: ; bbWeight=0.60, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M45526_IG17: ; bbWeight=0.36, epilog, nogc, extend
+ ;; size=4 bbWeight=0.60 PerfScore 0.30
+G_M45526_IG15: ; bbWeight=0.60, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.36 PerfScore 0.72
-G_M45526_IG18: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.60 PerfScore 1.20
+G_M45526_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ldr w0, [x0]
+ tbz w0, #25, G_M45526_IG18
+ ;; size=8 bbWeight=0.13 PerfScore 0.51
+G_M45526_IG17: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
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]
; gcr arg pop 0
- ;; size=44 bbWeight=0.24 PerfScore 2.06
-G_M45526_IG19: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x1, xzr
+ ;; size=36 bbWeight=0.06 PerfScore 0.48
+G_M45526_IG18: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ mov x1, x0
; gcrRegs +[x1]
- b G_M45526_IG16
- ;; size=8 bbWeight=0.64 PerfScore 0.96
+ b G_M45526_IG14
+ ;; size=12 bbWeight=0.40 PerfScore 0.80
-; Total bytes of code 176, prolog size 8, PerfScore 149.34, instruction count 44, allocated bytes for code 176 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
+; Total bytes of code 168, prolog size 8, PerfScore 22.61, instruction count 42, allocated bytes for code 168 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -119,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.74%) : 251203.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
@@ -11,20 +11,21 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) byref -> x0 this single-def
-; V01 loc0 [V01,T02] ( 4, 4 ) long -> x0
-; V02 loc1 [V02,T01] ( 9, 4.85) ref -> x19 class-hnd single-def <System.Object>
+; V01 loc0 [V01,T01] ( 4, 4 ) long -> x0
+; V02 loc1 [V02,T02] ( 9, 3.80) ref -> x19 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Array>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T03] ( 2, 3.20) byref -> x0 single-def "Inlining Arg"
+; V08 tmp5 [V08,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V12 tmp9 [V12,T06] ( 2, 0.64) long -> x0 "Cast away GC"
-; V13 tmp10 [V13,T05] ( 2, 1.23) long -> x0 "Cast away GC"
-; V14 tmp11 [V14,T04] ( 2, 1.33) long -> x0 "Cast away GC"
+; V12 tmp9 [V12,T06] ( 2, 0.40) long -> x0 "Cast away GC"
+; V13 tmp10 [V13,T04] ( 2, 0.80) long -> x0 "Cast away GC"
+; V14 tmp11 [V14,T05] ( 2, 0.80) long -> x0 "Cast away GC"
+; V15 cse0 [V15,T07] ( 3, 0.30) ref -> x1 "CSE - conservative"
;
; Lcl frame size = 8
@@ -44,33 +45,42 @@ G_M56886_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
- cbz x19, G_M56886_IG11
+ cbnz x19, G_M56886_IG05
;; size=28 bbWeight=1 PerfScore 8.00
-G_M56886_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+G_M56886_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M56886_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M56886_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
ldr x0, [x19]
ldr w0, [x0]
tst w0, #0xD1FFAB1E
beq G_M56886_IG13
- ;; size=16 bbWeight=0.80 PerfScore 6.00
-G_M56886_IG04: ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M56886_IG06: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M56886_IG07
- ;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M56886_IG05: ; bbWeight=0.33, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bne G_M56886_IG09
+ ;; size=24 bbWeight=0.40 PerfScore 2.40
+G_M56886_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #12
; byrRegs +[x0]
- ;; size=4 bbWeight=0.33 PerfScore 0.17
-G_M56886_IG06: ; bbWeight=0.33, epilog, nogc, extend
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M56886_IG08: ; bbWeight=0.20, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.33 PerfScore 1.33
-G_M56886_IG07: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
+G_M56886_IG09: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0]
mov x1, x19
; gcrRegs +[x1]
@@ -83,55 +93,45 @@ G_M56886_IG07: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M56886_IG09
- ;; size=40 bbWeight=0.31 PerfScore 2.61
-G_M56886_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbnz x0, G_M56886_IG11
+ ;; size=40 bbWeight=0.20 PerfScore 1.70
+G_M56886_IG10: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- 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
+ 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
- ;; size=44 bbWeight=0.25 PerfScore 2.09
-G_M56886_IG09: ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=0.10 PerfScore 0.75
+G_M56886_IG11: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #8
; byrRegs +[x0]
ldr x1, [x19]
ldr w1, [x1, #0x04]
sub x1, x1, #16
add x0, x0, x1
- ;; size=20 bbWeight=0.31 PerfScore 2.30
-G_M56886_IG10: ; bbWeight=0.31, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.31 PerfScore 1.23
-G_M56886_IG11: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x0]
- mov x0, xzr
- ;; size=4 bbWeight=0.20 PerfScore 0.10
+ ;; size=20 bbWeight=0.20 PerfScore 1.50
G_M56886_IG12: ; bbWeight=0.20, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.20 PerfScore 0.80
-G_M56886_IG13: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
+G_M56886_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x0]
add x0, x19, #8
; byrRegs +[x0]
- ;; size=4 bbWeight=0.16 PerfScore 0.08
-G_M56886_IG14: ; bbWeight=0.16, epilog, nogc, extend
+ ;; size=4 bbWeight=0.10 PerfScore 0.05
+G_M56886_IG14: ; bbWeight=0.10, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.16 PerfScore 0.64
+ ;; size=12 bbWeight=0.10 PerfScore 0.40
G_M56886_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; byrRegs -[x0]
@@ -151,7 +151,7 @@ G_M56886_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 12, PerfScore 31.69, instruction count 73, allocated bytes for code 292 (MethodHash=78c021c9) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
+; Total bytes of code 284, prolog size 12, PerfScore 25.00, instruction count 71, allocated bytes for code 284 (MethodHash=78c021c9) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
; ============================================================
Unwind Info:
@@ -162,7 +162,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.96%) : 251210.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTest_LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
@@ -11,19 +11,17 @@
; Final local variable assignments
;
; V00 this [V00,T08] ( 3, 2.80) ref -> x0 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
-; V01 arg1 [V01,T06] ( 7, 4.82) ref -> x1 class-hnd single-def <float[]>
-; V02 arg2 [V02,T05] ( 7, 5.43) ref -> x2 class-hnd single-def <float[]>
+; V01 arg1 [V01,T05] ( 7, 4.16) ref -> x1 class-hnd single-def <float[]>
+; V02 arg2 [V02,T06] ( 7, 3.66) ref -> x2 class-hnd single-def <float[]>
; V03 arg3 [V03,T07] ( 3, 3 ) ubyte -> x3 single-def
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
;* V05 loc0 [V05 ] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc1 [V06,T02] ( 6,146.00) ubyte -> x4
-; V07 loc2 [V07,T00] ( 11,290.44) int -> x5
+; V06 loc1 [V06,T02] ( 6, 18 ) ubyte -> x4
+; V07 loc2 [V07,T00] ( 12, 33.24) int -> x5
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 cse0 [V09,T03] ( 4, 72.91) byref -> registers hoist multi-def "CSE - aggressive"
-; V10 cse1 [V10,T04] ( 4, 72.91) byref -> registers hoist multi-def "CSE - aggressive"
-; V11 cse2 [V11,T09] ( 4, 2.53) int -> x6 hoist multi-def "CSE - aggressive"
-; V12 cse3 [V12,T01] ( 3,213.84) long -> x1 "CSE - aggressive"
-; V13 cse4 [V13,T10] ( 3, 2.16) long -> x8 "CSE - aggressive"
+; V09 cse0 [V09,T03] ( 4, 8.58) byref -> x6 hoist multi-def "CSE - aggressive"
+; V10 cse1 [V10,T04] ( 4, 8.58) byref -> x7 hoist multi-def "CSE - aggressive"
+; V11 cse2 [V11,T01] ( 3, 23.76) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,7 +35,7 @@ G_M23149_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}
mov w5, wzr
cbz x1, G_M23149_IG06
;; size=12 bbWeight=1 PerfScore 2.00
-G_M23149_IG03: ; bbWeight=0.90, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M23149_IG03: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
cbz x2, G_M23149_IG06
ldr w6, [x1, #0x08]
cmp w6, #4
@@ -49,8 +47,8 @@ G_M23149_IG03: ; bbWeight=0.90, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000
; byrRegs +[x6]
add x7, x2, #16
; byrRegs +[x7]
- ;; size=36 bbWeight=0.90 PerfScore 9.90
-G_M23149_IG04: ; bbWeight=71.28, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6 x7}, byref, isz
+ ;; size=36 bbWeight=0.50 PerfScore 5.50
+G_M23149_IG04: ; bbWeight=7.92, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6 x7}, byref, isz
; gcrRegs -[x1-x2]
mov w1, w5
ldr s16, [x6, x1, LSL #2]
@@ -62,59 +60,56 @@ G_M23149_IG04: ; bbWeight=71.28, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6
add w5, w5, #1
cmp w5, #4
blt G_M23149_IG04
- ;; size=40 bbWeight=71.28 PerfScore 784.08
+ ;; size=40 bbWeight=7.92 PerfScore 87.12
G_M23149_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; byrRegs -[x6-x7]
- b G_M23149_IG08
+ b G_M23149_IG07
;; size=4 bbWeight=1 PerfScore 1.00
-G_M23149_IG06: ; bbWeight=0.01, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+G_M23149_IG06: ; bbWeight=0.08, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2]
ldr w6, [x1, #0x08]
- add x7, x1, #16
- ; byrRegs +[x7]
- add x1, x2, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ;; size=12 bbWeight=0.01 PerfScore 0.04
-G_M23149_IG07: ; bbWeight=0.72, gcrefRegs=0005 {x0 x2}, byrefRegs=0082 {x1 x7}, byref, isz
cmp w5, w6
- bhs G_M23149_IG11
- mov w8, w5
- ldr s16, [x7, x8, LSL #2]
- ldr w9, [x2, #0x08]
- cmp w5, w9
- bhs G_M23149_IG11
- ldr s17, [x1, x8, LSL #2]
+ bhs G_M23149_IG10
+ add x6, x1, #16
+ ; byrRegs +[x6]
+ ldr s16, [x6, w5, UXTW #2]
+ ldr w7, [x2, #0x08]
+ cmp w5, w7
+ bhs G_M23149_IG10
+ add x7, x2, #16
+ ; byrRegs +[x7]
+ ldr s17, [x7, w5, UXTW #2]
fcmp s16, s17
- cset x8, ls
- orr w4, w8, w4
+ cset x6, ls
+ ; byrRegs -[x6]
+ orr w4, w6, w4
uxtb w4, w4
add w5, w5, #1
cmp w5, #4
- blt G_M23149_IG07
- ;; size=60 bbWeight=0.72 PerfScore 12.24
-G_M23149_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- ; byrRegs -[x1 x7]
+ blt G_M23149_IG06
+ ;; size=68 bbWeight=0.08 PerfScore 1.64
+G_M23149_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1-x2]
+ ; byrRegs -[x7]
uxtb w1, w3
cmp w4, w1
- beq G_M23149_IG10
+ beq G_M23149_IG09
;; size=12 bbWeight=1 PerfScore 2.00
-G_M23149_IG09: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M23149_IG08: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
strb wzr, [x0, #0x08]
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M23149_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M23149_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M23149_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23149_IG10: ; 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 204, prolog size 8, PerfScore 815.56, instruction count 51, allocated bytes for code 204 (MethodHash=cb84a592) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
+; Total bytes of code 200, prolog size 8, PerfScore 103.56, instruction count 50, allocated bytes for code 200 (MethodHash=cb84a592) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -125,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 251205.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)
@@ -10,38 +10,38 @@
; 0 inlinees with PGO data; 10 single block inlinees; 19 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 12.47) ref -> x19 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
;* V01 loc0 [V01 ] ( 0, 0 ) ubyte -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T11] ( 3, 24.74) simd16 -> [fp+0x40] do-not-enreg[SF] "non-inline candidate call"
-; V04 tmp2 [V04,T09] ( 3, 2 ) ubyte -> x1 "Inline return value spill temp"
-; V05 tmp3 [V05,T12] ( 3, 24.74) simd16 -> [fp+0x30] HFA(simd16) do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V08 tmp6 [V08 ] ( 3, 28.42) simd8 -> [fp+0x28] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V09 tmp7 [V09 ] ( 3, 28.42) simd8 -> [fp+0x20] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V10 tmp8 [V10,T10] ( 4, 37.89) float -> d16 "impAppendStmt"
-;* V11 tmp9 [V11,T01] ( 0, 0 ) int -> zero-ref
+; V03 tmp1 [V03,T12] ( 3, 6 ) simd16 -> [fp+0x40] do-not-enreg[SF] "non-inline candidate call"
+; V04 tmp2 [V04,T01] ( 3, 2 ) ubyte -> x1 "Inline return value spill temp"
+; V05 tmp3 [V05,T13] ( 3, 6 ) simd16 -> [fp+0x30] HFA(simd16) do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp5 [V07,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V08 tmp6 [V08 ] ( 3, 6 ) simd8 -> [fp+0x28] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V09 tmp7 [V09 ] ( 3, 6 ) simd8 -> [fp+0x20] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V10 tmp8 [V10,T10] ( 4, 8 ) float -> d16 "impAppendStmt"
+;* V11 tmp9 [V11,T02] ( 0, 0 ) int -> zero-ref
;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-;* V16 tmp14 [V16,T02] ( 0, 0 ) int -> zero-ref
+;* V16 tmp14 [V16,T03] ( 0, 0 ) int -> zero-ref
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T08] ( 3, 2.27) ubyte -> x1 "Inline return value spill temp"
-;* V22 tmp20 [V22,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V23 tmp21 [V23 ] ( 3, 16.51) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V24 tmp22 [V24 ] ( 3, 16.51) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T13] ( 4, 21.43) float -> d16 "impAppendStmt"
-;* V26 tmp24 [V26,T03] ( 0, 0 ) int -> zero-ref
+; V21 tmp19 [V21,T07] ( 3, 1.17) ubyte -> x1 "Inline return value spill temp"
+;* V22 tmp20 [V22,T09] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V23 tmp21 [V23 ] ( 3, 5 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V24 tmp22 [V24 ] ( 3, 5 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V25 tmp23 [V25,T11] ( 4, 6 ) float -> d16 "impAppendStmt"
+;* V26 tmp24 [V26,T05] ( 0, 0 ) int -> zero-ref
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-;* V31 tmp29 [V31,T04] ( 0, 0 ) int -> zero-ref
+;* V31 tmp29 [V31,T06] ( 0, 0 ) int -> zero-ref
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -49,14 +49,14 @@
;
; Lcl frame size = 72
-G_M21877_IG01: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21877_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x60]!
str x19, [sp, #0x58]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=4.74 PerfScore 14.21
-G_M21877_IG02: ; bbWeight=4.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M21877_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -84,13 +84,11 @@ G_M21877_IG02: ; bbWeight=4.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr s16, [fp, #0x28] // [V08 tmp6]
ldr s17, [fp, #0x20] // [V09 tmp7]
fcmp s17, s16
- bge G_M21877_IG08
+ bge G_M21877_IG06
ldr s16, [fp, #0x2C] // [V08 tmp6+0x04]
ldr s17, [fp, #0x24] // [V09 tmp7+0x04]
fcmp s17, s16
- bge G_M21877_IG08
- ;; size=112 bbWeight=4.74 PerfScore 180.00
-G_M21877_IG03: ; bbWeight=2.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ bge G_M21877_IG06
ldr d16, [fp, #0x48] // [V03 tmp1+0x08]
str d16, [fp, #0x18] // [V23 tmp21]
ldr d16, [fp, #0x38] // [V05 tmp3+0x08]
@@ -98,18 +96,26 @@ G_M21877_IG03: ; bbWeight=2.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr s16, [fp, #0x18] // [V23 tmp21]
ldr s17, [fp, #0x10] // [V24 tmp22]
fcmp s17, s16
- bge G_M21877_IG09
- ;; size=32 bbWeight=2.89 PerfScore 34.74
-G_M21877_IG04: ; bbWeight=2.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ bge G_M21877_IG05
+ ;; size=144 bbWeight=1 PerfScore 50.00
+G_M21877_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr s16, [fp, #0x1C] // [V23 tmp21+0x04]
ldr s17, [fp, #0x14] // [V24 tmp22+0x04]
fcmp s17, s16
- bge G_M21877_IG09
- ;; size=16 bbWeight=2.46 PerfScore 14.78
-G_M21877_IG05: ; bbWeight=1.51, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bge G_M21877_IG05
mov w1, wzr
- ;; size=4 bbWeight=1.51 PerfScore 0.75
-G_M21877_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
+G_M21877_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M21877_IG07
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M21877_IG05: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov w1, #1
+ b G_M21877_IG04
+ ;; size=8 bbWeight=0.17 PerfScore 0.25
+G_M21877_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov w1, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M21877_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -119,22 +125,13 @@ G_M21877_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x0 x19]
;; size=24 bbWeight=1 PerfScore 6.00
-G_M21877_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M21877_IG08: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x58]
ldp fp, lr, [sp], #0x60
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M21877_IG08: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
- mov w1, #1
- b G_M21877_IG06
- ;; size=8 bbWeight=0.48 PerfScore 0.72
-G_M21877_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov w1, #1
- b G_M21877_IG06
- ;; size=8 bbWeight=0.25 PerfScore 0.37
-; Total bytes of code 232, prolog size 12, PerfScore 255.57, instruction count 58, allocated bytes for code 232 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 67.25, instruction count 58, allocated bytes for code 232 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================
Unwind Info:
+4 (+0.50%) : 251201.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTest_LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
@@ -10,44 +10,42 @@
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 13 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 5, 5 ) ref -> x21 class-hnd single-def <float[]>
-; V02 arg2 [V02,T05] ( 5, 5 ) ref -> x22 class-hnd single-def <float[]>
-; V03 arg3 [V03,T01] ( 8, 7.52) int -> x20 single-def
-; V04 loc0 [V04,T13] ( 3, 3 ) int -> x23 single-def
-; V05 loc1 [V05,T14] ( 3, 3 ) int -> x24 single-def
+; V00 this [V00,T01] ( 13, 3.38) byref -> x20 this single-def
+; V01 arg1 [V01,T02] ( 5, 3.25) ref -> x21 class-hnd single-def <float[]>
+; V02 arg2 [V02,T03] ( 5, 3.25) ref -> x22 class-hnd single-def <float[]>
+; V03 arg3 [V03,T00] ( 11, 6.38) int -> x19 single-def
+; V04 loc0 [V04,T04] ( 3, 1.62) int -> x23 single-def
+; V05 loc1 [V05,T05] ( 3, 1.62) int -> x24 single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V08 tmp2 [V08,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp3 [V09,T02] ( 4, 7.60) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T17] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V08 tmp2 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V09 tmp3 [V09,T09] ( 4, 0.64) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V12 tmp6 [V12,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp7 [V13,T11] ( 4, 3.80) long -> x0 "Inline stloc first use temp"
-; V14 tmp8 [V14,T03] ( 4, 7.60) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V12 tmp6 [V12,T18] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp7 [V13,T15] ( 4, 0.24) long -> x0 "Inline stloc first use temp"
+; V14 tmp8 [V14,T10] ( 4, 0.64) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
;* V16 tmp10 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V17 tmp11 [V17,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp12 [V18,T12] ( 4, 3.80) long -> x0 "Inline stloc first use temp"
+; V17 tmp11 [V17,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp12 [V18,T16] ( 4, 0.24) long -> x0 "Inline stloc first use temp"
;* V19 tmp13 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V20 tmp14 [V20,T09] ( 2, 4 ) long -> x0 "Inlining Arg"
-; V21 tmp15 [V21,T06] ( 3, 6 ) long -> x1 "Inlining Arg"
+; V20 tmp14 [V20,T11] ( 2, 0.50) long -> x0 "Inlining Arg"
+; V21 tmp15 [V21,T07] ( 3, 0.75) long -> x1 "Inlining Arg"
;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp18 [V24 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V25 tmp19 [V25,T10] ( 2, 4 ) long -> x0 "Inlining Arg"
-; V26 tmp20 [V26,T07] ( 3, 6 ) long -> x1 "Inlining Arg"
+; V25 tmp19 [V25,T12] ( 2, 0.50) long -> x0 "Inlining Arg"
+; V26 tmp20 [V26,T08] ( 3, 0.75) long -> x1 "Inlining Arg"
;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V29 tmp23 [V29,T16] ( 2, 2 ) long -> x0 single-def "field V10._handle (fldOffset=0x0)" P-INDEP
-; V30 tmp24 [V30,T17] ( 2, 2 ) long -> x0 single-def "field V15._handle (fldOffset=0x0)" P-INDEP
-; V31 tmp25 [V31,T22] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V32 tmp26 [V32,T23] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V33 tmp27 [V33,T24] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V34 tmp28 [V34,T25] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp29 [V35,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V36 cse0 [V36,T15] ( 3, 3 ) long -> x25 "CSE - aggressive"
-; V37 cse1 [V37,T08] ( 4, 4 ) int -> x1 "CSE - aggressive"
+; V29 tmp23 [V29,T13] ( 2, 0.25) long -> x0 single-def "field V10._handle (fldOffset=0x0)" P-INDEP
+; V30 tmp24 [V30,T14] ( 2, 0.25) long -> x0 single-def "field V15._handle (fldOffset=0x0)" P-INDEP
+; V31 tmp25 [V31,T20] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V32 tmp26 [V32,T21] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V33 tmp27 [V33,T22] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V34 tmp28 [V34,T23] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V35 tmp29 [V35,T24] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 8
@@ -58,37 +56,35 @@ G_M14781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x23, x24, [sp, #0x38]
str x25, [sp, #0x48]
mov fp, sp
- mov x19, x0
- ; byrRegs +[x19]
+ mov x20, x0
+ ; byrRegs +[x20]
mov x21, x1
; gcrRegs +[x21]
mov x22, x2
; gcrRegs +[x22]
- mov w20, w3
+ mov w19, w3
;; size=40 bbWeight=1 PerfScore 7.50
-G_M14781_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+G_M14781_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
ldr w1, [x21, #0x08]
lsl w23, w1, #2
ldr w1, [x22, #0x08]
lsl w24, w1, #2
- sub w1, w20, #1
- tst w20, w1
+ sub w1, w19, #1
+ tst w19, w1
bne G_M14781_IG13
;; size=28 bbWeight=1 PerfScore 10.00
-G_M14781_IG03: ; bbWeight=0.52, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
- cmp w20, #0
+G_M14781_IG03: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ cmp w19, #0
ble G_M14781_IG13
- ;; size=8 bbWeight=0.52 PerfScore 0.78
-G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
- cmp w20, #16
+ lsl w1, w19, #1
+ cmp w23, w19, LSL #1
+ ccmp w19, #16, 0, le
+ ccmp w24, w1, 0, le
bgt G_M14781_IG13
- lsl w1, w20, #1
- cmp w1, w23
- blt G_M14781_IG13
- cmp w1, w24
- blt G_M14781_IG13
- sxtw x25, w1
- mov x1, x25
+ ;; size=28 bbWeight=0.50 PerfScore 2.75
+G_M14781_IG04: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ lsl w1, w19, #1
+ sxtw x1, w1
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -96,25 +92,26 @@ G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
; gcrRegs +[x0]
mov x15, x0
; gcrRegs +[x15]
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x1, x25
+ lsl w1, w19, #1
+ sxtw x1, w1
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- add x14, x19, #8
+ add x14, x20, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x25, [x19]
+ ldr x25, [x20]
; gcrRegs +[x25]
mov x0, x25
; gcrRegs +[x0]
@@ -124,29 +121,21 @@ G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbz w0, G_M14781_IG10
+ cbz w0, G_M14781_IG14
+ ;; size=104 bbWeight=0.12 PerfScore 2.75
+G_M14781_IG05: ; bbWeight=0.05, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=100000 {x20}, byref, isz
mov x0, x25
; gcrRegs +[x0]
mov w1, #3
bl <unknown method>
; gcrRegs -[x0]
- cbnz x0, G_M14781_IG06
- ;; size=144 bbWeight=1 PerfScore 29.00
-G_M14781_IG05: ; bbWeight=0.80, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=80000 {x19}, byref
- mov x0, x25
- ; gcrRegs +[x0]
- mov w1, #3
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x25]
- ;; size=28 bbWeight=0.80 PerfScore 5.20
-G_M14781_IG06: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+ cbz x0, G_M14781_IG11
+ ;; size=16 bbWeight=0.05 PerfScore 0.14
+G_M14781_IG06: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ ; gcrRegs -[x25]
orr x0, x0, #1
- str x0, [x19, #0x18]
- ldr x25, [x19, #0x08]
+ str x0, [x20, #0x18]
+ ldr x25, [x20, #0x08]
; gcrRegs +[x25]
mov x0, x25
; gcrRegs +[x0]
@@ -156,31 +145,23 @@ G_M14781_IG06: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbz w0, G_M14781_IG11
+ cbz w0, G_M14781_IG15
+ ;; size=40 bbWeight=0.12 PerfScore 1.44
+G_M14781_IG07: ; bbWeight=0.05, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=100000 {x20}, byref, isz
mov x0, x25
; gcrRegs +[x0]
mov w1, #3
bl <unknown method>
; gcrRegs -[x0]
- cbnz x0, G_M14781_IG08
- ;; size=56 bbWeight=1 PerfScore 14.50
-G_M14781_IG07: ; bbWeight=0.80, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=80000 {x19}, byref
- mov x0, x25
- ; gcrRegs +[x0]
- mov w1, #3
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x25]
- ;; size=28 bbWeight=0.80 PerfScore 5.20
-G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+ cbz x0, G_M14781_IG10
+ ;; size=16 bbWeight=0.05 PerfScore 0.14
+G_M14781_IG08: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ ; gcrRegs -[x25]
orr x0, x0, #1
- str x0, [x19, #0x20]
- sxtw x0, w20
- str x0, [x19, #0x10]
- add x0, x19, #24
+ str x0, [x20, #0x20]
+ sxtw x0, w19
+ str x0, [x20, #0x10]
+ add x0, x20, #24
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -188,7 +169,7 @@ G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; byrRegs -[x0]
- ldr x1, [x19, #0x10]
+ ldr x1, [x20, #0x10]
add x0, x0, x1
sub x0, x0, #1
sub x1, x1, #1
@@ -202,7 +183,7 @@ G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
bl CORINFO_HELP_MEMCPY
; gcrRegs -[x21]
; byrRegs -[x1]
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_pgo.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_tiered.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.linux.arm64.checked.mch |
5 |
3 |
1 |
1 |
-20 |
+4 |
libraries.crossgen2.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries.pmi.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries_tests.run.linux.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
5 |
3 |
1 |
1 |
-20 |
+4 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm64.checked.mch |
28,842 |
1,210 |
27,632 |
50 (0.17%) |
50 (0.17%) |
benchmarks.run_pgo.linux.arm64.checked.mch |
125,945 |
51,761 |
74,184 |
54 (0.04%) |
54 (0.04%) |
benchmarks.run_tiered.linux.arm64.checked.mch |
57,979 |
43,144 |
14,835 |
47 (0.08%) |
47 (0.08%) |
coreclr_tests.run.linux.arm64.checked.mch |
393,725 |
185,167 |
208,558 |
148 (0.04%) |
148 (0.04%) |
libraries.crossgen2.linux.arm64.checked.mch |
264,355 |
15 |
264,340 |
553 (0.21%) |
553 (0.21%) |
libraries.pmi.linux.arm64.checked.mch |
295,798 |
6 |
295,792 |
74 (0.03%) |
74 (0.03%) |
libraries_tests.run.linux.arm64.Release.mch |
88,388 |
65,551 |
22,837 |
9 (0.01%) |
9 (0.01%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
302,974 |
21,620 |
281,354 |
2,287 (0.75%) |
2,287 (0.75%) |
realworld.run.linux.arm64.checked.mch |
33,408 |
163 |
33,245 |
10 (0.03%) |
10 (0.03%) |
smoke_tests.nativeaot.linux.arm64.checked.mch |
18,858 |
7 |
18,851 |
196 (1.03%) |
196 (1.03%) |
|
1,610,272 |
368,644 |
1,241,628 |
3,428 (0.21%) |
3,428 (0.21%) |
jit-analyze output
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: 301232224 (overridden on cmd)
Total bytes of diff: 301232208 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 251201.dasm (0.50 % of base)
Top file improvements (bytes):
-8 : 251203.dasm (-2.74 % of base)
-8 : 251204.dasm (-4.55 % of base)
-4 : 251210.dasm (-1.96 % of base)
4 total files with Code Size differences (3 improved, 1 regressed), 1 unchanged.
Top method regressions (bytes):
4 (0.50 % of base) : 251201.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
Top method improvements (bytes):
-8 (-4.55 % of base) : 251204.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
-8 (-2.74 % of base) : 251203.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
-4 (-1.96 % of base) : 251210.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
Top method regressions (percentages):
4 (0.50 % of base) : 251201.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
Top method improvements (percentages):
-8 (-4.55 % of base) : 251204.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
-8 (-2.74 % of base) : 251203.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
-4 (-1.96 % of base) : 251210.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
4 total methods with Code Size differences (3 improved, 1 regressed).
linux x64
Diffs are based on 1,620,764 contexts (360,162 MinOpts, 1,260,602 FullOpts).
MISSED contexts: 3,086 (0.19%)
Overall (-15 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.linux.x64.checked.mch |
247,129,711 |
-15 |
FullOpts (-15 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.linux.x64.checked.mch |
106,762,830 |
-15 |
Example diffs
coreclr_tests.run.linux.x64.checked.mch
-9 (-7.26%) : 323967.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
@@ -10,11 +10,12 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 30.05) long -> rdi single-def
-; V01 arg1 [V01,T02] ( 7, 5.44) ref -> rsi class-hnd <System.Object>
-; V02 loc0 [V02,T00] ( 17, 95.49) long -> rax
+; V00 arg0 [V00,T01] ( 8, 6.97) long -> rdi single-def
+; V01 arg1 [V01,T02] ( 7, 4.90) ref -> rsi class-hnd <System.Object>
+; V02 loc0 [V02,T00] ( 17, 9.21) long -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V05 cse0 [V05,T03] ( 3, 0.19) ref -> rsi "CSE - conservative"
;
; Lcl frame size = 0
@@ -25,89 +26,84 @@ G_M45526_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M45526_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M45526_IG16
+ je SHORT G_M45526_IG14
;; size=5 bbWeight=1 PerfScore 1.25
-G_M45526_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M45526_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rsi], rdi
- je SHORT G_M45526_IG16
- ;; size=5 bbWeight=0.80 PerfScore 3.20
-G_M45526_IG04: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ je SHORT G_M45526_IG14
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M45526_IG04: ; bbWeight=0.40, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, qword ptr [rsi]
mov rax, qword ptr [rax+0x18]
- ;; size=7 bbWeight=0.64 PerfScore 2.56
-G_M45526_IG05: ; bbWeight=8.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=7 bbWeight=0.40 PerfScore 1.60
+G_M45526_IG05: ; bbWeight=3.24, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp rax, rdi
- je SHORT G_M45526_IG16
- ;; size=5 bbWeight=8.99 PerfScore 11.24
-G_M45526_IG06: ; bbWeight=8.09, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test rax, rax
je SHORT G_M45526_IG14
- ;; size=5 bbWeight=8.09 PerfScore 10.11
-G_M45526_IG07: ; bbWeight=7.28, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=5 bbWeight=3.24 PerfScore 4.05
+G_M45526_IG06: ; bbWeight=1.62, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ je SHORT G_M45526_IG16
+ ;; size=5 bbWeight=1.62 PerfScore 2.03
+G_M45526_IG07: ; bbWeight=0.81, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rax+0x18]
cmp rax, rdi
- je SHORT G_M45526_IG16
- ;; size=9 bbWeight=7.28 PerfScore 23.67
-G_M45526_IG08: ; bbWeight=6.55, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test rax, rax
je SHORT G_M45526_IG14
- ;; size=5 bbWeight=6.55 PerfScore 8.19
-G_M45526_IG09: ; bbWeight=5.90, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.81 PerfScore 2.63
+G_M45526_IG08: ; bbWeight=0.41, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ je SHORT G_M45526_IG16
+ ;; size=5 bbWeight=0.41 PerfScore 0.51
+G_M45526_IG09: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rax+0x18]
cmp rax, rdi
- je SHORT G_M45526_IG16
- ;; size=9 bbWeight=5.90 PerfScore 19.17
-G_M45526_IG10: ; bbWeight=5.31, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test rax, rax
je SHORT G_M45526_IG14
- ;; size=5 bbWeight=5.31 PerfScore 6.64
-G_M45526_IG11: ; bbWeight=4.78, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.20 PerfScore 0.66
+G_M45526_IG10: ; bbWeight=0.10, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ je SHORT G_M45526_IG16
+ ;; size=5 bbWeight=0.10 PerfScore 0.13
+G_M45526_IG11: ; bbWeight=0.09, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rax+0x18]
cmp rax, rdi
- je SHORT G_M45526_IG16
- ;; size=9 bbWeight=4.78 PerfScore 15.53
-G_M45526_IG12: ; bbWeight=4.30, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test rax, rax
je SHORT G_M45526_IG14
- ;; size=5 bbWeight=4.30 PerfScore 5.37
-G_M45526_IG13: ; bbWeight=3.87, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.09 PerfScore 0.30
+G_M45526_IG12: ; bbWeight=0.05, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ je SHORT G_M45526_IG16
+ ;; size=5 bbWeight=0.05 PerfScore 0.06
+G_M45526_IG13: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rax+0x18]
jmp SHORT G_M45526_IG05
- ;; size=6 bbWeight=3.87 PerfScore 15.48
-G_M45526_IG14: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- test dword ptr [rdi], 0xD1FFAB1E
- je SHORT G_M45526_IG19
- ;; size=8 bbWeight=0.30 PerfScore 1.21
-G_M45526_IG15: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M45526_IG18
- ;; size=2 bbWeight=0.24 PerfScore 0.49
-G_M45526_IG16: ; bbWeight=0.36, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rsi]
+ ;; size=6 bbWeight=0.04 PerfScore 0.16
+G_M45526_IG14: ; bbWeight=0.60, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, rsi
; gcrRegs +[rax]
- ;; size=3 bbWeight=0.36 PerfScore 0.09
-G_M45526_IG17: ; bbWeight=0.36, epilog, nogc, extend
+ ;; size=3 bbWeight=0.60 PerfScore 0.15
+G_M45526_IG15: ; bbWeight=0.60, epilog, nogc, extend
pop rbp
ret
- ;; size=2 bbWeight=0.36 PerfScore 0.54
-G_M45526_IG18: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=2 bbWeight=0.60 PerfScore 0.90
+G_M45526_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rsi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
+ test dword ptr [rdi], 0xD1FFAB1E
+ je SHORT G_M45526_IG18
+ ;; size=8 bbWeight=0.13 PerfScore 0.51
+G_M45526_IG17: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- ;; size=26 bbWeight=0.24 PerfScore 0.85
-G_M45526_IG19: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=0.06 PerfScore 0.22
+G_M45526_IG18: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor rsi, rsi
; gcrRegs +[rsi]
- jmp SHORT G_M45526_IG16
- ;; size=4 bbWeight=0.64 PerfScore 1.44
+ jmp SHORT G_M45526_IG14
+ ;; size=4 bbWeight=0.40 PerfScore 0.90
-; Total bytes of code 124, prolog size 4, PerfScore 128.27, instruction count 40, allocated bytes for code 124 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
+; Total bytes of code 115, prolog size 4, PerfScore 19.31, instruction count 39, allocated bytes for code 115 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
-7 (-3.76%) : 323966.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
@@ -11,20 +11,21 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) byref -> rdi this single-def
-; V01 loc0 [V01,T02] ( 4, 4 ) long -> rdi
-; V02 loc1 [V02,T01] ( 9, 4.85) ref -> rbx class-hnd single-def <System.Object>
+; V01 loc0 [V01,T01] ( 4, 4 ) long -> rdi
+; V02 loc1 [V02,T02] ( 9, 3.80) ref -> rbx class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Array>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T03] ( 2, 3.20) byref -> rax single-def "Inlining Arg"
+; V08 tmp5 [V08,T03] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V12 tmp9 [V12,T06] ( 2, 0.64) long -> rax "Cast away GC"
-; V13 tmp10 [V13,T05] ( 2, 1.23) long -> rax "Cast away GC"
-; V14 tmp11 [V14,T04] ( 2, 1.33) long -> rax "Cast away GC"
+; V12 tmp9 [V12,T06] ( 2, 0.40) long -> rax "Cast away GC"
+; V13 tmp10 [V13,T04] ( 2, 0.80) long -> rax "Cast away GC"
+; V14 tmp11 [V14,T05] ( 2, 0.80) long -> rax "Cast away GC"
+; V15 cse0 [V15,T07] ( 3, 0.30) ref -> rsi "CSE - conservative"
;
; Lcl frame size = 8
@@ -48,30 +49,40 @@ G_M56886_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
mov rbx, rax
; gcrRegs +[rbx]
test rbx, rbx
- je SHORT G_M56886_IG11
+ jne SHORT G_M56886_IG05
;; size=39 bbWeight=1 PerfScore 7.25
-G_M56886_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rax, qword ptr [rbx]
- test dword ptr [rax], 0xD1FFAB1E
- je SHORT G_M56886_IG13
- ;; size=11 bbWeight=0.80 PerfScore 4.80
-G_M56886_IG04: ; bbWeight=0.64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; System.String
- cmp qword ptr [rbx], rax
- jne SHORT G_M56886_IG07
- ;; size=15 bbWeight=0.64 PerfScore 2.72
-G_M56886_IG05: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- lea rax, bword ptr [rbx+0x0C]
- ; byrRegs +[rax]
- ;; size=4 bbWeight=0.33 PerfScore 0.17
-G_M56886_IG06: ; bbWeight=0.33, epilog, nogc, extend
+G_M56886_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbx]
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M56886_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
- ;; size=7 bbWeight=0.33 PerfScore 0.75
-G_M56886_IG07: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M56886_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx]
+ mov rax, qword ptr [rbx]
+ test dword ptr [rax], 0xD1FFAB1E
+ je SHORT G_M56886_IG13
+ ;; size=11 bbWeight=0.50 PerfScore 3.00
+G_M56886_IG06: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.String
+ cmp qword ptr [rbx], rax
+ jne SHORT G_M56886_IG09
+ ;; size=15 bbWeight=0.40 PerfScore 1.70
+G_M56886_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ lea rax, bword ptr [rbx+0x0C]
+ ; byrRegs +[rax]
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M56886_IG08: ; bbWeight=0.20, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ ret
+ ;; size=7 bbWeight=0.20 PerfScore 0.45
+G_M56886_IG09: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax]
mov rsi, rbx
; gcrRegs +[rsi]
@@ -79,51 +90,40 @@ G_M56886_IG07: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=000
call [CORINFO_HELP_ISINSTANCEOFCLASS]
; gcrRegs -[rsi] +[rax]
test rax, rax
- jne SHORT G_M56886_IG09
- ;; size=24 bbWeight=0.31 PerfScore 1.46
-G_M56886_IG08: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M56886_IG11
+ ;; size=24 bbWeight=0.20 PerfScore 0.95
+G_M56886_IG10: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- ;; size=26 bbWeight=0.25 PerfScore 0.86
-G_M56886_IG09: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=0.10 PerfScore 0.35
+G_M56886_IG11: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, qword ptr [rbx]
mov eax, dword ptr [rax+0x04]
lea rax, bword ptr [rbx+rax-0x08]
; byrRegs +[rax]
- ;; size=11 bbWeight=0.31 PerfScore 1.54
-G_M56886_IG10: ; bbWeight=0.31, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop rbp
- ret
- ;; size=7 bbWeight=0.31 PerfScore 0.69
-G_M56886_IG11: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[rax]
- xor eax, eax
- ;; size=2 bbWeight=0.20 PerfScore 0.05
+ ;; size=11 bbWeight=0.20 PerfScore 1.00
G_M56886_IG12: ; bbWeight=0.20, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.20 PerfScore 0.45
-G_M56886_IG13: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
+G_M56886_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[rax]
lea rax, bword ptr [rbx+0x08]
; byrRegs +[rax]
- ;; size=4 bbWeight=0.16 PerfScore 0.08
-G_M56886_IG14: ; bbWeight=0.16, epilog, nogc, extend
+ ;; size=4 bbWeight=0.10 PerfScore 0.05
+G_M56886_IG14: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
- ;; size=7 bbWeight=0.16 PerfScore 0.36
+ ;; size=7 bbWeight=0.10 PerfScore 0.23
G_M56886_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx]
; byrRegs -[rax]
@@ -135,7 +135,7 @@ G_M56886_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 186, prolog size 8, PerfScore 24.67, instruction count 54, allocated bytes for code 186 (MethodHash=78c021c9) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
+; Total bytes of code 179, prolog size 8, PerfScore 20.28, instruction count 54, allocated bytes for code 179 (MethodHash=78c021c9) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
; ============================================================
Unwind Info:
-4 (-2.56%) : 323973.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTest_LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
@@ -11,17 +11,15 @@
; Final local variable assignments
;
; V00 this [V00,T06] ( 3, 2.80) ref -> rdi this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
-; V01 arg1 [V01,T04] ( 7, 75.91) ref -> rsi class-hnd single-def <float[]>
-; V02 arg2 [V02,T03] ( 7, 76.52) ref -> rdx class-hnd single-def <float[]>
+; V01 arg1 [V01,T03] ( 7, 11.58) ref -> rsi class-hnd single-def <float[]>
+; V02 arg2 [V02,T04] ( 7, 11.08) ref -> rdx class-hnd single-def <float[]>
; V03 arg3 [V03,T05] ( 3, 3 ) ubyte -> rcx single-def
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
;* V05 loc0 [V05 ] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc1 [V06,T02] ( 6,146.00) ubyte -> rax
-; V07 loc2 [V07,T00] ( 11,290.44) int -> r8
+; V06 loc1 [V06,T02] ( 6, 18 ) ubyte -> rax
+; V07 loc2 [V07,T00] ( 12, 33.24) int -> r8
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 cse0 [V09,T07] ( 4, 2.53) int -> r9 hoist multi-def "CSE - aggressive"
-; V10 cse1 [V10,T01] ( 3,213.84) long -> r9 "CSE - aggressive"
-; V11 cse2 [V11,T08] ( 3, 2.16) long -> r10 "CSE - aggressive"
+; V09 cse0 [V09,T01] ( 3, 23.76) long -> r9 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -36,16 +34,15 @@ G_M23149_IG02: ; bbWeight=1, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000
test rsi, rsi
je SHORT G_M23149_IG06
;; size=10 bbWeight=1 PerfScore 1.75
-G_M23149_IG03: ; bbWeight=0.90, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M23149_IG03: ; bbWeight=0.50, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
je SHORT G_M23149_IG06
- mov r9d, dword ptr [rsi+0x08]
- cmp r9d, 4
+ cmp dword ptr [rsi+0x08], 4
jl SHORT G_M23149_IG06
cmp dword ptr [rdx+0x08], 4
jl SHORT G_M23149_IG06
- ;; size=21 bbWeight=0.90 PerfScore 7.65
-G_M23149_IG04: ; bbWeight=71.28, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=17 bbWeight=0.50 PerfScore 4.62
+G_M23149_IG04: ; bbWeight=7.92, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r9d, r8d
movss xmm0, dword ptr [rsi+4*r9+0x10]
movss xmm1, dword ptr [rdx+4*r9+0x10]
@@ -57,53 +54,51 @@ G_M23149_IG04: ; bbWeight=71.28, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=
inc r8d
cmp r8d, 4
jl SHORT G_M23149_IG04
- ;; size=42 bbWeight=71.28 PerfScore 962.28
+ ;; size=42 bbWeight=7.92 PerfScore 106.92
G_M23149_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rsi]
- jmp SHORT G_M23149_IG08
+ jmp SHORT G_M23149_IG07
;; size=2 bbWeight=1 PerfScore 2.00
-G_M23149_IG06: ; bbWeight=0.01, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+G_M23149_IG06: ; bbWeight=0.08, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rsi]
- mov r9d, dword ptr [rsi+0x08]
- ;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M23149_IG07: ; bbWeight=0.72, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r8d, r9d
- jae SHORT G_M23149_IG11
- mov r10d, r8d
- movss xmm0, dword ptr [rsi+4*r10+0x10]
+ cmp r8d, dword ptr [rsi+0x08]
+ jae SHORT G_M23149_IG10
+ mov r9d, r8d
+ movss xmm0, dword ptr [rsi+4*r9+0x10]
cmp r8d, dword ptr [rdx+0x08]
- jae SHORT G_M23149_IG11
- movss xmm1, dword ptr [rdx+4*r10+0x10]
- xor r10d, r10d
+ jae SHORT G_M23149_IG10
+ mov r9d, r8d
+ movss xmm1, dword ptr [rdx+4*r9+0x10]
+ xor r9d, r9d
ucomiss xmm1, xmm0
- setae r10b
- or r10d, eax
- movzx rax, r10b
+ setae r9b
+ or r9d, eax
+ movzx rax, r9b
inc r8d
cmp r8d, 4
- jl SHORT G_M23149_IG07
- ;; size=54 bbWeight=0.72 PerfScore 13.50
-G_M23149_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M23149_IG06
+ ;; size=58 bbWeight=0.08 PerfScore 1.74
+G_M23149_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rsi]
movzx rcx, cl
cmp eax, ecx
- je SHORT G_M23149_IG10
+ je SHORT G_M23149_IG09
;; size=7 bbWeight=1 PerfScore 1.50
-G_M23149_IG09: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M23149_IG08: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov byte ptr [rdi+0x08], 0
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M23149_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M23149_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-G_M23149_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23149_IG10: ; 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 156, prolog size 4, PerfScore 992.25, instruction count 49, allocated bytes for code 156 (MethodHash=cb84a592) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
+; Total bytes of code 152, prolog size 4, PerfScore 122.08, instruction count 48, allocated bytes for code 152 (MethodHash=cb84a592) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 323968.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)
@@ -10,58 +10,58 @@
; 0 inlinees with PGO data; 4 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 12.47) ref -> rbx this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
;* V01 loc0 [V01 ] ( 0, 0 ) ubyte -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T11] ( 3, 24.74) simd16 -> [rbp-0x20] do-not-enreg[SF] "non-inline candidate call"
-; V04 tmp2 [V04,T09] ( 3, 2 ) ubyte -> rsi "Inline return value spill temp"
-; V05 tmp3 [V05,T12] ( 3, 24.74) simd16 -> [rbp-0x30] do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V08 tmp6 [V08 ] ( 3, 28.42) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V09 tmp7 [V09 ] ( 3, 28.42) struct ( 8) [rbp-0x40] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V10 tmp8 [V10,T10] ( 4, 37.89) float -> mm0 "impAppendStmt"
-;* V11 tmp9 [V11,T01] ( 0, 0 ) int -> zero-ref
+; V03 tmp1 [V03,T12] ( 3, 6 ) simd16 -> [rbp-0x20] do-not-enreg[SF] "non-inline candidate call"
+; V04 tmp2 [V04,T01] ( 3, 2 ) ubyte -> rsi "Inline return value spill temp"
+; V05 tmp3 [V05,T13] ( 3, 6 ) simd16 -> [rbp-0x30] do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp5 [V07,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V08 tmp6 [V08 ] ( 3, 6 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V09 tmp7 [V09 ] ( 3, 6 ) struct ( 8) [rbp-0x40] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V10 tmp8 [V10,T10] ( 4, 8 ) float -> mm0 "impAppendStmt"
+;* V11 tmp9 [V11,T02] ( 0, 0 ) int -> zero-ref
;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-;* V16 tmp14 [V16,T02] ( 0, 0 ) int -> zero-ref
+;* V16 tmp14 [V16,T03] ( 0, 0 ) int -> zero-ref
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T08] ( 3, 2.27) ubyte -> rsi "Inline return value spill temp"
-;* V22 tmp20 [V22,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V23 tmp21 [V23 ] ( 3, 16.51) struct ( 8) [rbp-0x48] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V24 tmp22 [V24 ] ( 3, 16.51) struct ( 8) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T13] ( 4, 21.43) float -> mm0 "impAppendStmt"
-;* V26 tmp24 [V26,T03] ( 0, 0 ) int -> zero-ref
+; V21 tmp19 [V21,T07] ( 3, 1.17) ubyte -> rsi "Inline return value spill temp"
+;* V22 tmp20 [V22,T09] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V23 tmp21 [V23 ] ( 3, 5 ) struct ( 8) [rbp-0x48] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V24 tmp22 [V24 ] ( 3, 5 ) struct ( 8) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V25 tmp23 [V25,T11] ( 4, 6 ) float -> mm0 "impAppendStmt"
+;* V26 tmp24 [V26,T05] ( 0, 0 ) int -> zero-ref
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-;* V31 tmp29 [V31,T04] ( 0, 0 ) int -> zero-ref
+;* V31 tmp29 [V31,T06] ( 0, 0 ) int -> zero-ref
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp33 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V36 tmp34 [V36 ] ( 3, 23.68) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V08._00 (fldOffset=0x0)" P-DEP
-; V37 tmp35 [V37 ] ( 3, 23.68) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V09._00 (fldOffset=0x0)" P-DEP
-; V38 tmp36 [V38 ] ( 3, 13.61) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V23._00 (fldOffset=0x0)" P-DEP
-; V39 tmp37 [V39 ] ( 3, 13.61) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V24._00 (fldOffset=0x0)" P-DEP
+; V36 tmp34 [V36 ] ( 3, 5 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V08._00 (fldOffset=0x0)" P-DEP
+; V37 tmp35 [V37 ] ( 3, 5 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V09._00 (fldOffset=0x0)" P-DEP
+; V38 tmp36 [V38 ] ( 3, 4 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V23._00 (fldOffset=0x0)" P-DEP
+; V39 tmp37 [V39 ] ( 3, 4 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V24._00 (fldOffset=0x0)" P-DEP
;
; Lcl frame size = 72
-G_M21877_IG01: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21877_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push rbx
sub rsp, 72
lea rbp, [rsp+0x50]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=14 bbWeight=4.74 PerfScore 14.21
-G_M21877_IG02: ; bbWeight=4.74, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=1 PerfScore 3.00
+G_M21877_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
call [<unknown method>]
@@ -81,13 +81,11 @@ G_M21877_IG02: ; bbWeight=4.74, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
movss xmm0, dword ptr [rbp-0x38]
movss xmm1, dword ptr [rbp-0x40]
ucomiss xmm1, xmm0
- jae SHORT G_M21877_IG08
+ jae SHORT G_M21877_IG06
movss xmm0, dword ptr [rbp-0x34]
movss xmm1, dword ptr [rbp-0x3C]
ucomiss xmm1, xmm0
- jae SHORT G_M21877_IG08
- ;; size=78 bbWeight=4.74 PerfScore 182.37
-G_M21877_IG03: ; bbWeight=2.89, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M21877_IG06
mov rdi, qword ptr [rbp-0x18]
mov qword ptr [rbp-0x48], rdi
mov rdi, qword ptr [rbp-0x28]
@@ -95,41 +93,40 @@ G_M21877_IG03: ; bbWeight=2.89, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
movss xmm0, dword ptr [rbp-0x48]
movss xmm1, dword ptr [rbp-0x50]
ucomiss xmm1, xmm0
- jae SHORT G_M21877_IG09
- ;; size=31 bbWeight=2.89 PerfScore 37.63
-G_M21877_IG04: ; bbWeight=2.46, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M21877_IG05
+ ;; size=109 bbWeight=1 PerfScore 51.50
+G_M21877_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
movss xmm0, dword ptr [rbp-0x44]
movss xmm1, dword ptr [rbp-0x4C]
ucomiss xmm1, xmm0
- jae SHORT G_M21877_IG09
- ;; size=15 bbWeight=2.46 PerfScore 22.17
-G_M21877_IG05: ; bbWeight=1.51, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jae SHORT G_M21877_IG05
xor esi, esi
- ;; size=2 bbWeight=1.51 PerfScore 0.38
-G_M21877_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=17 bbWeight=0.50 PerfScore 4.62
+G_M21877_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M21877_IG07
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M21877_IG05: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov esi, 1
+ jmp SHORT G_M21877_IG04
+ ;; size=7 bbWeight=0.17 PerfScore 0.37
+G_M21877_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov esi, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M21877_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rbx rdi]
nop
;; size=10 bbWeight=1 PerfScore 3.50
-G_M21877_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M21877_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M21877_IG08: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- mov esi, 1
- jmp SHORT G_M21877_IG06
- ;; size=7 bbWeight=0.48 PerfScore 1.08
-G_M21877_IG09: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov esi, 1
- jmp SHORT G_M21877_IG06
- ;; size=7 bbWeight=0.25 PerfScore 0.55
-; Total bytes of code 171, prolog size 11, PerfScore 264.14, instruction count 49, allocated bytes for code 171 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+; Total bytes of code 171, prolog size 11, PerfScore 66.38, instruction count 49, allocated bytes for code 171 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================
Unwind Info:
+5 (+0.78%) : 323964.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTest_LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
@@ -10,46 +10,44 @@
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 13 ) byref -> rbx this single-def
-; V01 arg1 [V01,T04] ( 5, 5 ) ref -> r14 class-hnd single-def <float[]>
-; V02 arg2 [V02,T05] ( 5, 5 ) ref -> r13 class-hnd single-def <float[]>
-; V03 arg3 [V03,T01] ( 8, 7.52) int -> r15 single-def
-; V04 loc0 [V04,T13] ( 3, 3 ) int -> r12 single-def
-; V05 loc1 [V05,T14] ( 3, 3 ) int -> [rbp-0x2C] spill-single-def
+; V00 this [V00,T01] ( 13, 3.38) byref -> r15 this single-def
+; V01 arg1 [V01,T02] ( 5, 3.25) ref -> r14 class-hnd single-def <float[]>
+; V02 arg2 [V02,T03] ( 5, 3.25) ref -> r13 class-hnd single-def <float[]>
+; V03 arg3 [V03,T00] ( 11, 6.12) int -> rbx single-def
+; V04 loc0 [V04,T04] ( 3, 1.62) int -> r12 single-def
+; V05 loc1 [V05,T05] ( 3, 1.38) int -> [rbp-0x2C] spill-single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T19] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V08 tmp2 [V08,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp3 [V09,T02] ( 4, 7.60) ref -> [rbp-0x40] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V08 tmp2 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V09 tmp3 [V09,T09] ( 4, 0.64) ref -> [rbp-0x38] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V12 tmp6 [V12,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp7 [V13,T11] ( 4, 3.80) long -> rax "Inline stloc first use temp"
-; V14 tmp8 [V14,T03] ( 4, 7.60) ref -> [rbp-0x48] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V12 tmp6 [V12,T18] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp7 [V13,T15] ( 4, 0.24) long -> rax "Inline stloc first use temp"
+; V14 tmp8 [V14,T10] ( 4, 0.64) ref -> [rbp-0x40] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
;* V16 tmp10 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V17 tmp11 [V17,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp12 [V18,T12] ( 4, 3.80) long -> rax "Inline stloc first use temp"
+; V17 tmp11 [V17,T19] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp12 [V18,T16] ( 4, 0.24) long -> rax "Inline stloc first use temp"
;* V19 tmp13 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V20 tmp14 [V20,T09] ( 2, 4 ) long -> rax "Inlining Arg"
-; V21 tmp15 [V21,T06] ( 3, 6 ) long -> rdx "Inlining Arg"
+; V20 tmp14 [V20,T11] ( 2, 0.50) long -> rax "Inlining Arg"
+; V21 tmp15 [V21,T07] ( 3, 0.75) long -> rdx "Inlining Arg"
;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp18 [V24 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V25 tmp19 [V25,T10] ( 2, 4 ) long -> rax "Inlining Arg"
-; V26 tmp20 [V26,T07] ( 3, 6 ) long -> rdx "Inlining Arg"
+; V25 tmp19 [V25,T12] ( 2, 0.50) long -> rax "Inlining Arg"
+; V26 tmp20 [V26,T08] ( 3, 0.75) long -> rdx "Inlining Arg"
;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V29 tmp23 [V29,T16] ( 2, 2 ) long -> rax single-def "field V10._handle (fldOffset=0x0)" P-INDEP
-; V30 tmp24 [V30,T17] ( 2, 2 ) long -> rax single-def "field V15._handle (fldOffset=0x0)" P-INDEP
-; V31 tmp25 [V31,T22] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V32 tmp26 [V32,T23] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V33 tmp27 [V33,T24] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V34 tmp28 [V34,T25] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V35 tmp29 [V35,T26] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V36 cse0 [V36,T15] ( 3, 3 ) long -> [rbp-0x38] spill-single-def "CSE - moderate"
-; V37 cse1 [V37,T08] ( 4, 4 ) int -> rsi "CSE - moderate"
+; V29 tmp23 [V29,T13] ( 2, 0.25) long -> rax single-def "field V10._handle (fldOffset=0x0)" P-INDEP
+; V30 tmp24 [V30,T14] ( 2, 0.25) long -> rax single-def "field V15._handle (fldOffset=0x0)" P-INDEP
+; V31 tmp25 [V31,T20] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V32 tmp26 [V32,T21] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V33 tmp27 [V33,T22] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V34 tmp28 [V34,T23] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V35 tmp29 [V35,T24] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M14781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -58,162 +56,155 @@ G_M14781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
- mov rbx, rdi
- ; byrRegs +[rbx]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
+ mov r15, rdi
+ ; byrRegs +[r15]
mov r14, rsi
; gcrRegs +[r14]
mov r13, rdx
; gcrRegs +[r13]
- mov r15d, ecx
- ;; size=31 bbWeight=1 PerfScore 7.75
-G_M14781_IG02: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref
+ mov ebx, ecx
+ ;; size=30 bbWeight=1 PerfScore 7.75
+G_M14781_IG02: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=8000 {r15}, byref
mov r12d, dword ptr [r14+0x08]
shl r12d, 2
mov eax, dword ptr [r13+0x08]
shl eax, 2
mov dword ptr [rbp-0x2C], eax
- lea esi, [r15-0x01]
- test r15d, esi
- jne G_M14781_IG13
- ;; size=31 bbWeight=1 PerfScore 7.75
-G_M14781_IG03: ; bbWeight=0.52, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref
- test r15d, r15d
- jle G_M14781_IG13
- ;; size=9 bbWeight=0.52 PerfScore 0.65
-G_M14781_IG04: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref, isz
- cmp r15d, 16
- jg G_M14781_IG13
- lea esi, [r15+r15]
+ lea esi, [rbx-0x01]
+ test ebx, esi
+ jne G_M14781_IG14
+ ;; size=29 bbWeight=1 PerfScore 7.75
+G_M14781_IG03: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=8000 {r15}, byref
+ test ebx, ebx
+ jle G_M14781_IG14
+ cmp ebx, 16
+ jg G_M14781_IG14
+ lea esi, [rbx+rbx]
cmp esi, r12d
- jl G_M14781_IG13
+ jl G_M14781_IG14
+ ;; size=29 bbWeight=0.50 PerfScore 2.12
+G_M14781_IG04: ; bbWeight=0.25, gcrefRegs=6000 {r13 r14}, byrefRegs=8000 {r15}, byref
+ lea esi, [rbx+rbx]
cmp esi, eax
- jl G_M14781_IG13
- movsxd rcx, esi
- mov qword ptr [rbp-0x38], rcx
- mov rsi, rcx
+ jl G_M14781_IG14
+ ;; size=11 bbWeight=0.25 PerfScore 0.44
+G_M14781_IG05: ; bbWeight=0.12, gcrefRegs=6000 {r13 r14}, byrefRegs=8000 {r15}, byref
+ lea esi, [rbx+rbx]
+ movsxd rsi, esi
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
mov rsi, rax
; gcrRegs +[rsi]
- mov rdi, rbx
+ mov rdi, r15
; byrRegs +[rdi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rsi, qword ptr [rbp-0x38]
+ lea esi, [rbx+rbx]
+ movsxd rsi, esi
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
- lea rdi, bword ptr [rbx+0x08]
+ lea rdi, bword ptr [r15+0x08]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rax, gword ptr [rbx]
+ mov rax, gword ptr [r15]
; gcrRegs +[rax]
- mov gword ptr [rbp-0x40], rax
+ mov gword ptr [rbp-0x38], rax
; GC ptr vars +{V09}
mov rdi, rax
; gcrRegs +[rdi]
call [System.Runtime.InteropServices.Marshal:IsPinnable(System.Object):ubyte]
; gcrRegs -[rax rdi]
test eax, eax
- je G_M14781_IG10
- mov rdi, gword ptr [rbp-0x40]
+ je G_M14781_IG15
+ ;; size=89 bbWeight=0.12 PerfScore 1.84
+G_M14781_IG06: ; bbWeight=0.05, gcrefRegs=6000 {r13 r14}, byrefRegs=8000 {r15}, byref
+ mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
mov esi, 3
call <unknown method>
; gcrRegs -[rdi]
test rax, rax
- jne SHORT G_M14781_IG06
- ;; size=141 bbWeight=1 PerfScore 23.50
-G_M14781_IG05: ; bbWeight=0.80, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref
- mov rdi, gword ptr [rbp-0x40]
- ; gcrRegs +[rdi]
- mov esi, 3
+ je G_M14781_IG12
+ ;; size=23 bbWeight=0.05 PerfScore 0.16
+G_M14781_IG07: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=8000 {r15}, gcvars, byref
; GC ptr vars -{V09}
- call [<unknown method>]
- ; gcrRegs -[rdi]
- ;; size=15 bbWeight=0.80 PerfScore 3.40
-G_M14781_IG06: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref, isz
or rax, 1
- mov qword ptr [rbx+0x18], rax
- mov rax, gword ptr [rbx+0x08]
+ mov qword ptr [r15+0x18], rax
+ mov rax, gword ptr [r15+0x08]
; gcrRegs +[rax]
- mov gword ptr [rbp-0x48], rax
+ mov gword ptr [rbp-0x40], rax
; GC ptr vars +{V14}
mov rdi, rax
; gcrRegs +[rdi]
call [System.Runtime.InteropServices.Marshal:IsPinnable(System.Object):ubyte]
; gcrRegs -[rax rdi]
test eax, eax
- je G_M14781_IG11
- mov rdi, gword ptr [rbp-0x48]
+ je G_M14781_IG16
+ ;; size=33 bbWeight=0.12 PerfScore 1.09
+G_M14781_IG08: ; bbWeight=0.05, gcrefRegs=6000 {r13 r14}, byrefRegs=8000 {r15}, byref
+ mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi]
mov esi, 3
call <unknown method>
; gcrRegs -[rdi]
test rax, rax
- jne SHORT G_M14781_IG08
- ;; size=52 bbWeight=1 PerfScore 12.25
-G_M14781_IG07: ; bbWeight=0.80, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref
- mov rdi, gword ptr [rbp-0x48]
- ; gcrRegs +[rdi]
- mov esi, 3
+ je G_M14781_IG11
+ ;; size=23 bbWeight=0.05 PerfScore 0.16
+G_M14781_IG09: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
; GC ptr vars -{V14}
- call [<unknown method>]
- ; gcrRegs -[rdi]
- ;; size=15 bbWeight=0.80 PerfScore 3.40
-G_M14781_IG08: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0008 {rbx}, byref
or rax, 1
- mov qword ptr [rbx+0x20], rax
- movsxd rdi, r15d
- mov qword ptr [rbx+0x10], rdi
- lea rdi, bword ptr [rbx+0x18]
+ mov qword ptr [r15+0x20], rax
+ movsxd rdi, ebx
+ mov qword ptr [r15+0x10], rdi
+ lea rdi, bword ptr [r15+0x18]
; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rdi]
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_pgo.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_tiered.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.linux.x64.checked.mch |
5 |
3 |
1 |
1 |
-20 |
+5 |
libraries.crossgen2.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries.pmi.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries_tests.run.linux.x64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
smoke_tests.nativeaot.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
5 |
3 |
1 |
1 |
-20 |
+5 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.x64.checked.mch |
31,386 |
2,008 |
29,378 |
50 (0.16%) |
50 (0.16%) |
benchmarks.run_pgo.linux.x64.checked.mch |
130,177 |
50,713 |
79,464 |
63 (0.05%) |
63 (0.05%) |
benchmarks.run_tiered.linux.x64.checked.mch |
60,408 |
46,324 |
14,084 |
46 (0.08%) |
46 (0.08%) |
coreclr_tests.run.linux.x64.checked.mch |
391,292 |
185,267 |
206,025 |
109 (0.03%) |
109 (0.03%) |
libraries.crossgen2.linux.x64.checked.mch |
264,392 |
15 |
264,377 |
347 (0.13%) |
347 (0.13%) |
libraries.pmi.linux.x64.checked.mch |
297,005 |
6 |
296,999 |
66 (0.02%) |
66 (0.02%) |
libraries_tests.run.linux.x64.Release.mch |
81,974 |
53,841 |
28,133 |
8 (0.01%) |
8 (0.01%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
303,541 |
21,933 |
281,608 |
2,285 (0.75%) |
2,285 (0.75%) |
realworld.run.linux.x64.checked.mch |
33,237 |
45 |
33,192 |
11 (0.03%) |
11 (0.03%) |
smoke_tests.nativeaot.linux.x64.checked.mch |
27,352 |
10 |
27,342 |
101 (0.37%) |
101 (0.37%) |
|
1,620,764 |
360,162 |
1,260,602 |
3,086 (0.19%) |
3,086 (0.19%) |
jit-analyze output
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: 247129711 (overridden on cmd)
Total bytes of diff: 247129696 (overridden on cmd)
Total bytes of delta: -15 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
5 : 323964.dasm (0.78 % of base)
Top file improvements (bytes):
-9 : 323967.dasm (-7.26 % of base)
-7 : 323966.dasm (-3.76 % of base)
-4 : 323973.dasm (-2.56 % of base)
4 total files with Code Size differences (3 improved, 1 regressed), 1 unchanged.
Top method regressions (bytes):
5 (0.78 % of base) : 323964.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
Top method improvements (bytes):
-9 (-7.26 % of base) : 323967.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
-7 (-3.76 % of base) : 323966.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
-4 (-2.56 % of base) : 323973.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
Top method regressions (percentages):
5 (0.78 % of base) : 323964.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
Top method improvements (percentages):
-9 (-7.26 % of base) : 323967.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
-7 (-3.76 % of base) : 323966.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
-4 (-2.56 % of base) : 323973.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
4 total methods with Code Size differences (3 improved, 1 regressed).
osx arm64
Diffs are based on 1,733,061 contexts (561,303 MinOpts, 1,171,758 FullOpts).
MISSED contexts: 3,460 (0.20%)
Overall (-16 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.osx.arm64.checked.mch |
390,212,620 |
-16 |
FullOpts (-16 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.osx.arm64.checked.mch |
138,801,044 |
-16 |
Example diffs
coreclr_tests.run.osx.arm64.checked.mch
-8 (-4.55%) : 444167.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
@@ -10,11 +10,12 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 30.05) long -> x0 single-def
-; V01 arg1 [V01,T02] ( 7, 5.44) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T00] ( 17, 95.49) long -> x2
+; V00 arg0 [V00,T01] ( 8, 6.97) long -> x0 single-def
+; V01 arg1 [V01,T02] ( 7, 4.90) ref -> registers class-hnd <System.Object>
+; V02 loc0 [V02,T00] ( 17, 9.21) long -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V05 cse0 [V05,T03] ( 3, 0.19) ref -> x1 "CSE - conservative"
;
; Lcl frame size = 0
@@ -24,91 +25,88 @@ G_M45526_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M45526_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M45526_IG16
+ cbz x1, G_M45526_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M45526_IG03: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M45526_IG03: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=0.80 PerfScore 3.60
-G_M45526_IG04: ; bbWeight=0.64, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M45526_IG04: ; bbWeight=0.40, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
ldr x2, [x1]
ldr x2, [x2, #0x18]
- ;; size=8 bbWeight=0.64 PerfScore 3.84
-G_M45526_IG05: ; bbWeight=8.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.40 PerfScore 2.40
+G_M45526_IG05: ; bbWeight=3.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
cmp x2, x0
- beq G_M45526_IG16
- ;; size=8 bbWeight=8.99 PerfScore 13.48
-G_M45526_IG06: ; bbWeight=8.09, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=8.09 PerfScore 8.09
-G_M45526_IG07: ; bbWeight=7.28, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M45526_IG14
+ ;; size=8 bbWeight=3.24 PerfScore 4.86
+G_M45526_IG06: ; bbWeight=1.62, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=1.62 PerfScore 1.62
+G_M45526_IG07: ; bbWeight=0.81, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=7.28 PerfScore 32.77
-G_M45526_IG08: ; bbWeight=6.55, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=6.55 PerfScore 6.55
-G_M45526_IG09: ; bbWeight=5.90, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.81 PerfScore 3.65
+G_M45526_IG08: ; bbWeight=0.41, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.41 PerfScore 0.41
+G_M45526_IG09: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=5.90 PerfScore 26.54
-G_M45526_IG10: ; bbWeight=5.31, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=5.31 PerfScore 5.31
-G_M45526_IG11: ; bbWeight=4.78, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.20 PerfScore 0.91
+G_M45526_IG10: ; bbWeight=0.10, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.10 PerfScore 0.10
+G_M45526_IG11: ; bbWeight=0.09, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=4.78 PerfScore 21.50
-G_M45526_IG12: ; bbWeight=4.30, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=4.30 PerfScore 4.30
-G_M45526_IG13: ; bbWeight=3.87, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.09 PerfScore 0.41
+G_M45526_IG12: ; bbWeight=0.05, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M45526_IG13: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
ldr x2, [x2, #0x18]
b G_M45526_IG05
- ;; size=8 bbWeight=3.87 PerfScore 15.48
-G_M45526_IG14: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr w1, [x0]
- tbz w1, #25, G_M45526_IG19
- ;; size=8 bbWeight=0.30 PerfScore 1.21
-G_M45526_IG15: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M45526_IG18
- ;; size=4 bbWeight=0.24 PerfScore 0.24
-G_M45526_IG16: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x1]
+ ;; size=8 bbWeight=0.04 PerfScore 0.16
+G_M45526_IG14: ; bbWeight=0.60, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M45526_IG17: ; bbWeight=0.36, epilog, nogc, extend
+ ;; size=4 bbWeight=0.60 PerfScore 0.30
+G_M45526_IG15: ; bbWeight=0.60, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.36 PerfScore 0.72
-G_M45526_IG18: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.60 PerfScore 1.20
+G_M45526_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
- movz x0, #8
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ldr w0, [x0]
+ tbz w0, #25, G_M45526_IG18
+ ;; size=8 bbWeight=0.13 PerfScore 0.51
+G_M45526_IG17: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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]
; gcr arg pop 0
- ;; size=44 bbWeight=0.24 PerfScore 2.06
-G_M45526_IG19: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x1, xzr
+ ;; size=36 bbWeight=0.06 PerfScore 0.48
+G_M45526_IG18: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ mov x1, x0
; gcrRegs +[x1]
- b G_M45526_IG16
- ;; size=8 bbWeight=0.64 PerfScore 0.96
+ b G_M45526_IG14
+ ;; size=12 bbWeight=0.40 PerfScore 0.80
-; Total bytes of code 176, prolog size 8, PerfScore 149.34, instruction count 44, allocated bytes for code 176 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
+; Total bytes of code 168, prolog size 8, PerfScore 22.61, instruction count 42, allocated bytes for code 168 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -119,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.74%) : 444166.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
@@ -11,20 +11,21 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) byref -> x0 this single-def
-; V01 loc0 [V01,T02] ( 4, 4 ) long -> x0
-; V02 loc1 [V02,T01] ( 9, 4.85) ref -> x19 class-hnd single-def <System.Object>
+; V01 loc0 [V01,T01] ( 4, 4 ) long -> x0
+; V02 loc1 [V02,T02] ( 9, 3.80) ref -> x19 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Array>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T03] ( 2, 3.20) byref -> x0 single-def "Inlining Arg"
+; V08 tmp5 [V08,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V12 tmp9 [V12,T06] ( 2, 0.64) long -> x0 "Cast away GC"
-; V13 tmp10 [V13,T05] ( 2, 1.23) long -> x0 "Cast away GC"
-; V14 tmp11 [V14,T04] ( 2, 1.33) long -> x0 "Cast away GC"
+; V12 tmp9 [V12,T06] ( 2, 0.40) long -> x0 "Cast away GC"
+; V13 tmp10 [V13,T04] ( 2, 0.80) long -> x0 "Cast away GC"
+; V14 tmp11 [V14,T05] ( 2, 0.80) long -> x0 "Cast away GC"
+; V15 cse0 [V15,T07] ( 3, 0.30) ref -> x1 "CSE - conservative"
;
; Lcl frame size = 8
@@ -44,33 +45,42 @@ G_M56886_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
- cbz x19, G_M56886_IG11
+ cbnz x19, G_M56886_IG05
;; size=28 bbWeight=1 PerfScore 8.00
-G_M56886_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+G_M56886_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M56886_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M56886_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
ldr x0, [x19]
ldr w0, [x0]
tst w0, #0xD1FFAB1E
beq G_M56886_IG13
- ;; size=16 bbWeight=0.80 PerfScore 6.00
-G_M56886_IG04: ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M56886_IG06: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M56886_IG07
- ;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M56886_IG05: ; bbWeight=0.33, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bne G_M56886_IG09
+ ;; size=24 bbWeight=0.40 PerfScore 2.40
+G_M56886_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #12
; byrRegs +[x0]
- ;; size=4 bbWeight=0.33 PerfScore 0.17
-G_M56886_IG06: ; bbWeight=0.33, epilog, nogc, extend
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M56886_IG08: ; bbWeight=0.20, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.33 PerfScore 1.33
-G_M56886_IG07: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
+G_M56886_IG09: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0]
mov x1, x19
; gcrRegs +[x1]
@@ -83,55 +93,45 @@ G_M56886_IG07: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M56886_IG09
- ;; size=40 bbWeight=0.31 PerfScore 2.61
-G_M56886_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbnz x0, G_M56886_IG11
+ ;; size=40 bbWeight=0.20 PerfScore 1.70
+G_M56886_IG10: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- movz x0, #8
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
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
- ;; size=44 bbWeight=0.25 PerfScore 2.09
-G_M56886_IG09: ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=0.10 PerfScore 0.75
+G_M56886_IG11: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #8
; byrRegs +[x0]
ldr x1, [x19]
ldr w1, [x1, #0x04]
sub x1, x1, #16
add x0, x0, x1
- ;; size=20 bbWeight=0.31 PerfScore 2.30
-G_M56886_IG10: ; bbWeight=0.31, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.31 PerfScore 1.23
-G_M56886_IG11: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x0]
- mov x0, xzr
- ;; size=4 bbWeight=0.20 PerfScore 0.10
+ ;; size=20 bbWeight=0.20 PerfScore 1.50
G_M56886_IG12: ; bbWeight=0.20, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.20 PerfScore 0.80
-G_M56886_IG13: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
+G_M56886_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x0]
add x0, x19, #8
; byrRegs +[x0]
- ;; size=4 bbWeight=0.16 PerfScore 0.08
-G_M56886_IG14: ; bbWeight=0.16, epilog, nogc, extend
+ ;; size=4 bbWeight=0.10 PerfScore 0.05
+G_M56886_IG14: ; bbWeight=0.10, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.16 PerfScore 0.64
+ ;; size=12 bbWeight=0.10 PerfScore 0.40
G_M56886_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; byrRegs -[x0]
@@ -151,7 +151,7 @@ G_M56886_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 12, PerfScore 31.69, instruction count 73, allocated bytes for code 292 (MethodHash=78c021c9) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
+; Total bytes of code 284, prolog size 12, PerfScore 25.00, instruction count 71, allocated bytes for code 284 (MethodHash=78c021c9) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
; ============================================================
Unwind Info:
@@ -162,7 +162,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.96%) : 444173.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTest_LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
@@ -11,19 +11,17 @@
; Final local variable assignments
;
; V00 this [V00,T08] ( 3, 2.80) ref -> x0 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
-; V01 arg1 [V01,T06] ( 7, 4.82) ref -> x1 class-hnd single-def <float[]>
-; V02 arg2 [V02,T05] ( 7, 5.43) ref -> x2 class-hnd single-def <float[]>
+; V01 arg1 [V01,T05] ( 7, 4.16) ref -> x1 class-hnd single-def <float[]>
+; V02 arg2 [V02,T06] ( 7, 3.66) ref -> x2 class-hnd single-def <float[]>
; V03 arg3 [V03,T07] ( 3, 3 ) ubyte -> x3 single-def
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
;* V05 loc0 [V05 ] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc1 [V06,T02] ( 6,146.00) ubyte -> x4
-; V07 loc2 [V07,T00] ( 11,290.44) int -> x5
+; V06 loc1 [V06,T02] ( 6, 18 ) ubyte -> x4
+; V07 loc2 [V07,T00] ( 12, 33.24) int -> x5
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 cse0 [V09,T03] ( 4, 72.91) byref -> registers hoist multi-def "CSE - aggressive"
-; V10 cse1 [V10,T04] ( 4, 72.91) byref -> registers hoist multi-def "CSE - aggressive"
-; V11 cse2 [V11,T09] ( 4, 2.53) int -> x6 hoist multi-def "CSE - aggressive"
-; V12 cse3 [V12,T01] ( 3,213.84) long -> x1 "CSE - aggressive"
-; V13 cse4 [V13,T10] ( 3, 2.16) long -> x8 "CSE - aggressive"
+; V09 cse0 [V09,T03] ( 4, 8.58) byref -> x6 hoist multi-def "CSE - aggressive"
+; V10 cse1 [V10,T04] ( 4, 8.58) byref -> x7 hoist multi-def "CSE - aggressive"
+; V11 cse2 [V11,T01] ( 3, 23.76) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,7 +35,7 @@ G_M23149_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}
mov w5, wzr
cbz x1, G_M23149_IG06
;; size=12 bbWeight=1 PerfScore 2.00
-G_M23149_IG03: ; bbWeight=0.90, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M23149_IG03: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
cbz x2, G_M23149_IG06
ldr w6, [x1, #0x08]
cmp w6, #4
@@ -49,8 +47,8 @@ G_M23149_IG03: ; bbWeight=0.90, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000
; byrRegs +[x6]
add x7, x2, #16
; byrRegs +[x7]
- ;; size=36 bbWeight=0.90 PerfScore 9.90
-G_M23149_IG04: ; bbWeight=71.28, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6 x7}, byref, isz
+ ;; size=36 bbWeight=0.50 PerfScore 5.50
+G_M23149_IG04: ; bbWeight=7.92, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6 x7}, byref, isz
; gcrRegs -[x1-x2]
mov w1, w5
ldr s16, [x6, x1, LSL #2]
@@ -62,59 +60,56 @@ G_M23149_IG04: ; bbWeight=71.28, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6
add w5, w5, #1
cmp w5, #4
blt G_M23149_IG04
- ;; size=40 bbWeight=71.28 PerfScore 784.08
+ ;; size=40 bbWeight=7.92 PerfScore 87.12
G_M23149_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; byrRegs -[x6-x7]
- b G_M23149_IG08
+ b G_M23149_IG07
;; size=4 bbWeight=1 PerfScore 1.00
-G_M23149_IG06: ; bbWeight=0.01, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+G_M23149_IG06: ; bbWeight=0.08, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2]
ldr w6, [x1, #0x08]
- add x7, x1, #16
- ; byrRegs +[x7]
- add x1, x2, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ;; size=12 bbWeight=0.01 PerfScore 0.04
-G_M23149_IG07: ; bbWeight=0.72, gcrefRegs=0005 {x0 x2}, byrefRegs=0082 {x1 x7}, byref, isz
cmp w5, w6
- bhs G_M23149_IG11
- mov w8, w5
- ldr s16, [x7, x8, LSL #2]
- ldr w9, [x2, #0x08]
- cmp w5, w9
- bhs G_M23149_IG11
- ldr s17, [x1, x8, LSL #2]
+ bhs G_M23149_IG10
+ add x6, x1, #16
+ ; byrRegs +[x6]
+ ldr s16, [x6, w5, UXTW #2]
+ ldr w7, [x2, #0x08]
+ cmp w5, w7
+ bhs G_M23149_IG10
+ add x7, x2, #16
+ ; byrRegs +[x7]
+ ldr s17, [x7, w5, UXTW #2]
fcmp s16, s17
- cset x8, ls
- orr w4, w8, w4
+ cset x6, ls
+ ; byrRegs -[x6]
+ orr w4, w6, w4
uxtb w4, w4
add w5, w5, #1
cmp w5, #4
- blt G_M23149_IG07
- ;; size=60 bbWeight=0.72 PerfScore 12.24
-G_M23149_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- ; byrRegs -[x1 x7]
+ blt G_M23149_IG06
+ ;; size=68 bbWeight=0.08 PerfScore 1.64
+G_M23149_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1-x2]
+ ; byrRegs -[x7]
uxtb w1, w3
cmp w4, w1
- beq G_M23149_IG10
+ beq G_M23149_IG09
;; size=12 bbWeight=1 PerfScore 2.00
-G_M23149_IG09: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M23149_IG08: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
strb wzr, [x0, #0x08]
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M23149_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M23149_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M23149_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23149_IG10: ; 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 204, prolog size 8, PerfScore 815.56, instruction count 51, allocated bytes for code 204 (MethodHash=cb84a592) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
+; Total bytes of code 200, prolog size 8, PerfScore 103.56, instruction count 50, allocated bytes for code 200 (MethodHash=cb84a592) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -125,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 444168.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)
@@ -10,38 +10,38 @@
; 0 inlinees with PGO data; 10 single block inlinees; 19 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 12.47) ref -> x19 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
;* V01 loc0 [V01 ] ( 0, 0 ) ubyte -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T11] ( 3, 24.74) simd16 -> [fp+0x40] do-not-enreg[SF] "non-inline candidate call"
-; V04 tmp2 [V04,T09] ( 3, 2 ) ubyte -> x1 "Inline return value spill temp"
-; V05 tmp3 [V05,T12] ( 3, 24.74) simd16 -> [fp+0x30] HFA(simd16) do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V08 tmp6 [V08 ] ( 3, 28.42) simd8 -> [fp+0x28] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V09 tmp7 [V09 ] ( 3, 28.42) simd8 -> [fp+0x20] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V10 tmp8 [V10,T10] ( 4, 37.89) float -> d16 "impAppendStmt"
-;* V11 tmp9 [V11,T01] ( 0, 0 ) int -> zero-ref
+; V03 tmp1 [V03,T12] ( 3, 6 ) simd16 -> [fp+0x40] do-not-enreg[SF] "non-inline candidate call"
+; V04 tmp2 [V04,T01] ( 3, 2 ) ubyte -> x1 "Inline return value spill temp"
+; V05 tmp3 [V05,T13] ( 3, 6 ) simd16 -> [fp+0x30] HFA(simd16) do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp5 [V07,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V08 tmp6 [V08 ] ( 3, 6 ) simd8 -> [fp+0x28] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V09 tmp7 [V09 ] ( 3, 6 ) simd8 -> [fp+0x20] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V10 tmp8 [V10,T10] ( 4, 8 ) float -> d16 "impAppendStmt"
+;* V11 tmp9 [V11,T02] ( 0, 0 ) int -> zero-ref
;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-;* V16 tmp14 [V16,T02] ( 0, 0 ) int -> zero-ref
+;* V16 tmp14 [V16,T03] ( 0, 0 ) int -> zero-ref
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T08] ( 3, 2.27) ubyte -> x1 "Inline return value spill temp"
-;* V22 tmp20 [V22,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V23 tmp21 [V23 ] ( 3, 16.51) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V24 tmp22 [V24 ] ( 3, 16.51) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T13] ( 4, 21.43) float -> d16 "impAppendStmt"
-;* V26 tmp24 [V26,T03] ( 0, 0 ) int -> zero-ref
+; V21 tmp19 [V21,T07] ( 3, 1.17) ubyte -> x1 "Inline return value spill temp"
+;* V22 tmp20 [V22,T09] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V23 tmp21 [V23 ] ( 3, 5 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V24 tmp22 [V24 ] ( 3, 5 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V25 tmp23 [V25,T11] ( 4, 6 ) float -> d16 "impAppendStmt"
+;* V26 tmp24 [V26,T05] ( 0, 0 ) int -> zero-ref
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-;* V31 tmp29 [V31,T04] ( 0, 0 ) int -> zero-ref
+;* V31 tmp29 [V31,T06] ( 0, 0 ) int -> zero-ref
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -49,14 +49,14 @@
;
; Lcl frame size = 72
-G_M21877_IG01: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21877_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x60]!
str x19, [sp, #0x58]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=4.74 PerfScore 14.21
-G_M21877_IG02: ; bbWeight=4.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M21877_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -84,13 +84,11 @@ G_M21877_IG02: ; bbWeight=4.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr s16, [fp, #0x28] // [V08 tmp6]
ldr s17, [fp, #0x20] // [V09 tmp7]
fcmp s17, s16
- bge G_M21877_IG08
+ bge G_M21877_IG06
ldr s16, [fp, #0x2C] // [V08 tmp6+0x04]
ldr s17, [fp, #0x24] // [V09 tmp7+0x04]
fcmp s17, s16
- bge G_M21877_IG08
- ;; size=112 bbWeight=4.74 PerfScore 180.00
-G_M21877_IG03: ; bbWeight=2.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ bge G_M21877_IG06
ldr d16, [fp, #0x48] // [V03 tmp1+0x08]
str d16, [fp, #0x18] // [V23 tmp21]
ldr d16, [fp, #0x38] // [V05 tmp3+0x08]
@@ -98,18 +96,26 @@ G_M21877_IG03: ; bbWeight=2.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr s16, [fp, #0x18] // [V23 tmp21]
ldr s17, [fp, #0x10] // [V24 tmp22]
fcmp s17, s16
- bge G_M21877_IG09
- ;; size=32 bbWeight=2.89 PerfScore 34.74
-G_M21877_IG04: ; bbWeight=2.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ bge G_M21877_IG05
+ ;; size=144 bbWeight=1 PerfScore 50.00
+G_M21877_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr s16, [fp, #0x1C] // [V23 tmp21+0x04]
ldr s17, [fp, #0x14] // [V24 tmp22+0x04]
fcmp s17, s16
- bge G_M21877_IG09
- ;; size=16 bbWeight=2.46 PerfScore 14.78
-G_M21877_IG05: ; bbWeight=1.51, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bge G_M21877_IG05
mov w1, wzr
- ;; size=4 bbWeight=1.51 PerfScore 0.75
-G_M21877_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
+G_M21877_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M21877_IG07
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M21877_IG05: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov w1, #1
+ b G_M21877_IG04
+ ;; size=8 bbWeight=0.17 PerfScore 0.25
+G_M21877_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov w1, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M21877_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -119,22 +125,13 @@ G_M21877_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x0 x19]
;; size=24 bbWeight=1 PerfScore 6.00
-G_M21877_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M21877_IG08: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x58]
ldp fp, lr, [sp], #0x60
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M21877_IG08: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
- mov w1, #1
- b G_M21877_IG06
- ;; size=8 bbWeight=0.48 PerfScore 0.72
-G_M21877_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov w1, #1
- b G_M21877_IG06
- ;; size=8 bbWeight=0.25 PerfScore 0.37
-; Total bytes of code 232, prolog size 12, PerfScore 255.57, instruction count 58, allocated bytes for code 232 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 67.25, instruction count 58, allocated bytes for code 232 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================
Unwind Info:
+4 (+0.51%) : 444164.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTest_LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
@@ -10,44 +10,42 @@
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 13 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 5, 5 ) ref -> x21 class-hnd single-def <float[]>
-; V02 arg2 [V02,T05] ( 5, 5 ) ref -> x22 class-hnd single-def <float[]>
-; V03 arg3 [V03,T01] ( 8, 7.52) int -> x20 single-def
-; V04 loc0 [V04,T13] ( 3, 3 ) int -> x23 single-def
-; V05 loc1 [V05,T14] ( 3, 3 ) int -> x24 single-def
+; V00 this [V00,T01] ( 13, 3.38) byref -> x20 this single-def
+; V01 arg1 [V01,T02] ( 5, 3.25) ref -> x21 class-hnd single-def <float[]>
+; V02 arg2 [V02,T03] ( 5, 3.25) ref -> x22 class-hnd single-def <float[]>
+; V03 arg3 [V03,T00] ( 11, 6.38) int -> x19 single-def
+; V04 loc0 [V04,T04] ( 3, 1.62) int -> x23 single-def
+; V05 loc1 [V05,T05] ( 3, 1.62) int -> x24 single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V08 tmp2 [V08,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp3 [V09,T02] ( 4, 7.60) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T17] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V08 tmp2 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V09 tmp3 [V09,T09] ( 4, 0.64) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V12 tmp6 [V12,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp7 [V13,T11] ( 4, 3.80) long -> x0 "Inline stloc first use temp"
-; V14 tmp8 [V14,T03] ( 4, 7.60) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V12 tmp6 [V12,T18] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp7 [V13,T15] ( 4, 0.24) long -> x0 "Inline stloc first use temp"
+; V14 tmp8 [V14,T10] ( 4, 0.64) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
;* V16 tmp10 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V17 tmp11 [V17,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp12 [V18,T12] ( 4, 3.80) long -> x0 "Inline stloc first use temp"
+; V17 tmp11 [V17,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp12 [V18,T16] ( 4, 0.24) long -> x0 "Inline stloc first use temp"
;* V19 tmp13 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V20 tmp14 [V20,T09] ( 2, 4 ) long -> x0 "Inlining Arg"
-; V21 tmp15 [V21,T06] ( 3, 6 ) long -> x1 "Inlining Arg"
+; V20 tmp14 [V20,T11] ( 2, 0.50) long -> x0 "Inlining Arg"
+; V21 tmp15 [V21,T07] ( 3, 0.75) long -> x1 "Inlining Arg"
;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp18 [V24 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V25 tmp19 [V25,T10] ( 2, 4 ) long -> x0 "Inlining Arg"
-; V26 tmp20 [V26,T07] ( 3, 6 ) long -> x1 "Inlining Arg"
+; V25 tmp19 [V25,T12] ( 2, 0.50) long -> x0 "Inlining Arg"
+; V26 tmp20 [V26,T08] ( 3, 0.75) long -> x1 "Inlining Arg"
;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V29 tmp23 [V29,T16] ( 2, 2 ) long -> x0 single-def "field V10._handle (fldOffset=0x0)" P-INDEP
-; V30 tmp24 [V30,T17] ( 2, 2 ) long -> x0 single-def "field V15._handle (fldOffset=0x0)" P-INDEP
-; V31 tmp25 [V31,T22] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V32 tmp26 [V32,T23] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V33 tmp27 [V33,T24] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V34 tmp28 [V34,T25] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp29 [V35,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V36 cse0 [V36,T15] ( 3, 3 ) long -> x25 "CSE - aggressive"
-; V37 cse1 [V37,T08] ( 4, 4 ) int -> x1 "CSE - aggressive"
+; V29 tmp23 [V29,T13] ( 2, 0.25) long -> x0 single-def "field V10._handle (fldOffset=0x0)" P-INDEP
+; V30 tmp24 [V30,T14] ( 2, 0.25) long -> x0 single-def "field V15._handle (fldOffset=0x0)" P-INDEP
+; V31 tmp25 [V31,T20] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V32 tmp26 [V32,T21] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V33 tmp27 [V33,T22] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V34 tmp28 [V34,T23] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V35 tmp29 [V35,T24] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 8
@@ -58,37 +56,35 @@ G_M14781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x23, x24, [sp, #0x38]
str x25, [sp, #0x48]
mov fp, sp
- mov x19, x0
- ; byrRegs +[x19]
+ mov x20, x0
+ ; byrRegs +[x20]
mov x21, x1
; gcrRegs +[x21]
mov x22, x2
; gcrRegs +[x22]
- mov w20, w3
+ mov w19, w3
;; size=40 bbWeight=1 PerfScore 7.50
-G_M14781_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+G_M14781_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
ldr w1, [x21, #0x08]
lsl w23, w1, #2
ldr w1, [x22, #0x08]
lsl w24, w1, #2
- sub w1, w20, #1
- tst w20, w1
+ sub w1, w19, #1
+ tst w19, w1
bne G_M14781_IG13
;; size=28 bbWeight=1 PerfScore 10.00
-G_M14781_IG03: ; bbWeight=0.52, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
- cmp w20, #0
+G_M14781_IG03: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ cmp w19, #0
ble G_M14781_IG13
- ;; size=8 bbWeight=0.52 PerfScore 0.78
-G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
- cmp w20, #16
+ lsl w1, w19, #1
+ cmp w23, w19, LSL #1
+ ccmp w19, #16, 0, le
+ ccmp w24, w1, 0, le
bgt G_M14781_IG13
- lsl w1, w20, #1
- cmp w1, w23
- blt G_M14781_IG13
- cmp w1, w24
- blt G_M14781_IG13
- sxtw x25, w1
- mov x1, x25
+ ;; size=28 bbWeight=0.50 PerfScore 2.75
+G_M14781_IG04: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ lsl w1, w19, #1
+ sxtw x1, w1
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -96,25 +92,26 @@ G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
; gcrRegs +[x0]
mov x15, x0
; gcrRegs +[x15]
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x1, x25
+ lsl w1, w19, #1
+ sxtw x1, w1
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- add x14, x19, #8
+ add x14, x20, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x25, [x19]
+ ldr x25, [x20]
; gcrRegs +[x25]
mov x0, x25
; gcrRegs +[x0]
@@ -124,29 +121,21 @@ G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbz w0, G_M14781_IG10
+ cbz w0, G_M14781_IG14
+ ;; size=104 bbWeight=0.12 PerfScore 2.75
+G_M14781_IG05: ; bbWeight=0.05, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=100000 {x20}, byref, isz
mov x0, x25
; gcrRegs +[x0]
mov w1, #3
bl <unknown method>
; gcrRegs -[x0]
- cbnz x0, G_M14781_IG06
- ;; size=144 bbWeight=1 PerfScore 29.00
-G_M14781_IG05: ; bbWeight=0.80, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=80000 {x19}, byref
- mov x0, x25
- ; gcrRegs +[x0]
- mov w1, #3
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x25]
- ;; size=28 bbWeight=0.80 PerfScore 5.20
-G_M14781_IG06: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+ cbz x0, G_M14781_IG11
+ ;; size=16 bbWeight=0.05 PerfScore 0.14
+G_M14781_IG06: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ ; gcrRegs -[x25]
orr x0, x0, #1
- str x0, [x19, #0x18]
- ldr x25, [x19, #0x08]
+ str x0, [x20, #0x18]
+ ldr x25, [x20, #0x08]
; gcrRegs +[x25]
mov x0, x25
; gcrRegs +[x0]
@@ -156,31 +145,23 @@ G_M14781_IG06: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbz w0, G_M14781_IG11
+ cbz w0, G_M14781_IG15
+ ;; size=40 bbWeight=0.12 PerfScore 1.44
+G_M14781_IG07: ; bbWeight=0.05, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=100000 {x20}, byref, isz
mov x0, x25
; gcrRegs +[x0]
mov w1, #3
bl <unknown method>
; gcrRegs -[x0]
- cbnz x0, G_M14781_IG08
- ;; size=56 bbWeight=1 PerfScore 14.50
-G_M14781_IG07: ; bbWeight=0.80, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=80000 {x19}, byref
- mov x0, x25
- ; gcrRegs +[x0]
- mov w1, #3
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x25]
- ;; size=28 bbWeight=0.80 PerfScore 5.20
-G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+ cbz x0, G_M14781_IG10
+ ;; size=16 bbWeight=0.05 PerfScore 0.14
+G_M14781_IG08: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ ; gcrRegs -[x25]
orr x0, x0, #1
- str x0, [x19, #0x20]
- sxtw x0, w20
- str x0, [x19, #0x10]
- add x0, x19, #24
+ str x0, [x20, #0x20]
+ sxtw x0, w19
+ str x0, [x20, #0x10]
+ add x0, x20, #24
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -188,7 +169,7 @@ G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; byrRegs -[x0]
- ldr x1, [x19, #0x10]
+ ldr x1, [x20, #0x10]
add x0, x0, x1
sub x0, x0, #1
sub x1, x1, #1
@@ -202,7 +183,7 @@ G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
bl CORINFO_HELP_MEMCPY
; gcrRegs -[x21]
; byrRegs -[x1]
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_pgo.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_tiered.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.osx.arm64.checked.mch |
5 |
3 |
1 |
1 |
-20 |
+4 |
libraries.crossgen2.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries.pmi.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries_tests.run.osx.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
5 |
3 |
1 |
1 |
-20 |
+4 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.osx.arm64.checked.mch |
24,839 |
6 |
24,833 |
50 (0.20%) |
50 (0.20%) |
benchmarks.run_pgo.osx.arm64.checked.mch |
66,699 |
47,211 |
19,488 |
45 (0.07%) |
45 (0.07%) |
benchmarks.run_tiered.osx.arm64.checked.mch |
48,278 |
37,393 |
10,885 |
48 (0.10%) |
48 (0.10%) |
coreclr_tests.run.osx.arm64.checked.mch |
506,784 |
301,369 |
205,415 |
116 (0.02%) |
116 (0.02%) |
libraries.crossgen2.osx.arm64.checked.mch |
263,948 |
15 |
263,933 |
555 (0.21%) |
555 (0.21%) |
libraries.pmi.osx.arm64.checked.mch |
316,412 |
18 |
316,394 |
48 (0.02%) |
48 (0.02%) |
libraries_tests.run.osx.arm64.Release.mch |
173,214 |
153,670 |
19,544 |
350 (0.20%) |
350 (0.20%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
301,291 |
21,618 |
279,673 |
2,238 (0.74%) |
2,238 (0.74%) |
realworld.run.osx.arm64.checked.mch |
31,596 |
3 |
31,593 |
10 (0.03%) |
10 (0.03%) |
|
1,733,061 |
561,303 |
1,171,758 |
3,460 (0.20%) |
3,460 (0.20%) |
jit-analyze output
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: 390212620 (overridden on cmd)
Total bytes of diff: 390212604 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 444164.dasm (0.51 % of base)
Top file improvements (bytes):
-8 : 444166.dasm (-2.74 % of base)
-8 : 444167.dasm (-4.55 % of base)
-4 : 444173.dasm (-1.96 % of base)
4 total files with Code Size differences (3 improved, 1 regressed), 1 unchanged.
Top method regressions (bytes):
4 (0.51 % of base) : 444164.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
Top method improvements (bytes):
-8 (-4.55 % of base) : 444167.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
-8 (-2.74 % of base) : 444166.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
-4 (-1.96 % of base) : 444173.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
Top method regressions (percentages):
4 (0.51 % of base) : 444164.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
Top method improvements (percentages):
-8 (-4.55 % of base) : 444167.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
-8 (-2.74 % of base) : 444166.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
-4 (-1.96 % of base) : 444173.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
4 total methods with Code Size differences (3 improved, 1 regressed).
windows arm64
Diffs are based on 1,477,297 contexts (263,527 MinOpts, 1,213,770 FullOpts).
MISSED contexts: 3,464 (0.23%)
Overall (-16 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.windows.arm64.checked.mch |
277,084,748 |
-16 |
FullOpts (-16 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.windows.arm64.checked.mch |
138,792,180 |
-16 |
Example diffs
coreclr_tests.run.windows.arm64.checked.mch
-8 (-4.55%) : 250525.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
@@ -10,11 +10,12 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 30.05) long -> x0 single-def
-; V01 arg1 [V01,T02] ( 7, 5.44) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T00] ( 17, 95.49) long -> x2
+; V00 arg0 [V00,T01] ( 8, 6.97) long -> x0 single-def
+; V01 arg1 [V01,T02] ( 7, 4.90) ref -> registers class-hnd <System.Object>
+; V02 loc0 [V02,T00] ( 17, 9.21) long -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V05 cse0 [V05,T03] ( 3, 0.19) ref -> x1 "CSE - conservative"
;
; Lcl frame size = 0
@@ -24,91 +25,88 @@ G_M45526_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M45526_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M45526_IG16
+ cbz x1, G_M45526_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M45526_IG03: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M45526_IG03: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1]
cmp x2, x0
- beq G_M45526_IG16
- ;; size=12 bbWeight=0.80 PerfScore 3.60
-G_M45526_IG04: ; bbWeight=0.64, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M45526_IG04: ; bbWeight=0.40, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
ldr x2, [x1]
ldr x2, [x2, #0x18]
- ;; size=8 bbWeight=0.64 PerfScore 3.84
-G_M45526_IG05: ; bbWeight=8.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cmp x0, x2
- beq G_M45526_IG16
- ;; size=8 bbWeight=8.99 PerfScore 13.48
-G_M45526_IG06: ; bbWeight=8.09, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=8.09 PerfScore 8.09
-G_M45526_IG07: ; bbWeight=7.28, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.40 PerfScore 2.40
+G_M45526_IG05: ; bbWeight=3.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cmp x2, x0
+ beq G_M45526_IG14
+ ;; size=8 bbWeight=3.24 PerfScore 4.86
+G_M45526_IG06: ; bbWeight=1.62, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=1.62 PerfScore 1.62
+G_M45526_IG07: ; bbWeight=0.81, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x0, x2
- beq G_M45526_IG16
- ;; size=12 bbWeight=7.28 PerfScore 32.77
-G_M45526_IG08: ; bbWeight=6.55, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=6.55 PerfScore 6.55
-G_M45526_IG09: ; bbWeight=5.90, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.81 PerfScore 3.65
+G_M45526_IG08: ; bbWeight=0.41, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.41 PerfScore 0.41
+G_M45526_IG09: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x0, x2
- beq G_M45526_IG16
- ;; size=12 bbWeight=5.90 PerfScore 26.54
-G_M45526_IG10: ; bbWeight=5.31, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=5.31 PerfScore 5.31
-G_M45526_IG11: ; bbWeight=4.78, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.20 PerfScore 0.91
+G_M45526_IG10: ; bbWeight=0.10, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.10 PerfScore 0.10
+G_M45526_IG11: ; bbWeight=0.09, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x2, #0x18]
cmp x0, x2
- beq G_M45526_IG16
- ;; size=12 bbWeight=4.78 PerfScore 21.50
-G_M45526_IG12: ; bbWeight=4.30, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M45526_IG14
- ;; size=4 bbWeight=4.30 PerfScore 4.30
-G_M45526_IG13: ; bbWeight=3.87, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M45526_IG14
+ ;; size=12 bbWeight=0.09 PerfScore 0.41
+G_M45526_IG12: ; bbWeight=0.05, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x2, G_M45526_IG16
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M45526_IG13: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
ldr x2, [x2, #0x18]
b G_M45526_IG05
- ;; size=8 bbWeight=3.87 PerfScore 15.48
-G_M45526_IG14: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr w1, [x0]
- tbz w1, #25, G_M45526_IG19
- ;; size=8 bbWeight=0.30 PerfScore 1.21
-G_M45526_IG15: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M45526_IG18
- ;; size=4 bbWeight=0.24 PerfScore 0.24
-G_M45526_IG16: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x1]
+ ;; size=8 bbWeight=0.04 PerfScore 0.16
+G_M45526_IG14: ; bbWeight=0.60, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M45526_IG17: ; bbWeight=0.36, epilog, nogc, extend
+ ;; size=4 bbWeight=0.60 PerfScore 0.30
+G_M45526_IG15: ; bbWeight=0.60, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.36 PerfScore 0.72
-G_M45526_IG18: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.60 PerfScore 1.20
+G_M45526_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1]
- movz x0, #8
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ldr w0, [x0]
+ tbz w0, #25, G_M45526_IG18
+ ;; size=8 bbWeight=0.13 PerfScore 0.51
+G_M45526_IG17: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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]
; gcr arg pop 0
- ;; size=44 bbWeight=0.24 PerfScore 2.06
-G_M45526_IG19: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x1, xzr
+ ;; size=36 bbWeight=0.06 PerfScore 0.48
+G_M45526_IG18: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ mov x1, x0
; gcrRegs +[x1]
- b G_M45526_IG16
- ;; size=8 bbWeight=0.64 PerfScore 0.96
+ b G_M45526_IG14
+ ;; size=12 bbWeight=0.40 PerfScore 0.80
-; Total bytes of code 176, prolog size 8, PerfScore 149.34, instruction count 44, allocated bytes for code 176 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
+; Total bytes of code 168, prolog size 8, PerfScore 22.61, instruction count 42, allocated bytes for code 168 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -119,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.74%) : 250524.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
@@ -11,20 +11,21 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) byref -> x0 this single-def
-; V01 loc0 [V01,T02] ( 4, 4 ) long -> x0
-; V02 loc1 [V02,T01] ( 9, 4.85) ref -> x19 class-hnd single-def <System.Object>
+; V01 loc0 [V01,T01] ( 4, 4 ) long -> x0
+; V02 loc1 [V02,T02] ( 9, 3.80) ref -> x19 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Array>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T03] ( 2, 3.20) byref -> x0 single-def "Inlining Arg"
+; V08 tmp5 [V08,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V12 tmp9 [V12,T06] ( 2, 0.64) long -> x0 "Cast away GC"
-; V13 tmp10 [V13,T05] ( 2, 1.23) long -> x0 "Cast away GC"
-; V14 tmp11 [V14,T04] ( 2, 1.33) long -> x0 "Cast away GC"
+; V12 tmp9 [V12,T06] ( 2, 0.40) long -> x0 "Cast away GC"
+; V13 tmp10 [V13,T04] ( 2, 0.80) long -> x0 "Cast away GC"
+; V14 tmp11 [V14,T05] ( 2, 0.80) long -> x0 "Cast away GC"
+; V15 cse0 [V15,T07] ( 3, 0.30) ref -> x1 "CSE - conservative"
;
; Lcl frame size = 8
@@ -44,33 +45,42 @@ G_M56886_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
- cbz x19, G_M56886_IG11
+ cbnz x19, G_M56886_IG05
;; size=28 bbWeight=1 PerfScore 8.00
-G_M56886_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+G_M56886_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M56886_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M56886_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
ldr x0, [x19]
ldr w0, [x0]
tst w0, #0xD1FFAB1E
beq G_M56886_IG13
- ;; size=16 bbWeight=0.80 PerfScore 6.00
-G_M56886_IG04: ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M56886_IG06: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M56886_IG07
- ;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M56886_IG05: ; bbWeight=0.33, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bne G_M56886_IG09
+ ;; size=24 bbWeight=0.40 PerfScore 2.40
+G_M56886_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #12
; byrRegs +[x0]
- ;; size=4 bbWeight=0.33 PerfScore 0.17
-G_M56886_IG06: ; bbWeight=0.33, epilog, nogc, extend
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M56886_IG08: ; bbWeight=0.20, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.33 PerfScore 1.33
-G_M56886_IG07: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
+G_M56886_IG09: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0]
mov x1, x19
; gcrRegs +[x1]
@@ -83,55 +93,45 @@ G_M56886_IG07: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M56886_IG09
- ;; size=40 bbWeight=0.31 PerfScore 2.61
-G_M56886_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbnz x0, G_M56886_IG11
+ ;; size=40 bbWeight=0.20 PerfScore 1.70
+G_M56886_IG10: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- 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
+ 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
- ;; size=44 bbWeight=0.25 PerfScore 2.09
-G_M56886_IG09: ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=0.10 PerfScore 0.75
+G_M56886_IG11: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, x19, #8
; byrRegs +[x0]
ldr x1, [x19]
ldr w1, [x1, #0x04]
sub x1, x1, #16
add x0, x0, x1
- ;; size=20 bbWeight=0.31 PerfScore 2.30
-G_M56886_IG10: ; bbWeight=0.31, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.31 PerfScore 1.23
-G_M56886_IG11: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x0]
- mov x0, xzr
- ;; size=4 bbWeight=0.20 PerfScore 0.10
+ ;; size=20 bbWeight=0.20 PerfScore 1.50
G_M56886_IG12: ; bbWeight=0.20, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.20 PerfScore 0.80
-G_M56886_IG13: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
+G_M56886_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x0]
add x0, x19, #8
; byrRegs +[x0]
- ;; size=4 bbWeight=0.16 PerfScore 0.08
-G_M56886_IG14: ; bbWeight=0.16, epilog, nogc, extend
+ ;; size=4 bbWeight=0.10 PerfScore 0.05
+G_M56886_IG14: ; bbWeight=0.10, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.16 PerfScore 0.64
+ ;; size=12 bbWeight=0.10 PerfScore 0.40
G_M56886_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; byrRegs -[x0]
@@ -151,7 +151,7 @@ G_M56886_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 12, PerfScore 31.69, instruction count 73, allocated bytes for code 292 (MethodHash=78c021c9) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
+; Total bytes of code 284, prolog size 12, PerfScore 25.00, instruction count 71, allocated bytes for code 284 (MethodHash=78c021c9) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
; ============================================================
Unwind Info:
@@ -162,7 +162,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.96%) : 250531.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTest_LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
@@ -11,19 +11,17 @@
; Final local variable assignments
;
; V00 this [V00,T08] ( 3, 2.80) ref -> x0 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
-; V01 arg1 [V01,T06] ( 7, 4.82) ref -> x1 class-hnd single-def <float[]>
-; V02 arg2 [V02,T05] ( 7, 5.43) ref -> x2 class-hnd single-def <float[]>
+; V01 arg1 [V01,T05] ( 7, 4.16) ref -> x1 class-hnd single-def <float[]>
+; V02 arg2 [V02,T06] ( 7, 3.66) ref -> x2 class-hnd single-def <float[]>
; V03 arg3 [V03,T07] ( 3, 3 ) ubyte -> x3 single-def
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
;* V05 loc0 [V05 ] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc1 [V06,T02] ( 6,146.00) ubyte -> x4
-; V07 loc2 [V07,T00] ( 11,290.44) int -> x5
+; V06 loc1 [V06,T02] ( 6, 18 ) ubyte -> x4
+; V07 loc2 [V07,T00] ( 12, 33.24) int -> x5
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 cse0 [V09,T03] ( 4, 72.91) byref -> registers hoist multi-def "CSE - aggressive"
-; V10 cse1 [V10,T04] ( 4, 72.91) byref -> registers hoist multi-def "CSE - aggressive"
-; V11 cse2 [V11,T09] ( 4, 2.53) int -> x6 hoist multi-def "CSE - aggressive"
-; V12 cse3 [V12,T01] ( 3,213.84) long -> x1 "CSE - aggressive"
-; V13 cse4 [V13,T10] ( 3, 2.16) long -> x8 "CSE - aggressive"
+; V09 cse0 [V09,T03] ( 4, 8.58) byref -> x6 hoist multi-def "CSE - aggressive"
+; V10 cse1 [V10,T04] ( 4, 8.58) byref -> x7 hoist multi-def "CSE - aggressive"
+; V11 cse2 [V11,T01] ( 3, 23.76) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,7 +35,7 @@ G_M23149_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}
mov w5, wzr
cbz x1, G_M23149_IG06
;; size=12 bbWeight=1 PerfScore 2.00
-G_M23149_IG03: ; bbWeight=0.90, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M23149_IG03: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
cbz x2, G_M23149_IG06
ldr w6, [x1, #0x08]
cmp w6, #4
@@ -49,8 +47,8 @@ G_M23149_IG03: ; bbWeight=0.90, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000
; byrRegs +[x6]
add x7, x2, #16
; byrRegs +[x7]
- ;; size=36 bbWeight=0.90 PerfScore 9.90
-G_M23149_IG04: ; bbWeight=71.28, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6 x7}, byref, isz
+ ;; size=36 bbWeight=0.50 PerfScore 5.50
+G_M23149_IG04: ; bbWeight=7.92, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6 x7}, byref, isz
; gcrRegs -[x1-x2]
mov w1, w5
ldr s16, [x6, x1, LSL #2]
@@ -62,59 +60,56 @@ G_M23149_IG04: ; bbWeight=71.28, gcrefRegs=0001 {x0}, byrefRegs=00C0 {x6
add w5, w5, #1
cmp w5, #4
blt G_M23149_IG04
- ;; size=40 bbWeight=71.28 PerfScore 784.08
+ ;; size=40 bbWeight=7.92 PerfScore 87.12
G_M23149_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; byrRegs -[x6-x7]
- b G_M23149_IG08
+ b G_M23149_IG07
;; size=4 bbWeight=1 PerfScore 1.00
-G_M23149_IG06: ; bbWeight=0.01, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+G_M23149_IG06: ; bbWeight=0.08, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2]
ldr w6, [x1, #0x08]
- add x7, x1, #16
- ; byrRegs +[x7]
- add x1, x2, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ;; size=12 bbWeight=0.01 PerfScore 0.04
-G_M23149_IG07: ; bbWeight=0.72, gcrefRegs=0005 {x0 x2}, byrefRegs=0082 {x1 x7}, byref, isz
cmp w5, w6
- bhs G_M23149_IG11
- mov w8, w5
- ldr s16, [x7, x8, LSL #2]
- ldr w9, [x2, #0x08]
- cmp w5, w9
- bhs G_M23149_IG11
- ldr s17, [x1, x8, LSL #2]
+ bhs G_M23149_IG10
+ add x6, x1, #16
+ ; byrRegs +[x6]
+ ldr s16, [x6, w5, UXTW #2]
+ ldr w7, [x2, #0x08]
+ cmp w5, w7
+ bhs G_M23149_IG10
+ add x7, x2, #16
+ ; byrRegs +[x7]
+ ldr s17, [x7, w5, UXTW #2]
fcmp s16, s17
- cset x8, ls
- orr w4, w8, w4
+ cset x6, ls
+ ; byrRegs -[x6]
+ orr w4, w6, w4
uxtb w4, w4
add w5, w5, #1
cmp w5, #4
- blt G_M23149_IG07
- ;; size=60 bbWeight=0.72 PerfScore 12.24
-G_M23149_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- ; byrRegs -[x1 x7]
+ blt G_M23149_IG06
+ ;; size=68 bbWeight=0.08 PerfScore 1.64
+G_M23149_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1-x2]
+ ; byrRegs -[x7]
uxtb w1, w3
cmp w1, w4
- beq G_M23149_IG10
+ beq G_M23149_IG09
;; size=12 bbWeight=1 PerfScore 2.00
-G_M23149_IG09: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M23149_IG08: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
strb wzr, [x0, #0x08]
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M23149_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M23149_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M23149_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23149_IG10: ; 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 204, prolog size 8, PerfScore 815.56, instruction count 51, allocated bytes for code 204 (MethodHash=cb84a592) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
+; Total bytes of code 200, prolog size 8, PerfScore 103.56, instruction count 50, allocated bytes for code 200 (MethodHash=cb84a592) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -125,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 250526.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)
@@ -10,38 +10,38 @@
; 0 inlinees with PGO data; 10 single block inlinees; 19 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 12.47) ref -> x19 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle>
;* V01 loc0 [V01 ] ( 0, 0 ) ubyte -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T11] ( 3, 24.74) simd16 -> [fp+0x40] do-not-enreg[SF] "non-inline candidate call"
-; V04 tmp2 [V04,T09] ( 3, 2 ) ubyte -> x1 "Inline return value spill temp"
-; V05 tmp3 [V05,T12] ( 3, 24.74) simd16 -> [fp+0x30] HFA(simd16) do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V08 tmp6 [V08 ] ( 3, 28.42) simd8 -> [fp+0x28] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V09 tmp7 [V09 ] ( 3, 28.42) simd8 -> [fp+0x20] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V10 tmp8 [V10,T10] ( 4, 37.89) float -> d16 "impAppendStmt"
-;* V11 tmp9 [V11,T01] ( 0, 0 ) int -> zero-ref
+; V03 tmp1 [V03,T12] ( 3, 6 ) simd16 -> [fp+0x40] do-not-enreg[SF] "non-inline candidate call"
+; V04 tmp2 [V04,T01] ( 3, 2 ) ubyte -> x1 "Inline return value spill temp"
+; V05 tmp3 [V05,T13] ( 3, 6 ) simd16 -> [fp+0x30] HFA(simd16) do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp5 [V07,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V08 tmp6 [V08 ] ( 3, 6 ) simd8 -> [fp+0x28] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V09 tmp7 [V09 ] ( 3, 6 ) simd8 -> [fp+0x20] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V10 tmp8 [V10,T10] ( 4, 8 ) float -> d16 "impAppendStmt"
+;* V11 tmp9 [V11,T02] ( 0, 0 ) int -> zero-ref
;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-;* V16 tmp14 [V16,T02] ( 0, 0 ) int -> zero-ref
+;* V16 tmp14 [V16,T03] ( 0, 0 ) int -> zero-ref
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T08] ( 3, 2.27) ubyte -> x1 "Inline return value spill temp"
-;* V22 tmp20 [V22,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V23 tmp21 [V23 ] ( 3, 16.51) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V24 tmp22 [V24 ] ( 3, 16.51) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T13] ( 4, 21.43) float -> d16 "impAppendStmt"
-;* V26 tmp24 [V26,T03] ( 0, 0 ) int -> zero-ref
+; V21 tmp19 [V21,T07] ( 3, 1.17) ubyte -> x1 "Inline return value spill temp"
+;* V22 tmp20 [V22,T09] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V23 tmp21 [V23 ] ( 3, 5 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V24 tmp22 [V24 ] ( 3, 5 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
+; V25 tmp23 [V25,T11] ( 4, 6 ) float -> d16 "impAppendStmt"
+;* V26 tmp24 [V26,T05] ( 0, 0 ) int -> zero-ref
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-;* V31 tmp29 [V31,T04] ( 0, 0 ) int -> zero-ref
+;* V31 tmp29 [V31,T06] ( 0, 0 ) int -> zero-ref
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -49,14 +49,14 @@
;
; Lcl frame size = 72
-G_M21877_IG01: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21877_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x60]!
str x19, [sp, #0x58]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=4.74 PerfScore 14.21
-G_M21877_IG02: ; bbWeight=4.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M21877_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -84,13 +84,11 @@ G_M21877_IG02: ; bbWeight=4.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr s16, [fp, #0x28] // [V08 tmp6]
ldr s17, [fp, #0x20] // [V09 tmp7]
fcmp s17, s16
- bge G_M21877_IG08
+ bge G_M21877_IG06
ldr s16, [fp, #0x2C] // [V08 tmp6+0x04]
ldr s17, [fp, #0x24] // [V09 tmp7+0x04]
fcmp s17, s16
- bge G_M21877_IG08
- ;; size=112 bbWeight=4.74 PerfScore 180.00
-G_M21877_IG03: ; bbWeight=2.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ bge G_M21877_IG06
ldr d16, [fp, #0x48] // [V03 tmp1+0x08]
str d16, [fp, #0x18] // [V23 tmp21]
ldr d16, [fp, #0x38] // [V05 tmp3+0x08]
@@ -98,18 +96,26 @@ G_M21877_IG03: ; bbWeight=2.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr s16, [fp, #0x18] // [V23 tmp21]
ldr s17, [fp, #0x10] // [V24 tmp22]
fcmp s17, s16
- bge G_M21877_IG09
- ;; size=32 bbWeight=2.89 PerfScore 34.74
-G_M21877_IG04: ; bbWeight=2.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ bge G_M21877_IG05
+ ;; size=144 bbWeight=1 PerfScore 50.00
+G_M21877_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr s16, [fp, #0x1C] // [V23 tmp21+0x04]
ldr s17, [fp, #0x14] // [V24 tmp22+0x04]
fcmp s17, s16
- bge G_M21877_IG09
- ;; size=16 bbWeight=2.46 PerfScore 14.78
-G_M21877_IG05: ; bbWeight=1.51, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bge G_M21877_IG05
mov w1, wzr
- ;; size=4 bbWeight=1.51 PerfScore 0.75
-G_M21877_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
+G_M21877_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M21877_IG07
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M21877_IG05: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov w1, #1
+ b G_M21877_IG04
+ ;; size=8 bbWeight=0.17 PerfScore 0.25
+G_M21877_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov w1, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M21877_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -119,22 +125,13 @@ G_M21877_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x0 x19]
;; size=24 bbWeight=1 PerfScore 6.00
-G_M21877_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M21877_IG08: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x58]
ldp fp, lr, [sp], #0x60
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M21877_IG08: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
- mov w1, #1
- b G_M21877_IG06
- ;; size=8 bbWeight=0.48 PerfScore 0.72
-G_M21877_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov w1, #1
- b G_M21877_IG06
- ;; size=8 bbWeight=0.25 PerfScore 0.37
-; Total bytes of code 232, prolog size 12, PerfScore 255.57, instruction count 58, allocated bytes for code 232 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 67.25, instruction count 58, allocated bytes for code 232 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================
Unwind Info:
+4 (+0.50%) : 250522.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTest_LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
@@ -10,44 +10,42 @@
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 13 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 5, 5 ) ref -> x21 class-hnd single-def <float[]>
-; V02 arg2 [V02,T05] ( 5, 5 ) ref -> x22 class-hnd single-def <float[]>
-; V03 arg3 [V03,T01] ( 8, 7.52) int -> x20 single-def
-; V04 loc0 [V04,T13] ( 3, 3 ) int -> x23 single-def
-; V05 loc1 [V05,T14] ( 3, 3 ) int -> x24 single-def
+; V00 this [V00,T01] ( 13, 3.38) byref -> x20 this single-def
+; V01 arg1 [V01,T02] ( 5, 3.25) ref -> x21 class-hnd single-def <float[]>
+; V02 arg2 [V02,T03] ( 5, 3.25) ref -> x22 class-hnd single-def <float[]>
+; V03 arg3 [V03,T00] ( 11, 6.38) int -> x19 single-def
+; V04 loc0 [V04,T04] ( 3, 1.62) int -> x23 single-def
+; V05 loc1 [V05,T05] ( 3, 1.62) int -> x24 single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V08 tmp2 [V08,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp3 [V09,T02] ( 4, 7.60) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T17] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V08 tmp2 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V09 tmp3 [V09,T09] ( 4, 0.64) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V12 tmp6 [V12,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp7 [V13,T11] ( 4, 3.80) long -> x0 "Inline stloc first use temp"
-; V14 tmp8 [V14,T03] ( 4, 7.60) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V12 tmp6 [V12,T18] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp7 [V13,T15] ( 4, 0.24) long -> x0 "Inline stloc first use temp"
+; V14 tmp8 [V14,T10] ( 4, 0.64) ref -> x25 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
;* V16 tmp10 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V17 tmp11 [V17,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp12 [V18,T12] ( 4, 3.80) long -> x0 "Inline stloc first use temp"
+; V17 tmp11 [V17,T19] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp12 [V18,T16] ( 4, 0.24) long -> x0 "Inline stloc first use temp"
;* V19 tmp13 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V20 tmp14 [V20,T09] ( 2, 4 ) long -> x0 "Inlining Arg"
-; V21 tmp15 [V21,T06] ( 3, 6 ) long -> x1 "Inlining Arg"
+; V20 tmp14 [V20,T11] ( 2, 0.50) long -> x0 "Inlining Arg"
+; V21 tmp15 [V21,T07] ( 3, 0.75) long -> x1 "Inlining Arg"
;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp18 [V24 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V25 tmp19 [V25,T10] ( 2, 4 ) long -> x0 "Inlining Arg"
-; V26 tmp20 [V26,T07] ( 3, 6 ) long -> x1 "Inlining Arg"
+; V25 tmp19 [V25,T12] ( 2, 0.50) long -> x0 "Inlining Arg"
+; V26 tmp20 [V26,T08] ( 3, 0.75) long -> x1 "Inlining Arg"
;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V29 tmp23 [V29,T16] ( 2, 2 ) long -> x0 single-def "field V10._handle (fldOffset=0x0)" P-INDEP
-; V30 tmp24 [V30,T17] ( 2, 2 ) long -> x0 single-def "field V15._handle (fldOffset=0x0)" P-INDEP
-; V31 tmp25 [V31,T22] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V32 tmp26 [V32,T23] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V33 tmp27 [V33,T24] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V34 tmp28 [V34,T25] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp29 [V35,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V36 cse0 [V36,T15] ( 3, 3 ) long -> x25 "CSE - aggressive"
-; V37 cse1 [V37,T08] ( 4, 4 ) int -> x1 "CSE - aggressive"
+; V29 tmp23 [V29,T13] ( 2, 0.25) long -> x0 single-def "field V10._handle (fldOffset=0x0)" P-INDEP
+; V30 tmp24 [V30,T14] ( 2, 0.25) long -> x0 single-def "field V15._handle (fldOffset=0x0)" P-INDEP
+; V31 tmp25 [V31,T20] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V32 tmp26 [V32,T21] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V33 tmp27 [V33,T22] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V34 tmp28 [V34,T23] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V35 tmp29 [V35,T24] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 8
@@ -58,37 +56,35 @@ G_M14781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x23, x24, [sp, #0x38]
str x25, [sp, #0x48]
mov fp, sp
- mov x19, x0
- ; byrRegs +[x19]
+ mov x20, x0
+ ; byrRegs +[x20]
mov x21, x1
; gcrRegs +[x21]
mov x22, x2
; gcrRegs +[x22]
- mov w20, w3
+ mov w19, w3
;; size=40 bbWeight=1 PerfScore 7.50
-G_M14781_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+G_M14781_IG02: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
ldr w1, [x21, #0x08]
lsl w23, w1, #2
ldr w1, [x22, #0x08]
lsl w24, w1, #2
- sub w1, w20, #1
- tst w1, w20
+ sub w1, w19, #1
+ tst w1, w19
bne G_M14781_IG13
;; size=28 bbWeight=1 PerfScore 10.00
-G_M14781_IG03: ; bbWeight=0.52, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
- cmp w20, #0
+G_M14781_IG03: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ cmp w19, #0
ble G_M14781_IG13
- ;; size=8 bbWeight=0.52 PerfScore 0.78
-G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
- cmp w20, #16
+ lsl w1, w19, #1
+ cmp w23, w19, LSL #1
+ ccmp w19, #16, 0, le
+ ccmp w24, w1, 0, le
bgt G_M14781_IG13
- lsl w1, w20, #1
- cmp w1, w23
- blt G_M14781_IG13
- cmp w24, w1
- bgt G_M14781_IG13
- sxtw x25, w1
- mov x1, x25
+ ;; size=28 bbWeight=0.50 PerfScore 2.75
+G_M14781_IG04: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ lsl w1, w19, #1
+ sxtw x1, w1
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -96,25 +92,26 @@ G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
; gcrRegs +[x0]
mov x15, x0
; gcrRegs +[x15]
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- mov x1, x25
+ lsl w1, w19, #1
+ sxtw x1, w1
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- add x14, x19, #8
+ add x14, x20, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x25, [x19]
+ ldr x25, [x20]
; gcrRegs +[x25]
mov x0, x25
; gcrRegs +[x0]
@@ -124,29 +121,21 @@ G_M14781_IG04: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbz w0, G_M14781_IG10
+ cbz w0, G_M14781_IG14
+ ;; size=104 bbWeight=0.12 PerfScore 2.75
+G_M14781_IG05: ; bbWeight=0.05, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=100000 {x20}, byref, isz
mov x0, x25
; gcrRegs +[x0]
mov w1, #3
bl <unknown method>
; gcrRegs -[x0]
- cbnz x0, G_M14781_IG06
- ;; size=144 bbWeight=1 PerfScore 29.00
-G_M14781_IG05: ; bbWeight=0.80, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=80000 {x19}, byref
- mov x0, x25
- ; gcrRegs +[x0]
- mov w1, #3
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x25]
- ;; size=28 bbWeight=0.80 PerfScore 5.20
-G_M14781_IG06: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+ cbz x0, G_M14781_IG11
+ ;; size=16 bbWeight=0.05 PerfScore 0.14
+G_M14781_IG06: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ ; gcrRegs -[x25]
orr x0, x0, #1
- str x0, [x19, #0x18]
- ldr x25, [x19, #0x08]
+ str x0, [x20, #0x18]
+ ldr x25, [x20, #0x08]
; gcrRegs +[x25]
mov x0, x25
; gcrRegs +[x0]
@@ -156,31 +145,23 @@ G_M14781_IG06: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbz w0, G_M14781_IG11
+ cbz w0, G_M14781_IG15
+ ;; size=40 bbWeight=0.12 PerfScore 1.44
+G_M14781_IG07: ; bbWeight=0.05, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=100000 {x20}, byref, isz
mov x0, x25
; gcrRegs +[x0]
mov w1, #3
bl <unknown method>
; gcrRegs -[x0]
- cbnz x0, G_M14781_IG08
- ;; size=56 bbWeight=1 PerfScore 14.50
-G_M14781_IG07: ; bbWeight=0.80, gcrefRegs=2600000 {x21 x22 x25}, byrefRegs=80000 {x19}, byref
- mov x0, x25
- ; gcrRegs +[x0]
- mov w1, #3
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x25]
- ;; size=28 bbWeight=0.80 PerfScore 5.20
-G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
+ cbz x0, G_M14781_IG10
+ ;; size=16 bbWeight=0.05 PerfScore 0.14
+G_M14781_IG08: ; bbWeight=0.12, gcrefRegs=600000 {x21 x22}, byrefRegs=100000 {x20}, byref, isz
+ ; gcrRegs -[x25]
orr x0, x0, #1
- str x0, [x19, #0x20]
- sxtw x0, w20
- str x0, [x19, #0x10]
- add x0, x19, #24
+ str x0, [x20, #0x20]
+ sxtw x0, w19
+ str x0, [x20, #0x10]
+ add x0, x20, #24
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -188,7 +169,7 @@ G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [x1]
blr x1
; byrRegs -[x0]
- ldr x1, [x19, #0x10]
+ ldr x1, [x20, #0x10]
sub x2, x1, #1
add x0, x1, x0
sub x0, x0, #1
@@ -202,7 +183,7 @@ G_M14781_IG08: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
bl CORINFO_HELP_MEMCPY
; gcrRegs -[x21]
; byrRegs -[x1]
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_pgo.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_tiered.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.windows.arm64.checked.mch |
5 |
3 |
1 |
1 |
-20 |
+4 |
libraries.crossgen2.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries.pmi.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
libraries_tests.run.windows.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
5 |
3 |
1 |
1 |
-20 |
+4 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.arm64.checked.mch |
24,427 |
4 |
24,423 |
49 (0.20%) |
49 (0.20%) |
benchmarks.run_pgo.windows.arm64.checked.mch |
74,716 |
40,165 |
34,551 |
53 (0.07%) |
53 (0.07%) |
benchmarks.run_tiered.windows.arm64.checked.mch |
48,580 |
36,755 |
11,825 |
47 (0.10%) |
47 (0.10%) |
coreclr_tests.run.windows.arm64.checked.mch |
366,979 |
161,422 |
205,557 |
118 (0.03%) |
118 (0.03%) |
libraries.crossgen2.windows.arm64.checked.mch |
273,940 |
15 |
273,925 |
599 (0.22%) |
599 (0.22%) |
libraries.pmi.windows.arm64.checked.mch |
305,617 |
6 |
305,611 |
50 (0.02%) |
50 (0.02%) |
libraries_tests.run.windows.arm64.Release.mch |
10,746 |
3,531 |
7,215 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
315,067 |
21,618 |
293,449 |
2,289 (0.72%) |
2,289 (0.72%) |
realworld.run.windows.arm64.checked.mch |
33,281 |
3 |
33,278 |
13 (0.04%) |
13 (0.04%) |
smoke_tests.nativeaot.windows.arm64.checked.mch |
23,944 |
8 |
23,936 |
246 (1.02%) |
246 (1.02%) |
|
1,477,297 |
263,527 |
1,213,770 |
3,464 (0.23%) |
3,464 (0.23%) |
jit-analyze output
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: 277084748 (overridden on cmd)
Total bytes of diff: 277084732 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 250522.dasm (0.50 % of base)
Top file improvements (bytes):
-8 : 250525.dasm (-4.55 % of base)
-8 : 250524.dasm (-2.74 % of base)
-4 : 250531.dasm (-1.96 % of base)
4 total files with Code Size differences (3 improved, 1 regressed), 1 unchanged.
Top method regressions (bytes):
4 (0.50 % of base) : 250522.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
Top method improvements (bytes):
-8 (-4.55 % of base) : 250525.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
-8 (-2.74 % of base) : 250524.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
-4 (-1.96 % of base) : 250531.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
Top method regressions (percentages):
4 (0.50 % of base) : 250522.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle+DataTable:.ctor(float[],float[],int):this (FullOpts)
Top method improvements (percentages):
-8 (-4.55 % of base) : 250525.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (FullOpts)
-8 (-2.74 % of base) : 250524.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
-4 (-1.96 % of base) : 250531.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:ValidateResult(float[],float[],ubyte,System.String):this (FullOpts)
4 total methods with Code Size differences (3 improved, 1 regressed).