-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use cinv and cneg instead of csel when possible #84926
Conversation
I think that without diffs it's hard to justify adding the transformation and new type of node. |
Looking at the diffs I see a lot of the following: mvn w2, w0 <--- ???
cmp w0, #0
- csel w0, w0, w2, ge
+ cinv w0, w2, ge It looks like the value is always inverted first, and then conditionally inverted back to the original value, instead of just conditionally inverting the original value when it is necessary. |
Thanks! I'll check this. This may explain the zero asm diffs. |
You're right. I was double inverting as a result of opposite value for The fix also improved the asmdiffs. We see a few now. Diffs are based on 1,677,851 contexts (504,004 MinOpts, 1,173,847 FullOpts). MISSED contexts: 3 (0.00%) Overall (-2,432 bytes)
MinOpts (+0 bytes)
FullOpts (-2,432 bytes)
Example diffsbenchmarks.run.linux.arm64.checked.mch-4 (-1.30%) : 332.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -11,7 +11,7 @@
; V01 TypeCtx [V01,T03] ( 5, 4 ) long -> x20 single-def
; V02 arg1 [V02,T02] ( 4, 6.50) ref -> x19 class-hnd single-def
; V03 loc0 [V03,T09] ( 4, 3 ) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T08] ( 7, 3.50) int -> x0
+; V04 loc1 [V04,T08] ( 6, 3 ) int -> x0
; V05 loc2 [V05,T06] ( 3, 5 ) ref -> x22 class-hnd single-def
; V06 loc3 [V06,T00] ( 9, 18.50) int -> x24
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
@@ -69,9 +69,8 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ cinv w0, w0, lt
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w23, [x22, #0x08]
@@ -82,7 +81,7 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
bne G_M33817_IG06
cmp w0, #1
bvs G_M33817_IG13
- ;; size=76 bbWeight=0.50 PerfScore 9.50
+ ;; size=72 bbWeight=0.50 PerfScore 9.25
G_M33817_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w24, w1, w2, w0
@@ -160,7 +159,7 @@ G_M33817_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 308, prolog size 24, PerfScore 164.55, instruction count 77, allocated bytes for code 308 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 304, prolog size 24, PerfScore 163.90, instruction count 76, allocated bytes for code 304 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -171,7 +170,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.00%) : 343.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -10,7 +10,7 @@
; V00 this [V00,T04] ( 7, 7 ) ref -> x20 this class-hnd single-def
; V01 arg1 [V01,T03] ( 5, 8 ) ref -> x19 class-hnd single-def
; V02 arg2 [V02,T10] ( 3, 3 ) ref -> x21 class-hnd single-def
-; V03 loc0 [V03,T06] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T06] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T14] ( 4, 4 ) ref -> x23 class-hnd single-def
; V05 loc2 [V05,T00] ( 10, 32 ) int -> x25
; V06 loc3 [V06,T01] ( 4, 24 ) ref -> x0 class-hnd
@@ -76,9 +76,8 @@ G_M58385_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -89,7 +88,7 @@ G_M58385_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG06
cmp w0, #1
bvs G_M58385_IG15
- ;; size=72 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 18.00
G_M58385_IG06: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -190,7 +189,7 @@ G_M58385_IG17: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 28, PerfScore 249.95, instruction count 100, allocated bytes for code 400 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 396, prolog size 28, PerfScore 249.05, instruction count 99, allocated bytes for code 396 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -201,7 +200,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.linux.arm64.checked.mch-4 (-1.28%) : 103196.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -13,7 +13,7 @@
; V01 TypeCtx [V01,T00] ( 5, 3 ) long -> x19 single-def
; V02 arg1 [V02,T02] ( 4, 2 ) ref -> x20 class-hnd single-def
; V03 loc0 [V03,T03] ( 4, 2 ) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T05] ( 7, 0 ) int -> x0
+; V04 loc1 [V04,T05] ( 6, 0 ) int -> x0
; V05 loc2 [V05,T06] ( 5, 0 ) ref -> x22 class-hnd single-def
; V06 loc3 [V06,T04] ( 9, 0 ) int -> x23
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
@@ -65,9 +65,8 @@ G_M33817_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=300000
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ cinv w0, w0, lt
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w2, [x22, #0x08]
@@ -77,7 +76,7 @@ G_M33817_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=300000
bne G_M33817_IG05
cmp w0, #1
bvs G_M33817_IG11
- ;; size=72 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M33817_IG05: ; bbWeight=0, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w23, w1, w2, w0
@@ -155,7 +154,7 @@ G_M33817_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 312, prolog size 24, PerfScore 48.20, instruction count 78, allocated bytes for code 312 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 308, prolog size 24, PerfScore 47.80, instruction count 77, allocated bytes for code 308 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -166,7 +165,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
+ Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.96%) : 4342.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -12,7 +12,7 @@
; V00 this [V00,T01] ( 7, 4 ) ref -> x19 this class-hnd single-def
; V01 arg1 [V01,T04] ( 7, 3 ) ref -> x20 class-hnd single-def
; V02 arg2 [V02,T06] ( 3, 2 ) ref -> x21 class-hnd single-def
-; V03 loc0 [V03,T00] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T00] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T10] ( 4, 2 ) ref -> x23 class-hnd single-def
; V05 loc2 [V05,T13] ( 10, 1 ) int -> x25
; V06 loc3 [V06,T14] ( 4, 0 ) ref -> x0 class-hnd
@@ -76,9 +76,8 @@ G_M58385_IG04: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs
; gcrRegs -[x0]
;; size=24 bbWeight=1 PerfScore 8.50
G_M58385_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x23, [x19, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -89,7 +88,7 @@ G_M58385_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG06
cmp w0, #1
bvs G_M58385_IG07
- ;; size=48 bbWeight=1 PerfScore 12.50
+ ;; size=44 bbWeight=1 PerfScore 12.00
G_M58385_IG06: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -199,7 +198,7 @@ G_M58385_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 416, prolog size 28, PerfScore 92.10, instruction count 104, allocated bytes for code 416 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 412, prolog size 28, PerfScore 91.20, instruction count 103, allocated bytes for code 412 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -210,7 +209,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.81%) : 86722.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -13,7 +13,7 @@
; V01 TypeCtx [V01,T00] ( 4, 3 ) long -> x19 single-def
; V02 arg1 [V02,T02] ( 8, 2.67) ref -> x20 class-hnd single-def
; V03 loc0 [V03,T05] ( 4, 2.67) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T03] ( 7, 4.67) int -> x0
+; V04 loc1 [V04,T03] ( 6, 4.00) int -> x0
; V05 loc2 [V05,T07] ( 5, 1.33) ref -> x24 class-hnd single-def
; V06 loc3 [V06,T09] ( 9, 0.67) int -> x25
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
@@ -88,9 +88,8 @@ G_M33817_IG05: ; bbWeight=0.67, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=
; gcr arg pop 0
;; size=24 bbWeight=0.67 PerfScore 5.67
G_M33817_IG06: ; bbWeight=0.67, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x24, [x21, #0x08]
; gcrRegs +[x24]
ldr w1, [x24, #0x08]
@@ -100,7 +99,7 @@ G_M33817_IG06: ; bbWeight=0.67, gcrefRegs=300000 {x20 x21}, byrefRegs=000
bne G_M33817_IG07
cmp w0, #1
bvs G_M33817_IG19
- ;; size=44 bbWeight=0.67 PerfScore 8.00
+ ;; size=40 bbWeight=0.67 PerfScore 7.67
G_M33817_IG07: ; bbWeight=0.67, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -257,7 +256,7 @@ G_M33817_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 492, prolog size 36, PerfScore 88.87, instruction count 123, allocated bytes for code 492 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 488, prolog size 36, PerfScore 88.13, instruction count 122, allocated bytes for code 488 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -268,7 +267,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 123 (0x0007b) Actual length = 492 (0x0001ec)
+ Function Length : 122 (0x0007a) Actual length = 488 (0x0001e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.48%) : 119671.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -12,7 +12,7 @@
; V00 this [V00,T09] ( 7, 7 ) ref -> x20 this class-hnd single-def
; V01 arg1 [V01,T05] ( 14, 11.50) ref -> x19 class-hnd single-def
; V02 arg2 [V02,T15] ( 3, 3 ) ref -> x21 class-hnd single-def
-; V03 loc0 [V03,T10] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T10] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T20] ( 4, 4 ) ref -> x25 class-hnd single-def
; V05 loc2 [V05,T03] ( 15, 28.55) int -> x27
; V06 loc3 [V06,T07] ( 12, 11.10) ref -> x0 class-hnd
@@ -125,9 +125,8 @@ G_M58385_IG05: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.25
G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x25, [x20, #0x08]
; gcrRegs +[x25]
ldr w26, [x25, #0x08]
@@ -138,7 +137,7 @@ G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG07
cmp w0, #1
bvs G_M58385_IG31
- ;; size=48 bbWeight=1 PerfScore 12.50
+ ;; size=44 bbWeight=1 PerfScore 12.00
G_M58385_IG07: ; bbWeight=1, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w27, w2, w1, w0
@@ -416,7 +415,7 @@ G_M58385_IG37: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 828, prolog size 44, PerfScore 498.92, instruction count 207, allocated bytes for code 828 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 824, prolog size 44, PerfScore 498.02, instruction count 206, allocated bytes for code 824 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -427,7 +426,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 207 (0x000cf) Actual length = 828 (0x00033c)
+ Function Length : 206 (0x000ce) Actual length = 824 (0x000338)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.48%) : 54199.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -12,7 +12,7 @@
; V00 this [V00,T09] ( 7, 7 ) ref -> x20 this class-hnd single-def
; V01 arg1 [V01,T05] ( 14, 12.46) ref -> x19 class-hnd single-def
; V02 arg2 [V02,T15] ( 3, 3 ) ref -> x21 class-hnd single-def
-; V03 loc0 [V03,T10] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T10] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T21] ( 4, 4 ) ref -> x25 class-hnd single-def
; V05 loc2 [V05,T03] ( 15, 81.11) int -> x27
; V06 loc3 [V06,T07] ( 12, 10.86) ref -> x0 class-hnd
@@ -125,9 +125,8 @@ G_M58385_IG05: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.25
G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x25, [x20, #0x08]
; gcrRegs +[x25]
ldr w26, [x25, #0x08]
@@ -138,7 +137,7 @@ G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG07
cmp w0, #1
bvs G_M58385_IG31
- ;; size=48 bbWeight=1 PerfScore 12.50
+ ;; size=44 bbWeight=1 PerfScore 12.00
G_M58385_IG07: ; bbWeight=1, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w27, w2, w1, w0
@@ -417,7 +416,7 @@ G_M58385_IG37: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 832, prolog size 44, PerfScore 595.25, instruction count 208, allocated bytes for code 832 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 828, prolog size 44, PerfScore 594.35, instruction count 207, allocated bytes for code 828 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -428,7 +427,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 208 (0x000d0) Actual length = 832 (0x000340)
+ Function Length : 207 (0x000cf) Actual length = 828 (0x00033c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.48%) : 112597.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -12,7 +12,7 @@
; V00 this [V00,T09] ( 7, 7 ) ref -> x20 this class-hnd single-def
; V01 arg1 [V01,T08] ( 13, 9.24) ref -> x19 class-hnd single-def
; V02 arg2 [V02,T16] ( 3, 3 ) ref -> x21 class-hnd single-def
-; V03 loc0 [V03,T10] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T10] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T21] ( 4, 4 ) ref -> x23 class-hnd single-def
; V05 loc2 [V05,T06] ( 15, 14.13) int -> x25
; V06 loc3 [V06,T07] ( 11, 11.86) ref -> x0 class-hnd
@@ -124,9 +124,8 @@ G_M58385_IG05: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.25
G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -137,7 +136,7 @@ G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG07
cmp w0, #1
bvs G_M58385_IG29
- ;; size=48 bbWeight=1 PerfScore 12.50
+ ;; size=44 bbWeight=1 PerfScore 12.00
G_M58385_IG07: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -405,7 +404,7 @@ G_M58385_IG35: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 836, prolog size 40, PerfScore 453.97, instruction count 209, allocated bytes for code 836 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 832, prolog size 40, PerfScore 453.07, instruction count 208, allocated bytes for code 832 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -416,7 +415,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 209 (0x000d1) Actual length = 836 (0x000344)
+ Function Length : 208 (0x000d0) Actual length = 832 (0x000340)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.linux.arm64.checked.mch-4 (-1.30%) : 4421.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -12,7 +12,7 @@
; V01 TypeCtx [V01,T03] ( 5, 4 ) long -> x20 single-def
; V02 arg1 [V02,T02] ( 4, 6.50) ref -> x19 class-hnd single-def
; V03 loc0 [V03,T09] ( 4, 3 ) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T08] ( 7, 3.50) int -> x0
+; V04 loc1 [V04,T08] ( 6, 3 ) int -> x0
; V05 loc2 [V05,T06] ( 3, 5 ) ref -> x22 class-hnd single-def
; V06 loc3 [V06,T00] ( 9, 18.50) int -> x24
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
@@ -70,9 +70,8 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ cinv w0, w0, lt
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w23, [x22, #0x08]
@@ -83,7 +82,7 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
bne G_M33817_IG06
cmp w0, #1
bvs G_M33817_IG13
- ;; size=76 bbWeight=0.50 PerfScore 9.50
+ ;; size=72 bbWeight=0.50 PerfScore 9.25
G_M33817_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w24, w1, w2, w0
@@ -161,7 +160,7 @@ G_M33817_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 308, prolog size 24, PerfScore 164.55, instruction count 77, allocated bytes for code 308 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 304, prolog size 24, PerfScore 163.90, instruction count 76, allocated bytes for code 304 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -172,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.00%) : 5039.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -11,7 +11,7 @@
; V00 this [V00,T04] ( 7, 7 ) ref -> x20 this class-hnd single-def
; V01 arg1 [V01,T03] ( 5, 8 ) ref -> x19 class-hnd single-def
; V02 arg2 [V02,T10] ( 3, 3 ) ref -> x21 class-hnd single-def
-; V03 loc0 [V03,T06] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T06] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T14] ( 4, 4 ) ref -> x23 class-hnd single-def
; V05 loc2 [V05,T00] ( 10, 32 ) int -> x25
; V06 loc3 [V06,T01] ( 4, 24 ) ref -> x0 class-hnd
@@ -77,9 +77,8 @@ G_M58385_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -90,7 +89,7 @@ G_M58385_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG06
cmp w0, #1
bvs G_M58385_IG15
- ;; size=72 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 18.00
G_M58385_IG06: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -191,7 +190,7 @@ G_M58385_IG17: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 28, PerfScore 249.95, instruction count 100, allocated bytes for code 400 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 396, prolog size 28, PerfScore 249.05, instruction count 99, allocated bytes for code 396 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -202,7 +201,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm64.checked.mch-4 (-0.65%) : 459.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -12,7 +12,7 @@
; V00 this [V00,T00] ( 7, 7 ) ref -> x19 this class-hnd single-def
; V01 arg1 [V01,T03] ( 10, 4.36) ref -> x20 class-hnd single-def
; V02 arg2 [V02,T08] ( 3, 3 ) ref -> x21 class-hnd single-def
-; V03 loc0 [V03,T02] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T02] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T13] ( 8, 4.26) ref -> x23 class-hnd single-def
; V05 loc2 [V05,T07] ( 15, 5.01) int -> x24
; V06 loc3 [V06,T15] ( 8, 3.00) ref -> x0 class-hnd
@@ -89,9 +89,8 @@ G_M58385_IG06: ; bbWeight=0.95, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcrRegs -[x0]
;; size=20 bbWeight=0.95 PerfScore 5.23
G_M58385_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x23, [x19, #0x08]
; gcrRegs +[x23]
ldr w1, [x23, #0x08]
@@ -101,7 +100,7 @@ G_M58385_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG08
cmp w0, #1
bvs G_M58385_IG25
- ;; size=44 bbWeight=1 PerfScore 12.00
+ ;; size=40 bbWeight=1 PerfScore 11.50
G_M58385_IG08: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w24, w2, w1, w0
@@ -294,7 +293,7 @@ G_M58385_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 612, prolog size 28, PerfScore 179.05, instruction count 153, allocated bytes for code 612 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 608, prolog size 28, PerfScore 178.15, instruction count 152, allocated bytes for code 608 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -305,7 +304,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 153 (0x00099) Actual length = 612 (0x000264)
+ Function Length : 152 (0x00098) Actual length = 608 (0x000260)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.60%) : 343233.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -13,7 +13,7 @@
; V01 TypeCtx [V01,T03] ( 4, 3 ) long -> x20 single-def
; V02 arg1 [V02,T00] ( 10, 4.86) ref -> x19 class-hnd single-def
; V03 loc0 [V03,T10] ( 4, 3.52) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T01] ( 7, 6.20) int -> x0
+; V04 loc1 [V04,T01] ( 6, 5.31) int -> x0
; V05 loc2 [V05,T12] ( 5, 3.31) ref -> x22 class-hnd single-def
; V06 loc3 [V06,T06] ( 9, 4.37) int -> x23
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
@@ -183,9 +183,8 @@ G_M33817_IG17: ; bbWeight=0.84, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=
; gcr arg pop 0
;; size=24 bbWeight=0.84 PerfScore 7.16
G_M33817_IG18: ; bbWeight=0.89, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ cinv w0, w0, lt
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w2, [x22, #0x08]
@@ -195,7 +194,7 @@ G_M33817_IG18: ; bbWeight=0.89, gcrefRegs=280000 {x19 x21}, byrefRegs=000
bne G_M33817_IG19
cmp w0, #1
bvs G_M33817_IG29
- ;; size=44 bbWeight=0.89 PerfScore 10.63
+ ;; size=40 bbWeight=0.89 PerfScore 10.19
G_M33817_IG19: ; bbWeight=0.89, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w23, w1, w2, w0
@@ -326,7 +325,7 @@ G_M33817_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 664, prolog size 40, PerfScore 189.47, instruction count 166, allocated bytes for code 664 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 660, prolog size 40, PerfScore 188.63, instruction count 165, allocated bytes for code 660 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -337,7 +336,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
+ Function Length : 165 (0x000a5) Actual length = 660 (0x000294)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.60%) : 424961.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -13,7 +13,7 @@
; V01 TypeCtx [V01,T03] ( 4, 3 ) long -> x20 single-def
; V02 arg1 [V02,T00] ( 10, 4.86) ref -> x19 class-hnd single-def
; V03 loc0 [V03,T10] ( 4, 3.52) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T01] ( 7, 6.20) int -> x0
+; V04 loc1 [V04,T01] ( 6, 5.31) int -> x0
; V05 loc2 [V05,T12] ( 5, 3.31) ref -> x22 class-hnd single-def
; V06 loc3 [V06,T06] ( 9, 4.37) int -> x23
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
@@ -183,9 +183,8 @@ G_M33817_IG17: ; bbWeight=0.84, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=
; gcr arg pop 0
;; size=24 bbWeight=0.84 PerfScore 7.16
G_M33817_IG18: ; bbWeight=0.89, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ cinv w0, w0, lt
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w2, [x22, #0x08]
@@ -195,7 +194,7 @@ G_M33817_IG18: ; bbWeight=0.89, gcrefRegs=280000 {x19 x21}, byrefRegs=000
bne G_M33817_IG19
cmp w0, #1
bvs G_M33817_IG29
- ;; size=44 bbWeight=0.89 PerfScore 10.63
+ ;; size=40 bbWeight=0.89 PerfScore 10.19
G_M33817_IG19: ; bbWeight=0.89, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w23, w1, w2, w0
@@ -326,7 +325,7 @@ G_M33817_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 664, prolog size 40, PerfScore 189.47, instruction count 166, allocated bytes for code 664 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 660, prolog size 40, PerfScore 188.63, instruction count 165, allocated bytes for code 660 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -337,7 +336,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
+ Function Length : 165 (0x000a5) Actual length = 660 (0x000294)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.60%) : 360.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -13,7 +13,7 @@
; V01 TypeCtx [V01,T05] ( 4, 3 ) long -> x20 single-def
; V02 arg1 [V02,T01] ( 10, 4.68) ref -> x19 class-hnd single-def
; V03 loc0 [V03,T12] ( 4, 3.52) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T02] ( 7, 6.20) int -> x0
+; V04 loc1 [V04,T02] ( 6, 5.31) int -> x0
; V05 loc2 [V05,T13] ( 5, 3.31) ref -> x22 class-hnd single-def
; V06 loc3 [V06,T09] ( 9, 4.37) int -> x23
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
@@ -87,9 +87,8 @@ G_M33817_IG06: ; bbWeight=0.84, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=
; gcr arg pop 0
;; size=20 bbWeight=0.84 PerfScore 4.63
G_M33817_IG07: ; bbWeight=0.89, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ cinv w0, w0, lt
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w2, [x22, #0x08]
@@ -99,7 +98,7 @@ G_M33817_IG07: ; bbWeight=0.89, gcrefRegs=280000 {x19 x21}, byrefRegs=000
bne G_M33817_IG08
cmp w0, #1
bvs G_M33817_IG32
- ;; size=44 bbWeight=0.89 PerfScore 10.63
+ ;; size=40 bbWeight=0.89 PerfScore 10.19
G_M33817_IG08: ; bbWeight=0.89, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w23, w1, w2, w0
@@ -333,7 +332,7 @@ G_M33817_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 672, prolog size 40, PerfScore 188.14, instruction count 168, allocated bytes for code 672 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 668, prolog size 40, PerfScore 187.30, instruction count 167, allocated bytes for code 668 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -344,7 +343,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
+ Function Length : 167 (0x000a7) Actual length = 668 (0x00029c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 354527.dasm - test:Main():intNo diffs found? +0 (0.00%) : 583778.dasm - test:Main():intNo diffs found? libraries.crossgen2.linux.arm64.checked.mch-4 (-12.50%) : 29340.dasm - System.Index:get_Value():int:this@@ -9,7 +9,7 @@
;
; V00 this [V00,T00] ( 3, 3 ) byref -> x0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V02 cse0 [V02,T01] ( 3, 3 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,16 +21,15 @@ G_M18211_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; byrRegs +[x0]
ldr w0, [x0]
; byrRegs -[x0]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
- ;; size=16 bbWeight=1 PerfScore 4.50
+ cinv w0, w0, lt
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M18211_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 32, prolog size 8, PerfScore 11.20, instruction count 8, allocated bytes for code 32 (MethodHash=5541b8dc) for method System.Index:get_Value():int:this
+; Total bytes of code 28, prolog size 8, PerfScore 10.30, instruction count 7, allocated bytes for code 28 (MethodHash=5541b8dc) for method System.Index:get_Value():int:this
; ============================================================
Unwind Info:
@@ -41,7 +40,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 7 (0x00007) Actual length = 28 (0x00001c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-3.57%) : 30324.dasm - System.OrdinalComparer:GetHashCode():int:this@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def
-; V01 loc0 [V01,T02] ( 3, 3 ) int -> x0
+; V01 loc0 [V01,T02] ( 2, 2 ) int -> x0
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 3, 3 ) long -> x2 "Inline stloc first use temp"
; V04 cse0 [V04,T01] ( 3, 3 ) ref -> x0 "CSE - aggressive"
@@ -48,17 +48,16 @@ G_M30928_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x4
; byrRegs -[x0]
ldrb w1, [x19, #0x08]
- mvn w2, w0
cmp w1, #0
- csel w0, w2, w0, ne
- ;; size=84 bbWeight=1 PerfScore 30.00
+ cinv w0, w0, ne
+ ;; size=80 bbWeight=1 PerfScore 29.50
G_M30928_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 112, prolog size 12, PerfScore 48.20, instruction count 28, allocated bytes for code 112 (MethodHash=f0e4872f) for method System.OrdinalComparer:GetHashCode():int:this
+; Total bytes of code 108, prolog size 12, PerfScore 47.30, instruction count 27, allocated bytes for code 108 (MethodHash=f0e4872f) for method System.OrdinalComparer:GetHashCode():int:this
; ============================================================
Unwind Info:
@@ -69,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-2.38%) : 88117.dasm - Utilities.IndexMap:SourceOf(int):int:this@@ -10,7 +10,7 @@
; V00 this [V00,T00] ( 5, 4.50) ref -> x19 this class-hnd single-def
; V01 arg1 [V01,T01] ( 5, 4 ) int -> x1 single-def
; V02 loc0 [V02,T04] ( 5, 4 ) int -> x0 single-def
-; V03 loc1 [V03,T03] ( 9, 4.50) int -> x0
+; V03 loc1 [V03,T03] ( 8, 4 ) int -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T02] ( 3, 6 ) ref -> x2 single-def "arr expr"
;* V06 tmp2 [V06,T09] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
@@ -68,12 +68,11 @@ G_M29209_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=808
ldr x2, [x11]
blr x2
; gcrRegs -[x0]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
sub w0, w0, #1
str w0, [x19, #0x14]
- ;; size=44 bbWeight=0.50 PerfScore 4.50
+ ;; size=40 bbWeight=0.50 PerfScore 4.25
G_M29209_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -88,7 +87,7 @@ G_M29209_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 12, PerfScore 47.55, instruction count 42, allocated bytes for code 168 (MethodHash=5f7a8de6) for method Utilities.IndexMap:SourceOf(int):int:this
+; Total bytes of code 164, prolog size 12, PerfScore 46.90, instruction count 41, allocated bytes for code 164 (MethodHash=5f7a8de6) for method Utilities.IndexMap:SourceOf(int):int:this
; ============================================================
Unwind Info:
@@ -99,7 +98,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-1.14%) : 30020.dasm - System.Range:ToString():System.String:this@@ -67,7 +67,7 @@
;* V56 tmp47 [V56,T36] ( 0, 0 ) int -> zero-ref V01._length(offs=0x08) P-INDEP "field V01._length (fldOffset=0x8)"
;* V57 tmp48 [V57 ] ( 0, 0 ) byref -> zero-ref V05._reference(offs=0x00) P-INDEP "field V05._reference (fldOffset=0x0)"
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)"
-; V59 tmp50 [V59,T01] ( 12, 12 ) int -> registers V06._value(offs=0x00) P-INDEP "field V06._value (fldOffset=0x0)"
+; V59 tmp50 [V59,T01] ( 10, 10 ) int -> registers V06._value(offs=0x00) P-INDEP "field V06._value (fldOffset=0x0)"
;* V60 tmp51 [V60 ] ( 0, 0 ) byref -> zero-ref V08._reference(offs=0x00) P-INDEP "field V08._reference (fldOffset=0x0)"
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)"
; V62 tmp53 [V62,T19] ( 2, 2 ) byref -> x20 single-def V10._reference(offs=0x00) P-INDEP "field V10._reference (fldOffset=0x0)"
@@ -132,9 +132,8 @@ G_M59075_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M59075_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr w22, [x19]
- mvn w1, w22
cmp w22, #0
- csel w23, w22, w1, ge
+ cinv w23, w22, lt
cmp w21, #24
bhi G_M59075_IG20
ubfiz x1, x21, #1, #32
@@ -143,7 +142,7 @@ G_M59075_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w1, #24
sub w24, w1, w21
tbz w24, #31, G_M59075_IG06
- ;; size=44 bbWeight=1 PerfScore 9.50
+ ;; size=40 bbWeight=1 PerfScore 9.00
G_M59075_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=580000 {x19 x20 x22}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x1, x1, [LOW RELOC #0xD1FFAB1E]
@@ -213,9 +212,8 @@ G_M59075_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
;; size=24 bbWeight=0.50 PerfScore 2.00
G_M59075_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr w1, [x19, #0x04]
- mvn w0, w1
cmp w1, #0
- csel w23, w1, w0, ge
+ cinv w23, w1, lt
cmp w22, #24
bhi G_M59075_IG20
ubfiz x1, x22, #1, #32
@@ -223,7 +221,7 @@ G_M59075_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w1, #24
sub w21, w1, w22
tbz w21, #31, G_M59075_IG12
- ;; size=44 bbWeight=1 PerfScore 9.50
+ ;; size=40 bbWeight=1 PerfScore 9.00
G_M59075_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x1, x1, [LOW RELOC #0xD1FFAB1E]
@@ -352,7 +350,7 @@ G_M59075_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 700, prolog size 40, PerfScore 208.50, instruction count 175, allocated bytes for code 700 (MethodHash=d5b6193c) for method System.Range:ToString():System.String:this
+; Total bytes of code 692, prolog size 40, PerfScore 206.70, instruction count 173, allocated bytes for code 692 (MethodHash=d5b6193c) for method System.Range:ToString():System.String:this
; ============================================================
Unwind Info:
@@ -363,7 +361,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 175 (0x000af) Actual length = 700 (0x0002bc)
+ Function Length : 173 (0x000ad) Actual length = 692 (0x0002b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.04%) : 46029.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -12,7 +12,7 @@
; V01 TypeCtx [V01,T04] ( 5, 4 ) long -> x20 single-def
; V02 arg1 [V02,T03] ( 4, 6.50) ref -> x19 class-hnd single-def
; V03 loc0 [V03,T10] ( 4, 3 ) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T09] ( 7, 3.50) int -> x0
+; V04 loc1 [V04,T09] ( 6, 3 ) int -> x0
; V05 loc2 [V05,T07] ( 3, 5 ) ref -> x22 class-hnd single-def
; V06 loc3 [V06,T00] ( 9, 18.50) int -> x24
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd
@@ -74,9 +74,8 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
- mvn w11, w0
cmp w0, #0
- csel w0, w0, w11, ge
+ cinv w0, w0, lt
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w23, [x22, #0x08]
@@ -87,7 +86,7 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
bne G_M33817_IG06
cmp w0, #1
bvs G_M33817_IG13
- ;; size=88 bbWeight=0.50 PerfScore 11.75
+ ;; size=84 bbWeight=0.50 PerfScore 11.50
G_M33817_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w11
msub w24, w1, w11, w0
@@ -183,7 +182,7 @@ G_M33817_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 384, prolog size 24, PerfScore 160.40, instruction count 96, allocated bytes for code 384 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 380, prolog size 24, PerfScore 159.75, instruction count 95, allocated bytes for code 380 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -194,7 +193,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 96 (0x00060) Actual length = 384 (0x000180)
+ Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.92%) : 46031.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -11,7 +11,7 @@
; V00 this [V00,T03] ( 8, 8 ) ref -> x19 this class-hnd single-def
; V01 arg1 [V01,T04] ( 5, 8 ) ref -> x20 class-hnd single-def
; V02 arg2 [V02,T08] ( 3, 3 ) ref -> x21 class-hnd single-def
-; V03 loc0 [V03,T06] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T06] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T09] ( 4, 4 ) ref -> x22 class-hnd single-def
; V05 loc2 [V05,T00] ( 10, 32 ) int -> x24
; V06 loc3 [V06,T01] ( 3, 20 ) ref -> x0 class-hnd
@@ -55,9 +55,8 @@ G_M58385_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldr x2, [x11]
blr x2
; gcrRegs -[x1]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x22, [x19, #0x08]
; gcrRegs +[x22]
ldr w23, [x22, #0x08]
@@ -68,7 +67,7 @@ G_M58385_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG03
cmp w0, #1
bvs G_M58385_IG11
- ;; size=88 bbWeight=1 PerfScore 26.00
+ ;; size=84 bbWeight=1 PerfScore 25.50
G_M58385_IG03: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
sdiv w11, w0, w1
msub w24, w11, w1, w0
@@ -187,7 +186,7 @@ G_M58385_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 436, prolog size 28, PerfScore 248.85, instruction count 109, allocated bytes for code 436 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 432, prolog size 28, PerfScore 247.95, instruction count 108, allocated bytes for code 432 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -198,7 +197,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.linux.arm64.checked.mch-8 (-2.78%) : 227683.dasm - System.Linq.Enumerable:Take[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Range):System.Collections.Generic.IEnumerable`1[ubyte]@@ -19,8 +19,8 @@
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T08] ( 2, 2 ) int -> x1 "Inline return value spill temp"
; V11 tmp2 [V11,T09] ( 2, 2 ) int -> x2 "Inline return value spill temp"
-; V12 tmp3 [V12,T02] ( 5, 5 ) int -> x1 V02._value(offs=0x00) P-INDEP "field V02._value (fldOffset=0x0)"
-; V13 tmp4 [V13,T03] ( 5, 5 ) int -> x2 V03._value(offs=0x00) P-INDEP "field V03._value (fldOffset=0x0)"
+; V12 tmp3 [V12,T02] ( 4, 4 ) int -> x1 V02._value(offs=0x00) P-INDEP "field V02._value (fldOffset=0x0)"
+; V13 tmp4 [V13,T03] ( 4, 4 ) int -> x2 V03._value(offs=0x00) P-INDEP "field V03._value (fldOffset=0x0)"
;
; Lcl frame size = 16
@@ -35,16 +35,14 @@ G_M11152_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldp w1, w2, [fp, #0x18]
lsr w3, w1, #31
lsr w4, w2, #31
- mvn w5, w1
cmp w1, #0
- csel w1, w1, w5, ge
+ cinv w1, w1, lt
str w1, [fp, #0x14]
- mvn w5, w2
cmp w2, #0
- csel w2, w2, w5, ge
+ cinv w2, w2, lt
str w2, [fp, #0x10]
cbz w3, G_M11152_IG07
- ;; size=52 bbWeight=1 PerfScore 11.00
+ ;; size=44 bbWeight=1 PerfScore 10.00
G_M11152_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cbz w1, G_M11152_IG04
cbz w4, G_M11152_IG06
@@ -131,7 +129,7 @@ G_M11152_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 8, PerfScore 65.30, instruction count 72, allocated bytes for code 288 (MethodHash=22ebd46f) for method System.Linq.Enumerable:Take[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Range):System.Collections.Generic.IEnumerable`1[ubyte]
+; Total bytes of code 280, prolog size 8, PerfScore 63.50, instruction count 70, allocated bytes for code 280 (MethodHash=22ebd46f) for method System.Linq.Enumerable:Take[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Range):System.Collections.Generic.IEnumerable`1[ubyte]
; ============================================================
Unwind Info:
@@ -142,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.74%) : 151769.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:IndexOf(System.Numerics.Vector`1[float],System.Collections.Generic.IComparer`1[System.Numerics.Vector`1[float]]):int:this@@ -11,7 +11,7 @@
; V01 arg1 [V01,T05] ( 5, 3.50) simd16 -> [fp+10H] HFA(simd16) single-def
; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def
; V03 loc0 [V03,T03] ( 3, 1.50) int -> x0
-; V04 loc1 [V04,T02] ( 11, 5.50) int -> x0
+; V04 loc1 [V04,T02] ( 9, 4.50) int -> x0
; V05 loc2 [V05,T04] ( 3, 1.50) bool -> x1
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
@@ -82,19 +82,17 @@ G_M63635_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
blr x2
; gcrRegs -[x0-x1 x20]
lsr w1, w0, #31
- mvn w2, w0
cmp w1, #0
- csel w0, w0, w2, eq
+ cinv w0, w0, ne
ldr x2, [x19, #0x08]
; gcrRegs +[x2]
ldr w2, [x2, #0x18]
; gcrRegs -[x2]
add w0, w2, w0
add w0, w0, #1
- mvn w2, w0
cmp w1, #0
- csel w0, w0, w2, eq
- ;; size=88 bbWeight=0.50 PerfScore 13.25
+ cinv w0, w0, ne
+ ;; size=80 bbWeight=0.50 PerfScore 12.75
G_M63635_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
@@ -135,7 +133,7 @@ G_M63635_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 12, PerfScore 72.20, instruction count 73, allocated bytes for code 292 (MethodHash=492e076c) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:IndexOf(System.Numerics.Vector`1[float],System.Collections.Generic.IComparer`1[System.Numerics.Vector`1[float]]):int:this
+; Total bytes of code 284, prolog size 12, PerfScore 70.90, instruction count 71, allocated bytes for code 284 (MethodHash=492e076c) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:IndexOf(System.Numerics.Vector`1[float],System.Collections.Generic.IComparer`1[System.Numerics.Vector`1[float]]):int:this
; ============================================================
Unwind Info:
@@ -146,7 +144,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%) : 89376.dasm - Utilities.IndexMap:SourceOf(int):int:this@@ -10,7 +10,7 @@
; V00 this [V00,T00] ( 5, 4.50) ref -> x19 this class-hnd single-def
; V01 arg1 [V01,T01] ( 5, 4 ) int -> x1 single-def
; V02 loc0 [V02,T04] ( 5, 4 ) int -> x0 single-def
-; V03 loc1 [V03,T03] ( 9, 4.50) int -> x0
+; V03 loc1 [V03,T03] ( 8, 4 ) int -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -75,12 +75,11 @@ G_M29209_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x5, [x5]
blr x5
; gcrRegs -[x0]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
sub w0, w0, #1
str w0, [x19, #0x14]
- ;; size=64 bbWeight=0.50 PerfScore 6.00
+ ;; size=60 bbWeight=0.50 PerfScore 5.75
G_M29209_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -101,7 +100,7 @@ G_M29209_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 12, PerfScore 52.65, instruction count 51, allocated bytes for code 204 (MethodHash=5f7a8de6) for method Utilities.IndexMap:SourceOf(int):int:this
+; Total bytes of code 200, prolog size 12, PerfScore 52.00, instruction count 50, allocated bytes for code 200 (MethodHash=5f7a8de6) for method Utilities.IndexMap:SourceOf(int):int:this
; ============================================================
Unwind Info:
@@ -112,7 +111,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)
-8 (-1.56%) : 227682.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Range):System.Collections.Generic.IEnumerable`1[System.__Canon]@@ -24,8 +24,8 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp5 [V15,T20] ( 2, 2 ) int -> x22 "Inline return value spill temp"
; V16 tmp6 [V16,T21] ( 2, 2 ) int -> x23 "Inline return value spill temp"
-; V17 tmp7 [V17,T03] ( 5, 5 ) int -> x1 V03._value(offs=0x00) P-INDEP "field V03._value (fldOffset=0x0)"
-; V18 tmp8 [V18,T04] ( 5, 5 ) int -> x2 V04._value(offs=0x00) P-INDEP "field V04._value (fldOffset=0x0)"
+; V17 tmp7 [V17,T03] ( 4, 4 ) int -> x1 V03._value(offs=0x00) P-INDEP "field V03._value (fldOffset=0x0)"
+; V18 tmp8 [V18,T04] ( 4, 4 ) int -> x2 V04._value(offs=0x00) P-INDEP "field V04._value (fldOffset=0x0)"
; V19 tmp9 [V19,T22] ( 2, 2 ) long -> x0 "argument with side effect"
; V20 tmp10 [V20,T23] ( 2, 2 ) long -> x0 "argument with side effect"
; V21 rat0 [V21,T16] ( 3, 2 ) long -> x1 "runtime lookup"
@@ -58,14 +58,12 @@ G_M46217_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldp w1, w2, [fp, #0x18]
lsr w20, w1, #31
lsr w21, w2, #31
- mvn w3, w1
cmp w1, #0
- csel w22, w1, w3, ge
- mvn w1, w2
+ cinv w22, w1, lt
cmp w2, #0
- csel w23, w2, w1, ge
+ cinv w23, w2, lt
cbz w20, G_M46217_IG10
- ;; size=44 bbWeight=1 PerfScore 9.00
+ ;; size=36 bbWeight=1 PerfScore 8.00
G_M46217_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cbz w22, G_M46217_IG04
cbz w21, G_M46217_IG22
@@ -237,7 +235,7 @@ G_M46217_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 24, PerfScore 118.75, instruction count 128, allocated bytes for code 512 (MethodHash=75994b76) for method System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Range):System.Collections.Generic.IEnumerable`1[System.__Canon]
+; Total bytes of code 504, prolog size 24, PerfScore 116.95, instruction count 126, allocated bytes for code 504 (MethodHash=75994b76) for method System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Range):System.Collections.Generic.IEnumerable`1[System.__Canon]
; ============================================================
Unwind Info:
@@ -248,7 +246,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 128 (0x00080) Actual length = 512 (0x000200)
+ Function Length : 126 (0x0007e) Actual length = 504 (0x0001f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.28%) : 15280.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.Nullable`1[int]]:get_Item(System.__Canon):System.Nullable`1[int]:this@@ -11,7 +11,7 @@
; V01 TypeCtx [V01,T03] ( 5, 4 ) long -> x20 single-def
; V02 arg1 [V02,T02] ( 4, 6.50) ref -> x19 class-hnd single-def
; V03 loc0 [V03,T09] ( 4, 3 ) ref -> x21 class-hnd single-def
-; V04 loc1 [V04,T08] ( 7, 3.50) int -> x0
+; V04 loc1 [V04,T08] ( 6, 3 ) int -> x0
; V05 loc2 [V05,T06] ( 3, 5 ) ref -> x22 class-hnd single-def
; V06 loc3 [V06,T00] ( 9, 18.50) int -> x24
;* V07 loc4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op
@@ -71,9 +71,8 @@ G_M29273_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ cinv w0, w0, lt
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w23, [x22, #0x08]
@@ -84,7 +83,7 @@ G_M29273_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
bne G_M29273_IG06
cmp w0, #1
bvs G_M29273_IG13
- ;; size=76 bbWeight=0.50 PerfScore 9.50
+ ;; size=72 bbWeight=0.50 PerfScore 9.25
G_M29273_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w24, w1, w2, w0
@@ -160,7 +159,7 @@ G_M29273_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 312, prolog size 24, PerfScore 165.45, instruction count 78, allocated bytes for code 312 (MethodHash=2afc8da6) for method System.Reflection.CerHashtable`2[System.__Canon,System.Nullable`1[int]]:get_Item(System.__Canon):System.Nullable`1[int]:this
+; Total bytes of code 308, prolog size 24, PerfScore 164.80, instruction count 77, allocated bytes for code 308 (MethodHash=2afc8da6) for method System.Reflection.CerHashtable`2[System.__Canon,System.Nullable`1[int]]:get_Item(System.__Canon):System.Nullable`1[int]:this
; ============================================================
Unwind Info:
@@ -171,7 +170,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
+ Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.04%) : 15282.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.Nullable`1[int]]:Insert(System.__Canon,System.Nullable`1[int]):this@@ -10,7 +10,7 @@
; V00 this [V00,T05] ( 7, 7 ) ref -> x20 this class-hnd single-def
; V01 arg1 [V01,T04] ( 5, 8 ) ref -> x19 class-hnd single-def
; V02 arg2 [V02,T12] ( 3, 3 ) struct ( 8) x21 single-def
-; V03 loc0 [V03,T07] ( 7, 7 ) int -> x0
+; V03 loc0 [V03,T07] ( 6, 6 ) int -> x0
; V04 loc1 [V04,T15] ( 4, 4 ) ref -> x23 class-hnd single-def
; V05 loc2 [V05,T00] ( 11, 33 ) int -> x25
; V06 loc3 [V06,T01] ( 4, 24 ) ref -> x0 class-hnd
@@ -75,9 +75,8 @@ G_M17873_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ cinv w0, w0, lt
ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -88,7 +87,7 @@ G_M17873_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bne G_M17873_IG06
cmp w0, #1
bvs G_M17873_IG12
- ;; size=72 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 18.00
G_M17873_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -178,7 +177,7 @@ G_M17873_IG14: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 384, prolog size 28, PerfScore 253.85, instruction count 96, allocated bytes for code 384 (MethodHash=9fffba2e) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.Nullable`1[int]]:Insert(System.__Canon,System.Nullable`1[int]):this
+; Total bytes of code 380, prolog size 28, PerfScore 252.95, instruction count 95, allocated bytes for code 380 (MethodHash=9fffba2e) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.Nullable`1[int]]:Insert(System.__Canon,System.Nullable`1[int]):this
; ============================================================
Unwind Info:
@@ -189,7 +188,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 96 (0x00060) Actual length = 384 (0x000180)
+ Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.pmi.linux.arm64.checked.mch-4 (-12.50%) : 152586.dasm - System.Index:get_Value():int:this@@ -8,7 +8,7 @@
;
; V00 this [V00,T00] ( 3, 3 ) byref -> x0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V02 cse0 [V02,T01] ( 3, 3 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,16 +20,15 @@ G_M18211_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; byrRegs +[x0]
ldr w0, [x0]
; byrRegs -[x0]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
- ;; size=16 bbWeight=1 PerfScore 4.50
+ cinv w0, w0, lt
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M18211_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 32, prolog size 8, PerfScore 11.20, instruction count 8, allocated bytes for code 32 (MethodHash=5541b8dc) for method System.Index:get_Value():int:this
+; Total bytes of code 28, prolog size 8, PerfScore 10.30, instruction count 7, allocated bytes for code 28 (MethodHash=5541b8dc) for method System.Index:get_Value():int:this
; ============================================================
Unwind Info:
@@ -40,7 +39,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 7 (0x00007) Actual length = 28 (0x00001c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.08%) : 240274.dasm - System.SpanTests.SpanTests:g__ParseIndex|145_4(System.ReadOnlySpan`1[ushort]):System.Index@@ -22,7 +22,7 @@
; V12 tmp10 [V12 ] ( 2, 2 ) int -> [fp+20H] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V13 tmp11 [V13,T07] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V15 tmp13 [V15,T00] ( 4, 8 ) int -> x0 "Inlining Arg"
+; V15 tmp13 [V15,T00] ( 3, 6 ) int -> x0 "Inlining Arg"
; V16 tmp14 [V16,T02] ( 5, 3.50) byref -> registers V00._reference(offs=0x00) P-INDEP "field V00._reference (fldOffset=0x0)"
; V17 tmp15 [V17,T01] ( 6, 4.50) int -> registers V00._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
; V18 tmp16 [V18,T06] ( 3, 2 ) byref -> x20 single-def V03._reference(offs=0x00) P-INDEP "field V03._reference (fldOffset=0x0)"
@@ -122,10 +122,9 @@ G_M61416_IG07: ; bbWeight=1, gcVars=0000000000000800 {V11}, gcrefRegs=000
cbnz w0, G_M61416_IG12
ldr w0, [fp, #0x20] // [V12 tmp10]
tbnz w0, #31, G_M61416_IG10
- mvn w1, w0
cmp w19, #0
- csel w0, w0, w1, eq
- ;; size=64 bbWeight=1 PerfScore 15.00
+ cinv w0, w0, ne
+ ;; size=60 bbWeight=1 PerfScore 14.50
G_M61416_IG08: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
@@ -177,7 +176,7 @@ G_M61416_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
brk_unix #0
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 372, prolog size 20, PerfScore 83.45, instruction count 93, allocated bytes for code 372 (MethodHash=af861017) for method System.SpanTests.SpanTests:<EnumerateLines_Battery>g__ParseIndex|145_4(System.ReadOnlySpan`1[ushort]):System.Index
+; Total bytes of code 368, prolog size 20, PerfScore 82.55, instruction count 92, allocated bytes for code 368 (MethodHash=af861017) for method System.SpanTests.SpanTests:<EnumerateLines_Battery>g__ParseIndex|145_4(System.ReadOnlySpan`1[ushort]):System.Index
; ============================================================
Unwind Info:
@@ -188,7 +187,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
+ Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
DetailsImprovements/regressions per collection
Context information
jit-analyze output |
@SwapnilGaikwad What if you generalize the handling to |
Cool. I will give |
@SwapnilGaikwad - did you get a chance to try this? |
I'll be on it in this week 🙂 👍 |
Added a version that uses a more generic
I will try this now, so converted the PR to draft. |
Added support for csneg and cleaned up the |
The asmdiffs didn't show change much. Diffs are based on 1,551,906 contexts (446,585 MinOpts, 1,105,321 FullOpts). MISSED contexts: 2,291 (0.15%) Overall (-3,024 bytes)
MinOpts (+0 bytes)
FullOpts (-3,024 bytes)
Example diffslibraries.crossgen2.linux.arm64.checked.mch-4 (-12.50%) : 34232.dasm - System.Index:get_Value():int:this@@ -21,16 +21,15 @@ G_M18211_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; byrRegs +[x0]
ldr w0, [x0]
; byrRegs -[x0]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
- ;; size=16 bbWeight=1 PerfScore 4.50
+ csinv w0, w0, w0, ge
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M18211_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 32, prolog size 8, PerfScore 11.20, instruction count 8, allocated bytes for code 32 (MethodHash=5541b8dc) for method System.Index:get_Value():int:this
+; Total bytes of code 28, prolog size 8, PerfScore 10.30, instruction count 7, allocated bytes for code 28 (MethodHash=5541b8dc) for method System.Index:get_Value():int:this
; ============================================================
Unwind Info:
@@ -41,7 +40,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 7 (0x00007) Actual length = 28 (0x00001c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-8.33%) : 132371.dasm - ILCompiler.Reflection.ReadyToRun.NibbleReader:ReadInt():int:this@@ -26,16 +26,15 @@ G_M34184_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
lsr w1, w0, #1
- neg w2, w1
tst w0, #1
- csel w0, w2, w1, ne
- ;; size=32 bbWeight=1 PerfScore 7.50
+ csneg w0, w1, w1, eq
+ ;; size=28 bbWeight=1 PerfScore 7.00
G_M34184_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 15.80, instruction count 12, allocated bytes for code 48 (MethodHash=954a7a77) for method ILCompiler.Reflection.ReadyToRun.NibbleReader:ReadInt():int:this
+; Total bytes of code 44, prolog size 8, PerfScore 14.90, instruction count 11, allocated bytes for code 44 (MethodHash=954a7a77) for method ILCompiler.Reflection.ReadyToRun.NibbleReader:ReadInt():int:this
; ============================================================
Unwind Info:
@@ -46,7 +45,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-8.33%) : 132282.dasm - ILCompiler.Reflection.ReadyToRun.R2RSignatureDecoder`3[System.__Canon,System.__Canon,System.__Canon]:ReadInt():int:this@@ -26,16 +26,15 @@ G_M61048_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
lsr w1, w0, #1
- neg w2, w1
tst w0, #1
- csel w0, w1, w2, eq
- ;; size=32 bbWeight=1 PerfScore 7.50
+ csneg w0, w1, w1, eq
+ ;; size=28 bbWeight=1 PerfScore 7.00
G_M61048_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 15.80, instruction count 12, allocated bytes for code 48 (MethodHash=9cc31187) for method ILCompiler.Reflection.ReadyToRun.R2RSignatureDecoder`3[System.__Canon,System.__Canon,System.__Canon]:ReadInt():int:this
+; Total bytes of code 44, prolog size 8, PerfScore 14.90, instruction count 11, allocated bytes for code 44 (MethodHash=9cc31187) for method ILCompiler.Reflection.ReadyToRun.R2RSignatureDecoder`3[System.__Canon,System.__Canon,System.__Canon]:ReadInt():int:this
; ============================================================
Unwind Info:
@@ -46,7 +45,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.16%) : 13679.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:RewriteDecimalConstant(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression@@ -321,9 +321,8 @@ G_M16265_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C80
; GC ptr vars -{V46}
ldr w20, [fp, #0x38] // [V08 loc4]
ldrb w0, [fp, #0x48] // [V06 loc2]
- neg x11, x20
cmp w0, #0
- csel x20, x20, x11, eq
+ csneg x20, x20, x20, eq
mov x0, x23
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -487,7 +486,7 @@ G_M16265_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C80
mov x19, x20
; gcrRegs +[x19]
b G_M16265_IG11
- ;; size=492 bbWeight=0.50 PerfScore 69.25
+ ;; size=488 bbWeight=0.50 PerfScore 69.00
G_M16265_IG09: ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] +[x22-x23]
mov x0, x23
@@ -992,7 +991,7 @@ G_M16265_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2476, prolog size 40, PerfScore 624.60, instruction count 619, allocated bytes for code 2476 (MethodHash=854ec076) for method Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:RewriteDecimalConstant(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression
+; Total bytes of code 2472, prolog size 40, PerfScore 623.95, instruction count 618, allocated bytes for code 2472 (MethodHash=854ec076) for method Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:RewriteDecimalConstant(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression
; ============================================================
Unwind Info:
@@ -1003,7 +1002,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 619 (0x0026b) Actual length = 2476 (0x0009ac)
+ Function Length : 618 (0x0026a) Actual length = 2472 (0x0009a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.15%) : 51107.dasm - System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool@@ -847,9 +847,8 @@ G_M17110_IG95: ; bbWeight=4, gcrefRegs=1400000 {x22 x24}, byrefRegs=90000
bls G_M17110_IG86
;; size=16 bbWeight=4 PerfScore 10.00
G_M17110_IG96: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=900000 {x20 x23}, byref
- neg w0, w1
cmp w25, #0
- csel w1, w1, w0, eq
+ csneg w1, w1, w1, eq
add x0, x20, #4
; byrRegs +[x0]
ldr w11, [x0]
@@ -859,7 +858,7 @@ G_M17110_IG96: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=90
mov x3, x27
ldr w8, [fp, #0x14] // [V16 loc11]
b G_M17110_IG100
- ;; size=44 bbWeight=0.50 PerfScore 5.25
+ ;; size=40 bbWeight=0.50 PerfScore 5.00
G_M17110_IG97: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=900000 {x20 x23}, byref, isz
; byrRegs -[x0]
mov x27, x26
@@ -1112,7 +1111,7 @@ G_M17110_IG126: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2652, prolog size 48, PerfScore 1400.45, instruction count 663, allocated bytes for code 2652 (MethodHash=af22bd29) for method System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool
+; Total bytes of code 2648, prolog size 48, PerfScore 1399.80, instruction count 662, allocated bytes for code 2648 (MethodHash=af22bd29) for method System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool
; ============================================================
Unwind Info:
@@ -1123,7 +1122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 663 (0x00297) Actual length = 2652 (0x000a5c)
+ Function Length : 662 (0x00296) Actual length = 2648 (0x000a58)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.12%) : 174372.dasm - System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool@@ -1148,9 +1148,8 @@ G_M35017_IG108: ; bbWeight=4, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400
cbnz w0, G_M35017_IG98
;; size=32 bbWeight=4 PerfScore 38.00
G_M35017_IG109: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400000 {x22 x25}, byref
- neg w0, w23
cmp w28, #0
- csel w23, w23, w0, eq
+ csneg w23, w23, w23, eq
add x0, x22, #4
; byrRegs +[x0]
ldr w11, [x0]
@@ -1159,7 +1158,7 @@ G_M35017_IG109: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2
ldr w3, [fp, #0xA4] // [V16 loc9]
ldr x23, [fp, #0xA8] // [V15 loc8]
b G_M35017_IG113
- ;; size=40 bbWeight=0.50 PerfScore 5.75
+ ;; size=36 bbWeight=0.50 PerfScore 5.50
G_M35017_IG110: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400000 {x22 x25}, byref, isz
; byrRegs -[x0]
cmp x23, x19
@@ -1377,7 +1376,7 @@ G_M35017_IG137: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-; Total bytes of code 3204, prolog size 76, PerfScore 1748.65, instruction count 801, allocated bytes for code 3204 (MethodHash=500a7736) for method System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool
+; Total bytes of code 3200, prolog size 76, PerfScore 1748.00, instruction count 800, allocated bytes for code 3200 (MethodHash=500a7736) for method System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool
; ============================================================
Unwind Info:
@@ -1388,7 +1387,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 801 (0x00321) Actual length = 3204 (0x000c84)
+ Function Length : 800 (0x00320) Actual length = 3200 (0x000c80)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.linux.arm64.checked.mch-8 (-2.70%) : 64375.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int@@ -65,10 +65,9 @@ G_M9821_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cbz x0, G_M9821_IG07
;; size=16 bbWeight=1 PerfScore 3.00
G_M9821_IG04: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg w2, w3
cmp x0, x4
- csel w3, w3, w2, ls
- ;; size=12 bbWeight=0.61 PerfScore 0.92
+ csneg w3, w3, w3, ls
+ ;; size=8 bbWeight=0.61 PerfScore 0.61
G_M9821_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50
@@ -135,11 +134,10 @@ G_M9821_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
b G_M9821_IG03
;; size=24 bbWeight=0 PerfScore 0.00
G_M9821_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg w0, w3
cmp w7, w5
- csel w3, w3, w0, ls
+ csneg w3, w3, w3, ls
mov w0, w3
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M9821_IG15: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -150,7 +148,7 @@ G_M9821_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 296, prolog size 8, PerfScore 59.10, instruction count 74, allocated bytes for code 296 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int
+; Total bytes of code 288, prolog size 8, PerfScore 57.99, instruction count 72, allocated bytes for code 288 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int
; ============================================================
Unwind Info:
@@ -161,7 +159,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 72 (0x00048) Actual length = 288 (0x000120)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.96%) : 48329.dasm - ByteMark:abs_randwc(int):int@@ -81,10 +81,9 @@ G_M19686_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x4]
sdiv w1, w3, w0
msub w0, w1, w0, w3
- neg w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
- ;; size=20 bbWeight=1 PerfScore 14.50
+ csneg w0, w0, w0, ge
+ ;; size=16 bbWeight=1 PerfScore 14.00
G_M19686_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -100,7 +99,7 @@ G_M19686_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 8, PerfScore 78.40, instruction count 51, allocated bytes for code 204 (MethodHash=b7adb319) for method ByteMark:abs_randwc(int):int
+; Total bytes of code 200, prolog size 8, PerfScore 77.50, instruction count 50, allocated bytes for code 200 (MethodHash=b7adb319) for method ByteMark:abs_randwc(int):int
; ============================================================
Unwind Info:
@@ -111,7 +110,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)
-4 (-1.35%) : 102424.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int@@ -131,11 +131,10 @@ G_M9821_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
b G_M9821_IG03
;; size=24 bbWeight=0 PerfScore 0.00
G_M9821_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg w0, w3
cmp w7, w5
- csel w3, w3, w0, ls
+ csneg w3, w3, w3, ls
mov w0, w3
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M9821_IG14: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -150,7 +149,7 @@ G_M9821_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 296, prolog size 8, PerfScore 6968384.10, instruction count 74, allocated bytes for code 296 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int
+; Total bytes of code 292, prolog size 8, PerfScore 6968383.70, instruction count 73, allocated bytes for code 292 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int
; ============================================================
Unwind Info:
@@ -161,7 +160,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.48%) : 93646.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -124,9 +124,8 @@ G_M58385_IG05: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.25
G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ csinv w0, w0, w0, ge
ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -137,7 +136,7 @@ G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG07
cmp w0, #1
bvs G_M58385_IG26
- ;; size=48 bbWeight=1 PerfScore 12.50
+ ;; size=44 bbWeight=1 PerfScore 12.00
G_M58385_IG07: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -397,7 +396,7 @@ G_M58385_IG32: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 832, prolog size 40, PerfScore 393.86, instruction count 208, allocated bytes for code 832 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 828, prolog size 40, PerfScore 392.96, instruction count 207, allocated bytes for code 828 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -408,7 +407,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 208 (0x000d0) Actual length = 832 (0x000340)
+ Function Length : 207 (0x000cf) Actual length = 828 (0x00033c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.48%) : 82456.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -124,9 +124,8 @@ G_M58385_IG05: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.25
G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ csinv w0, w0, w0, ge
ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -137,7 +136,7 @@ G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG07
cmp w0, #1
bvs G_M58385_IG26
- ;; size=48 bbWeight=1 PerfScore 12.50
+ ;; size=44 bbWeight=1 PerfScore 12.00
G_M58385_IG07: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -397,7 +396,7 @@ G_M58385_IG32: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 832, prolog size 40, PerfScore 393.86, instruction count 208, allocated bytes for code 832 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 828, prolog size 40, PerfScore 392.96, instruction count 207, allocated bytes for code 828 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -408,7 +407,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 208 (0x000d0) Actual length = 832 (0x000340)
+ Function Length : 207 (0x000cf) Actual length = 828 (0x00033c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.48%) : 56859.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -124,9 +124,8 @@ G_M58385_IG05: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.25
G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ csinv w0, w0, w0, ge
ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -137,7 +136,7 @@ G_M58385_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG07
cmp w0, #1
bvs G_M58385_IG29
- ;; size=48 bbWeight=1 PerfScore 12.50
+ ;; size=44 bbWeight=1 PerfScore 12.00
G_M58385_IG07: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -405,7 +404,7 @@ G_M58385_IG35: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 836, prolog size 40, PerfScore 425.05, instruction count 209, allocated bytes for code 836 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 832, prolog size 40, PerfScore 424.15, instruction count 208, allocated bytes for code 832 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -416,7 +415,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 209 (0x000d1) Actual length = 836 (0x000344)
+ Function Length : 208 (0x000d0) Actual length = 832 (0x000340)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.linux.arm64.checked.mch-4 (-7.69%) : 157476.dasm - ILCompiler.Reflection.ReadyToRun.NibbleReader:ReadInt():int:this@@ -26,16 +26,15 @@ G_M34184_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
lsr w1, w0, #1
- neg w2, w1
tst w0, #1
- csel w0, w2, w1, ne
- ;; size=36 bbWeight=1 PerfScore 8.00
+ csneg w0, w1, w1, eq
+ ;; size=32 bbWeight=1 PerfScore 7.50
G_M34184_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 16.70, instruction count 13, allocated bytes for code 52 (MethodHash=954a7a77) for method ILCompiler.Reflection.ReadyToRun.NibbleReader:ReadInt():int:this
+; Total bytes of code 48, prolog size 8, PerfScore 15.80, instruction count 12, allocated bytes for code 48 (MethodHash=954a7a77) for method ILCompiler.Reflection.ReadyToRun.NibbleReader:ReadInt():int:this
; ============================================================
Unwind Info:
@@ -46,7 +45,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-5.26%) : 201926.dasm - System.Numerics.BigInteger:System.Numerics.INumberBase.TryConvertToTruncating[ubyte](System.Numerics.BigInteger,byref):bool@@ -76,12 +76,11 @@ G_M48139_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2},
bls G_M48139_IG07
ldr w0, [x0, #0x10]
; gcrRegs -[x0]
- neg w3, w0
cmp w1, #0
- csel w0, w0, w3, ge
+ csneg w0, w0, w0, ge
uxtb w0, w0
b G_M48139_IG05
- ;; size=36 bbWeight=0.50 PerfScore 5.25
+ ;; size=32 bbWeight=0.50 PerfScore 5.00
G_M48139_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
uxtb w0, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -99,7 +98,7 @@ G_M48139_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 19.10, instruction count 19, allocated bytes for code 76 (MethodHash=af8b43f4) for method System.Numerics.BigInteger:System.Numerics.INumberBase<System.Numerics.BigInteger>.TryConvertToTruncating[ubyte](System.Numerics.BigInteger,byref):bool
+; Total bytes of code 72, prolog size 8, PerfScore 18.45, instruction count 18, allocated bytes for code 72 (MethodHash=af8b43f4) for method System.Numerics.BigInteger:System.Numerics.INumberBase<System.Numerics.BigInteger>.TryConvertToTruncating[ubyte](System.Numerics.BigInteger,byref):bool
; ============================================================
Unwind Info:
@@ -110,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-3.23%) : 17924.dasm - System.Data.SqlTypes.SqlDecimal:.ctor(int):this@@ -32,10 +32,9 @@ G_M20785_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
orr w2, w2, #2
strb w2, [x19]
mov w2, #0xD1FFAB1E
- neg w1, w1
cmp w0, w2
- csel w0, w0, w1, eq
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ csneg w0, w0, w1, eq
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M20785_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
str w0, [x19, #0x04]
str xzr, [x19, #0x0C]
@@ -57,7 +56,7 @@ G_M20785_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 124, prolog size 12, PerfScore 40.65, instruction count 31, allocated bytes for code 124 (MethodHash=e7e2aece) for method System.Data.SqlTypes.SqlDecimal:.ctor(int):this
+; Total bytes of code 120, prolog size 12, PerfScore 40.00, instruction count 30, allocated bytes for code 120 (MethodHash=e7e2aece) for method System.Data.SqlTypes.SqlDecimal:.ctor(int):this
; ============================================================
Unwind Info:
@@ -68,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.41%) : 178352.dasm - Newtonsoft.Json.JsonTextWriter:WriteValueAsync(System.Nullable`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.Task:this@@ -140,13 +140,12 @@ G_M60557_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
uxtb w0, w1
mov w21, w0
lsr x22, x21, #63
- neg x0, x21
cmp w22, #0
- csel x21, x21, x0, eq
+ csneg x21, x21, x21, eq
mov x0, x20
; gcrRegs +[x0]
cbz x0, G_M60557_IG12
- ;; size=48 bbWeight=0.50 PerfScore 5.25
+ ;; size=44 bbWeight=0.50 PerfScore 5.00
G_M60557_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr w0, [x20, #0x20]
@@ -468,7 +467,7 @@ G_M60557_IG40: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M60557_IG27
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 968, prolog size 20, PerfScore 244.30, instruction count 242, allocated bytes for code 968 (MethodHash=59cd1372) for method Newtonsoft.Json.JsonTextWriter:WriteValueAsync(System.Nullable`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.Task:this
+; Total bytes of code 964, prolog size 20, PerfScore 243.65, instruction count 241, allocated bytes for code 964 (MethodHash=59cd1372) for method Newtonsoft.Json.JsonTextWriter:WriteValueAsync(System.Nullable`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.Task:this
; ============================================================
Unwind Info:
@@ -479,7 +478,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 242 (0x000f2) Actual length = 968 (0x0003c8)
+ Function Length : 241 (0x000f1) Actual length = 964 (0x0003c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.16%) : 29427.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:RewriteDecimalConstant(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression@@ -389,9 +389,8 @@ G_M16265_IG10: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
; GC ptr vars -{V54}
ldr w20, [fp, #0x38] // [V08 loc4]
ldrb w0, [fp, #0x48] // [V06 loc2]
- neg x1, x20
cmp w0, #0
- csel x20, x20, x1, eq
+ csneg x20, x20, x20, eq
mov x0, x23
; gcrRegs +[x0]
mov w1, #23
@@ -404,7 +403,7 @@ G_M16265_IG10: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
mov x21, x1
; gcrRegs +[x21]
cbz x21, G_M16265_IG13
- ;; size=56 bbWeight=0.50 PerfScore 9.25
+ ;; size=52 bbWeight=0.50 PerfScore 9.00
G_M16265_IG11: ; bbWeight=0.25, gcrefRegs=E80002 {x1 x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x21]
@@ -1147,7 +1146,7 @@ G_M16265_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2472, prolog size 44, PerfScore 622.45, instruction count 618, allocated bytes for code 2472 (MethodHash=854ec076) for method Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:RewriteDecimalConstant(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression
+; Total bytes of code 2468, prolog size 44, PerfScore 621.80, instruction count 617, allocated bytes for code 2468 (MethodHash=854ec076) for method Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:RewriteDecimalConstant(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression
; ============================================================
Unwind Info:
@@ -1158,7 +1157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 618 (0x0026a) Actual length = 2472 (0x0009a8)
+ Function Length : 617 (0x00269) Actual length = 2468 (0x0009a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.12%) : 201632.dasm - System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool@@ -1153,9 +1153,8 @@ G_M35017_IG115: ; bbWeight=4, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400
bls G_M35017_IG103
;; size=20 bbWeight=4 PerfScore 12.00
G_M35017_IG116: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400000 {x22 x25}, byref
- neg w1, w0
cmp w28, #0
- csel w0, w0, w1, eq
+ csneg w0, w0, w0, eq
add x1, x22, #4
; byrRegs +[x1]
ldr w2, [x1]
@@ -1164,7 +1163,7 @@ G_M35017_IG116: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2
mov x8, x23
mov w9, w3
b G_M35017_IG120
- ;; size=40 bbWeight=0.50 PerfScore 4.25
+ ;; size=36 bbWeight=0.50 PerfScore 4.00
G_M35017_IG117: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400000 {x22 x25}, byref, isz
; byrRegs -[x1]
cmp x23, x19
@@ -1433,7 +1432,7 @@ G_M35017_IG149: ; bbWeight=0, gcrefRegs=4A01000 {x12 x21 x23 x26}, byrefR
b G_M35017_IG85
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3264, prolog size 76, PerfScore 1653.15, instruction count 816, allocated bytes for code 3264 (MethodHash=500a7736) for method System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool
+; Total bytes of code 3260, prolog size 76, PerfScore 1652.50, instruction count 815, allocated bytes for code 3260 (MethodHash=500a7736) for method System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool
; ============================================================
Unwind Info:
@@ -1444,7 +1443,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 816 (0x00330) Actual length = 3264 (0x000cc0)
+ Function Length : 815 (0x0032f) Actual length = 3260 (0x000cbc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run.linux.arm64.checked.mch-8 (-2.50%) : 9874.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int@@ -124,11 +124,10 @@ G_M9821_IG11: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
G_M9821_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sub w0, w5, w1
cbz w0, G_M9821_IG15
- neg w6, w3
cmp w0, w5
- csel w3, w3, w6, ls
+ csneg w3, w3, w3, ls
mov w0, w3
- ;; size=24 bbWeight=0.50 PerfScore 1.75
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
G_M9821_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -144,10 +143,9 @@ G_M9821_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
b G_M9821_IG17
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M9821_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg w1, w3
cmp x0, x7
- csel w3, w3, w1, ls
- ;; size=12 bbWeight=0.50 PerfScore 0.75
+ csneg w3, w3, w3, ls
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M9821_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -161,7 +159,7 @@ G_M9821_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 320, prolog size 8, PerfScore 184.75, instruction count 80, allocated bytes for code 320 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int
+; Total bytes of code 312, prolog size 8, PerfScore 183.45, instruction count 78, allocated bytes for code 312 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int
; ============================================================
Unwind Info:
@@ -172,7 +170,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.30%) : 333.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -69,9 +69,8 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ csinv w0, w0, w0, ge
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w23, [x22, #0x08]
@@ -82,7 +81,7 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
bne G_M33817_IG06
cmp w0, #1
bvs G_M33817_IG13
- ;; size=76 bbWeight=0.50 PerfScore 9.50
+ ;; size=72 bbWeight=0.50 PerfScore 9.25
G_M33817_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w24, w1, w2, w0
@@ -160,7 +159,7 @@ G_M33817_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 308, prolog size 24, PerfScore 164.55, instruction count 77, allocated bytes for code 308 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 304, prolog size 24, PerfScore 163.90, instruction count 76, allocated bytes for code 304 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -171,7 +170,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.25%) : 33699.dasm - V8.Crypto.BigInteger:invDigit():int:this@@ -111,10 +111,9 @@ G_M64469_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
sdiv w3, w0, w1
msub w0, w3, w1, w0
sub w1, w2, w0
- neg w2, w0
cmp w0, #0
- csel w0, w1, w2, gt
- ;; size=24 bbWeight=0.50 PerfScore 7.50
+ csneg w0, w1, w0, gt
+ ;; size=20 bbWeight=0.50 PerfScore 7.25
G_M64469_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -138,7 +137,7 @@ G_M64469_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 320, prolog size 8, PerfScore 85.00, instruction count 80, allocated bytes for code 320 (MethodHash=c0e4042a) for method V8.Crypto.BigInteger:invDigit():int:this
+; Total bytes of code 316, prolog size 8, PerfScore 84.35, instruction count 79, allocated bytes for code 316 (MethodHash=c0e4042a) for method V8.Crypto.BigInteger:invDigit():int:this
; ============================================================
Unwind Info:
@@ -149,7 +148,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.50%) : 5081.dasm - System.Numerics.BigInteger:op_Modulus(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger@@ -206,10 +206,9 @@ G_M63534_IG09: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x21]
; byrRegs -[x0]
mov w1, w0
- neg x1, x1
mov w0, w0
cmp w20, #0
- csel x1, x1, x0, lt
+ csneg x1, x0, x1, ge
stp xzr, xzr, [fp, #-0x70]
sub x0, fp, #112 // [V28 tmp17]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -217,7 +216,7 @@ G_M63534_IG09: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ;; size=96 bbWeight=0.50 PerfScore 11.00
+ ;; size=92 bbWeight=0.50 PerfScore 10.75
G_M63534_IG10: ; bbWeight=0.50, nogc, extend
ldp x0, x1, [fp, #-0x70]
stp x0, x1, [fp, #-0x80]
@@ -401,7 +400,7 @@ G_M63534_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 796, prolog size 64, PerfScore 190.35, instruction count 199, allocated bytes for code 796 (MethodHash=6cb107d1) for method System.Numerics.BigInteger:op_Modulus(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
+; Total bytes of code 792, prolog size 64, PerfScore 189.70, instruction count 198, allocated bytes for code 792 (MethodHash=6cb107d1) for method System.Numerics.BigInteger:op_Modulus(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
; ============================================================
Unwind Info:
@@ -412,7 +411,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 199 (0x000c7) Actual length = 796 (0x00031c)
+ Function Length : 198 (0x000c6) Actual length = 792 (0x000318)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.16%) : 2090.dasm - System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool@@ -761,9 +761,8 @@ G_M17110_IG79: ; bbWeight=4, gcrefRegs=1400000 {x22 x24}, byrefRegs=90000
bls G_M17110_IG70
;; size=16 bbWeight=4 PerfScore 10.00
G_M17110_IG80: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=900000 {x20 x23}, byref
- neg w1, w0
cmp w25, #0
- csel w0, w0, w1, eq
+ csneg w0, w0, w0, eq
add x1, x20, #4
; byrRegs +[x1]
ldr w2, [x1]
@@ -773,7 +772,7 @@ G_M17110_IG80: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=90
mov x3, x27
ldr w8, [fp, #0x14] // [V16 loc11]
b G_M17110_IG84
- ;; size=44 bbWeight=0.50 PerfScore 5.25
+ ;; size=40 bbWeight=0.50 PerfScore 5.00
G_M17110_IG81: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=900000 {x20 x23}, byref, isz
; byrRegs -[x1]
mov x27, x26
@@ -1017,7 +1016,7 @@ G_M17110_IG109: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2572, prolog size 48, PerfScore 1392.70, instruction count 643, allocated bytes for code 2572 (MethodHash=af22bd29) for method System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool
+; Total bytes of code 2568, prolog size 48, PerfScore 1392.05, instruction count 642, allocated bytes for code 2568 (MethodHash=af22bd29) for method System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool
; ============================================================
Unwind Info:
@@ -1028,7 +1027,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 643 (0x00283) Actual length = 2572 (0x000a0c)
+ Function Length : 642 (0x00282) Actual length = 2568 (0x000a08)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.13%) : 2686.dasm - System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool@@ -1152,9 +1152,8 @@ G_M35017_IG114: ; bbWeight=4, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400
bls G_M35017_IG102
;; size=20 bbWeight=4 PerfScore 12.00
G_M35017_IG115: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400000 {x22 x25}, byref
- neg w1, w0
cmp w28, #0
- csel w0, w0, w1, eq
+ csneg w0, w0, w0, eq
add x1, x22, #4
; byrRegs +[x1]
ldr w2, [x1]
@@ -1163,7 +1162,7 @@ G_M35017_IG115: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2
mov x8, x23
mov w9, w3
b G_M35017_IG119
- ;; size=40 bbWeight=0.50 PerfScore 4.25
+ ;; size=36 bbWeight=0.50 PerfScore 4.00
G_M35017_IG116: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400000 {x22 x25}, byref, isz
; byrRegs -[x1]
cmp x23, x19
@@ -1396,7 +1395,7 @@ G_M35017_IG145: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-; Total bytes of code 3176, prolog size 76, PerfScore 1639.85, instruction count 794, allocated bytes for code 3176 (MethodHash=500a7736) for method System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool
+; Total bytes of code 3172, prolog size 76, PerfScore 1639.20, instruction count 793, allocated bytes for code 3172 (MethodHash=500a7736) for method System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool
; ============================================================
Unwind Info:
@@ -1407,7 +1406,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 794 (0x0031a) Actual length = 3176 (0x000c68)
+ Function Length : 793 (0x00319) Actual length = 3172 (0x000c64)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.linux.arm64.checked.mch-4 (-3.70%) : 32971.dasm - ByteMark:abs_randwc(int):int@@ -38,10 +38,9 @@ G_M19686_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M19686_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sdiv w1, w0, w19
msub w0, w1, w19, w0
- neg w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
- ;; size=20 bbWeight=1 PerfScore 14.50
+ csneg w0, w0, w0, ge
+ ;; size=16 bbWeight=1 PerfScore 14.00
G_M19686_IG04: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -55,7 +54,7 @@ G_M19686_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 108, prolog size 12, PerfScore 42.80, instruction count 27, allocated bytes for code 108 (MethodHash=b7adb319) for method ByteMark:abs_randwc(int):int
+; Total bytes of code 104, prolog size 12, PerfScore 41.90, instruction count 26, allocated bytes for code 104 (MethodHash=b7adb319) for method ByteMark:abs_randwc(int):int
; ============================================================
Unwind Info:
@@ -66,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.50%) : 53106.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int@@ -125,11 +125,10 @@ G_M9821_IG11: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
G_M9821_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sub w0, w5, w1
cbz w0, G_M9821_IG15
- neg w6, w3
cmp w0, w5
- csel w3, w3, w6, ls
+ csneg w3, w3, w3, ls
mov w0, w3
- ;; size=24 bbWeight=0.50 PerfScore 1.75
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
G_M9821_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -145,10 +144,9 @@ G_M9821_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
b G_M9821_IG17
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M9821_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg w1, w3
cmp x0, x7
- csel w3, w3, w1, ls
- ;; size=12 bbWeight=0.50 PerfScore 0.75
+ csneg w3, w3, w3, ls
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M9821_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -162,7 +160,7 @@ G_M9821_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 320, prolog size 8, PerfScore 184.75, instruction count 80, allocated bytes for code 320 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int
+; Total bytes of code 312, prolog size 8, PerfScore 183.45, instruction count 78, allocated bytes for code 312 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int
; ============================================================
Unwind Info:
@@ -173,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.30%) : 4266.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this@@ -70,9 +70,8 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w2, w0
cmp w0, #0
- csel w0, w0, w2, ge
+ csinv w0, w0, w0, ge
ldr x22, [x21, #0x08]
; gcrRegs +[x22]
ldr w23, [x22, #0x08]
@@ -83,7 +82,7 @@ G_M33817_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
bne G_M33817_IG06
cmp w0, #1
bvs G_M33817_IG13
- ;; size=76 bbWeight=0.50 PerfScore 9.50
+ ;; size=72 bbWeight=0.50 PerfScore 9.25
G_M33817_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
sdiv w1, w0, w2
msub w24, w1, w2, w0
@@ -161,7 +160,7 @@ G_M33817_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 308, prolog size 24, PerfScore 164.55, instruction count 77, allocated bytes for code 308 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 304, prolog size 24, PerfScore 163.90, instruction count 76, allocated bytes for code 304 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
Unwind Info:
@@ -172,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.00%) : 4331.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this@@ -77,9 +77,8 @@ G_M58385_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
+ csinv w0, w0, w0, ge
ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x08]
@@ -90,7 +89,7 @@ G_M58385_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
bne G_M58385_IG06
cmp w0, #1
bvs G_M58385_IG15
- ;; size=72 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 18.00
G_M58385_IG06: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sdiv w2, w0, w1
msub w25, w2, w1, w0
@@ -191,7 +190,7 @@ G_M58385_IG17: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 28, PerfScore 249.95, instruction count 100, allocated bytes for code 400 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
+; Total bytes of code 396, prolog size 28, PerfScore 249.05, instruction count 99, allocated bytes for code 396 (MethodHash=6ea11bee) for method System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this
; ============================================================
Unwind Info:
@@ -202,7 +201,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.16%) : 32870.dasm - System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool@@ -762,9 +762,8 @@ G_M17110_IG79: ; bbWeight=4, gcrefRegs=1400000 {x22 x24}, byrefRegs=90000
bls G_M17110_IG70
;; size=16 bbWeight=4 PerfScore 10.00
G_M17110_IG80: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=900000 {x20 x23}, byref
- neg w1, w0
cmp w25, #0
- csel w0, w0, w1, eq
+ csneg w0, w0, w0, eq
add x1, x20, #4
; byrRegs +[x1]
ldr w2, [x1]
@@ -774,7 +773,7 @@ G_M17110_IG80: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=90
mov x3, x27
ldr w8, [fp, #0x14] // [V16 loc11]
b G_M17110_IG84
- ;; size=44 bbWeight=0.50 PerfScore 5.25
+ ;; size=40 bbWeight=0.50 PerfScore 5.00
G_M17110_IG81: ; bbWeight=0.50, gcrefRegs=1400000 {x22 x24}, byrefRegs=900000 {x20 x23}, byref, isz
; byrRegs -[x1]
mov x27, x26
@@ -1018,7 +1017,7 @@ G_M17110_IG109: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2572, prolog size 48, PerfScore 1392.70, instruction count 643, allocated bytes for code 2572 (MethodHash=af22bd29) for method System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool
+; Total bytes of code 2568, prolog size 48, PerfScore 1392.05, instruction count 642, allocated bytes for code 2568 (MethodHash=af22bd29) for method System.Number:TryParseNumber(byref,ulong,int,byref,System.Globalization.NumberFormatInfo):bool
; ============================================================
Unwind Info:
@@ -1029,7 +1028,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 643 (0x00283) Actual length = 2572 (0x000a0c)
+ Function Length : 642 (0x00282) Actual length = 2568 (0x000a08)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.13%) : 26294.dasm - System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool@@ -1153,9 +1153,8 @@ G_M35017_IG114: ; bbWeight=4, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400
bls G_M35017_IG102
;; size=20 bbWeight=4 PerfScore 12.00
G_M35017_IG115: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400000 {x22 x25}, byref
- neg w1, w0
cmp w28, #0
- csel w0, w0, w1, eq
+ csneg w0, w0, w0, eq
add x1, x22, #4
; byrRegs +[x1]
ldr w2, [x1]
@@ -1164,7 +1163,7 @@ G_M35017_IG115: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2
mov x8, x23
mov w9, w3
b G_M35017_IG119
- ;; size=40 bbWeight=0.50 PerfScore 4.25
+ ;; size=36 bbWeight=0.50 PerfScore 4.00
G_M35017_IG116: ; bbWeight=0.50, gcrefRegs=4200000 {x21 x26}, byrefRegs=2400000 {x22 x25}, byref, isz
; byrRegs -[x1]
cmp x23, x19
@@ -1397,7 +1396,7 @@ G_M35017_IG145: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-; Total bytes of code 3176, prolog size 76, PerfScore 1639.85, instruction count 794, allocated bytes for code 3176 (MethodHash=500a7736) for method System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool
+; Total bytes of code 3172, prolog size 76, PerfScore 1639.20, instruction count 793, allocated bytes for code 3172 (MethodHash=500a7736) for method System.Globalization.FormatProvider+Number:ParseNumber(byref,ulong,int,byref,System.Text.StringBuilder,System.Globalization.NumberFormatInfo,bool):bool
; ============================================================
Unwind Info:
@@ -1408,7 +1407,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 794 (0x0031a) Actual length = 3176 (0x000c68)
+ Function Length : 793 (0x00319) Actual length = 3172 (0x000c64)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.pmi.linux.arm64.checked.mch-4 (-12.50%) : 203467.dasm - System.Linq.Parallel.Tests.SumTests+<>c:b__4_10(int):int:this@@ -18,16 +18,15 @@ G_M55964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M55964_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
- neg w2, w1
cmp w1, #0
- csel w0, w0, w2, eq
- ;; size=16 bbWeight=1 PerfScore 2.00
+ csneg w0, w0, w1, eq
+ ;; size=12 bbWeight=1 PerfScore 1.50
G_M55964_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 32, prolog size 8, PerfScore 8.70, instruction count 8, allocated bytes for code 32 (MethodHash=58872563) for method System.Linq.Parallel.Tests.SumTests+<>c:<Sum_Int_Overflow>b__4_10(int):int:this
+; Total bytes of code 28, prolog size 8, PerfScore 7.80, instruction count 7, allocated bytes for code 28 (MethodHash=58872563) for method System.Linq.Parallel.Tests.SumTests+<>c:<Sum_Int_Overflow>b__4_10(int):int:this
; ============================================================
Unwind Info:
@@ -38,7 +37,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 7 (0x00007) Actual length = 28 (0x00001c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-12.50%) : 155889.dasm - System.Index:get_Value():int:this@@ -20,16 +20,15 @@ G_M18211_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; byrRegs +[x0]
ldr w0, [x0]
; byrRegs -[x0]
- mvn w1, w0
cmp w0, #0
- csel w0, w0, w1, ge
- ;; size=16 bbWeight=1 PerfScore 4.50
+ csinv w0, w0, w0, ge
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M18211_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 32, prolog size 8, PerfScore 11.20, instruction count 8, allocated bytes for code 32 (MethodHash=5541b8dc) for method System.Index:get_Value():int:this
+; Total bytes of code 28, prolog size 8, PerfScore 10.30, instruction count 7, allocated bytes for code 28 (MethodHash=5541b8dc) for method System.Index:get_Value():int:this
; ============================================================
Unwind Info:
@@ -40,7 +39,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 7 (0x00007) Actual length = 28 (0x00001c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-6.25%) : 259955.dasm - FluentAssertions.NumericAssertionsExtensions:GetMinValue(long,ulong):long@@ -24,11 +24,10 @@ G_M848_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, i
G_M848_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x2, #0xD1FFAB1E
sub x1, x1, x0
- neg x1, x1
cmp x0, #0
- csel x1, x2, x1, lt
+ csneg x1, x2, x1, lt
b G_M848_IG05
- ;; size=24 bbWeight=0.50 PerfScore 1.75
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
G_M848_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x1, x0, x1
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -43,7 +42,7 @@ G_M848_IG06: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 64, prolog size 8, PerfScore 14.90, instruction count 16, allocated bytes for code 64 (MethodHash=854efcaf) for method FluentAssertions.NumericAssertionsExtensions:GetMinValue(long,ulong):long
+; Total bytes of code 60, prolog size 8, PerfScore 14.25, instruction count 15, allocated bytes for code 60 (MethodHash=854efcaf) for method FluentAssertions.NumericAssertionsExtensions:GetMinValue(long,ulong):long
; ============================================================
Unwind Info:
@@ -54,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.41%) : 235069.dasm - System.Numerics.Tests.BigIntegerTests_GenericMath:TryConvertToTruncatingUInt16Test()@@ -113,12 +113,11 @@ G_M7785_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, by
bls G_M7785_IG10
ldr w1, [x1, #0x10]
; gcrRegs -[x1]
- neg w2, w1
cmp w0, #0
- csel w1, w1, w2, ge
+ csneg w1, w1, w1, ge
uxth w20, w1
b G_M7785_IG06
- ;; size=36 bbWeight=0.50 PerfScore 5.25
+ ;; size=32 bbWeight=0.50 PerfScore 5.00
G_M7785_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
uxth w20, w0
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -462,7 +461,7 @@ G_M7785_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 972, prolog size 32, PerfScore 314.20, instruction count 243, allocated bytes for code 972 (MethodHash=742ce196) for method System.Numerics.Tests.BigIntegerTests_GenericMath:TryConvertToTruncatingUInt16Test()
+; Total bytes of code 968, prolog size 32, PerfScore 313.55, instruction count 242, allocated bytes for code 968 (MethodHash=742ce196) for method System.Numerics.Tests.BigIntegerTests_GenericMath:TryConvertToTruncatingUInt16Test()
; ============================================================
Unwind Info:
@@ -473,7 +472,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 243 (0x000f3) Actual length = 972 (0x0003cc)
+ Function Length : 242 (0x000f2) Actual length = 968 (0x0003c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.36%) : 234302.dasm - System.Numerics.Tests.ToStringTest:GeneralFormatter(System.String,int,System.Globalization.NumberFormatInfo):System.String@@ -131,9 +131,8 @@ G_M57438_IG07: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
sub w0, w20, #1
cmp w20, #0
csel w1, wzr, w0, eq
- neg w0, w1
cmp w23, #0
- csel w1, w1, w0, eq
+ csneg w1, w1, w1, eq
mov x0, x21
; gcrRegs +[x0]
mov x2, x19
@@ -210,7 +209,7 @@ G_M57438_IG07: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x1 x21]
mov x22, x0
; gcrRegs +[x22]
- ;; size=252 bbWeight=0.50 PerfScore 33.75
+ ;; size=248 bbWeight=0.50 PerfScore 33.50
G_M57438_IG08: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
sub w0, w20, #1
@@ -481,7 +480,7 @@ G_M57438_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1104, prolog size 20, PerfScore 412.65, instruction count 276, allocated bytes for code 1104 (MethodHash=ba1d1fa1) for method System.Numerics.Tests.ToStringTest:GeneralFormatter(System.String,int,System.Globalization.NumberFormatInfo):System.String
+; Total bytes of code 1100, prolog size 20, PerfScore 412.00, instruction count 275, allocated bytes for code 1100 (MethodHash=ba1d1fa1) for method System.Numerics.Tests.ToStringTest:GeneralFormatter(System.String,int,System.Globalization.NumberFormatInfo):System.String
; ============================================================
Unwind Info:
@@ -492,7 +491,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 276 (0x00114) Actual length = 1104 (0x000450)
+ Function Length : 275 (0x00113) Actual length = 1100 (0x00044c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 226195.dasm - CoreXml.Test.XLinq.InputSpace:Hamlet(byref,byref)No diffs found? coreclr_tests.run.linux.arm64.checked.mch-4 (-14.29%) : 96726.dasm - JIT.HardwareIntrinsics.Arm.Helpers:Abs(int):uint@@ -17,16 +17,15 @@ G_M24190_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M24190_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg w1, w0
cmp w0, #0
- csel w0, w1, w0, lt
- ;; size=12 bbWeight=1 PerfScore 1.50
+ csneg w0, w0, w0, ge
+ ;; size=8 bbWeight=1 PerfScore 1.00
G_M24190_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 28, prolog size 8, PerfScore 7.80, instruction count 7, allocated bytes for code 28 (MethodHash=8bbaa181) for method JIT.HardwareIntrinsics.Arm.Helpers:Abs(int):uint
+; Total bytes of code 24, prolog size 8, PerfScore 6.90, instruction count 6, allocated bytes for code 24 (MethodHash=8bbaa181) for method JIT.HardwareIntrinsics.Arm.Helpers:Abs(int):uint
; ============================================================
Unwind Info:
@@ -37,7 +36,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 7 (0x00007) Actual length = 28 (0x00001c)
+ Function Length : 6 (0x00006) Actual length = 24 (0x000018)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-14.29%) : 85975.dasm - JIT.HardwareIntrinsics.Arm.Helpers:Abs(long):ulong@@ -17,16 +17,15 @@ G_M22270_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M22270_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg x1, x0
cmp x0, #0
- csel x0, x1, x0, lt
- ;; size=12 bbWeight=1 PerfScore 1.50
+ csneg x0, x0, x0, ge
+ ;; size=8 bbWeight=1 PerfScore 1.00
G_M22270_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 28, prolog size 8, PerfScore 7.80, instruction count 7, allocated bytes for code 28 (MethodHash=5b1da901) for method JIT.HardwareIntrinsics.Arm.Helpers:Abs(long):ulong
+; Total bytes of code 24, prolog size 8, PerfScore 6.90, instruction count 6, allocated bytes for code 24 (MethodHash=5b1da901) for method JIT.HardwareIntrinsics.Arm.Helpers:Abs(long):ulong
; ============================================================
Unwind Info:
@@ -37,7 +36,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 7 (0x00007) Actual length = 28 (0x00001c)
+ Function Length : 6 (0x00006) Actual length = 24 (0x000018)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-6.67%) : 479458.dasm - ILGEN_0x1a8938c:Method_0x5f6dc3a1():int@@ -25,17 +25,16 @@ G_M32934_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk w1, #0xD1FFAB1E LSL #16
strh w1, [x0]
ldrh w0, [x0]
- mvn w1, w0
- movn w2, #7
+ movn w1, #7
cmp w0, #7
- csel w0, w1, w2, ne
- ;; size=44 bbWeight=1 PerfScore 8.50
+ csinv w0, w1, w0, eq
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M32934_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=dc427f59) for method ILGEN_0x1a8938c:Method_0x5f6dc3a1():int
+; Total bytes of code 56, prolog size 8, PerfScore 17.10, instruction count 14, allocated bytes for code 56 (MethodHash=dc427f59) for method ILGEN_0x1a8938c:Method_0x5f6dc3a1():int
; ============================================================
Unwind Info:
@@ -46,7 +45,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 196741.dasm - LargeFuncletFrame:.cctor()No diffs found? +0 (0.00%) : 484753.dasm - test:Main():intNo diffs found? +0 (0.00%) : 282904.dasm - test:Main():intNo diffs found? DetailsImprovements/regressions per collection
Context information
jit-analyze output |
The failures seems to be known issues and unrelated to the patch. |
GenTree* revCond = comp->gtReverseCond(cond); | ||
assert(cond == revCond); // Ensure `gtReverseCond` did not create a new node. | ||
} | ||
select->gtOp1 = cond->AsOp(); | ||
BlockRange().Remove(select->gtOp2, true); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The true case for if (select->OperIs(GT_SELECT))
is not being tested at the moment through tests or spmi replay. Not sure how can we have a coverage for this part.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, it's hard for the condition to interfere with the operands when we only do this optimization for constant operands. Interference between the condition and operands is what causes this case to occur.
If we generalized it to handle general SELECT(cond, x, ADD(y, 1))
then I think it would be easier to hit. But I don't think we need to worry about that as part of this PR.
@SwapnilGaikwad It looks like the tests are failing to compile now, can you push a fix? |
/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress, Fuzzlyn |
Azure Pipelines successfully started running 3 pipeline(s). |
The Fuzzlyn failure looks related: // Generated by Fuzzlyn v1.5 on 2023-05-23 18:03:39
// Run on Arm64 Linux
// Seed: 10523664445013849285
// Reduced from 114.3 KiB to 0.4 KiB in 00:02:06
// Hits JIT assert in Release:
// Assertion failed 'op2 == nullptr || !op2->isContained() || op2->IsIntegralConst(0)' in 'Program:Main(Fuzzlyn.ExecutionServer.IRuntime)' during 'Generate code' (IL size 54; hash 0xade6b36b; FullOpts)
//
// File: /__w/1/s/src/coreclr/jit/codegenarm64.cpp Line: 4744
//
public class C0
{
public int F3;
}
public class Program
{
public static C0[] s_5;
public static C0 s_25;
public static sbyte s_30;
public static void Main()
{
int vr6 = s_5[0].F3;
bool vr8 = s_30 < s_25.F3;
if (vr8)
{
vr6 = -(vr6 >> 1);
}
System.Console.WriteLine(vr6);
}
} |
I gave Fuzzlyn a go for an hour. It tripped over about 6 times but those individual seeds couldn't reproduce a failure, e.g., |
What do you mean when you say you couldn't reproduce those issues? Did it fail already during reduction, and what did Fuzzlyn say the problem was with those seeds? |
When I ran with Adding the
|
@SwapnilGaikwad When Fuzzlyn outputs the seed as part of finding an example, it should also output what error it observed. What did it output here? Just that it is a program that computes the wrong result? The situation you describe usually indicates that there is some use of uninitialized stack in the program, where launching a new process might affect whether it is reproduced. There is a known issue like that that rarely reproduces on macOS, but I am not familiar with that happening on other platforms. So it is a bit worrying, especially if you can reproduce it at a rate of 6 times per hour. Can you see if the same happens without this PR, in which case we do not need to block the PR on it? And what OS/CPU are you using to run Fuzzlyn? |
Hi Jakob, I think, I saw the following output. I closed the session but copied the partial output with seeds to reproduce the error.
Since then, I ran Fuzzlyn on both main and the patch for over two hours but didn't see any errors. |
Fuzzlyn launches "execution servers" on the host corerun you specify that accepts programs to run. Is it possible those processes were killed by the OOM killer? Can you check in the logs? When the execution server exits unexpectedly Fuzzlyn will read stderr and print the message you are seeing there with the stderr. If stderr was empty, that would be the result. Seems like I should also print the exit code to make this clearer. In any case seems we don't need to hold this PR up on this. |
Didn't find any traces of potential OOM kill unfortunately. |
Thanks! |
This is similar to #82031 where
cinv
is emitted instead of csel when thetrueVal == ~falseVal
.Note: Unfortunately, asmdiffs show no matches for this pattern as of now. Thus, I'm not sure whether we can add this optimisation or not.