forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
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
[JitDiff ARM64] [EgorBo] JIT: Unroll more Equals/StartsWith/EndsWith on arm64 #738
Comments
Top method regressions840 (48.17 % of base) - System.Data.XDRSchema:FindTypeNode(System.Xml.XmlElement):System.Xml.XmlElement ; Assembly listing for method System.Data.XDRSchema:FindTypeNode(System.Xml.XmlElement):System.Xml.XmlElement (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 39 single block inlinees; 16 inlinees without PGO data
+; 0 inlinees with PGO data; 18 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 21, 18 ) ref -> x19 class-hnd single-def <System.Xml.XmlElement>
-; V01 loc0 [V01,T22] ( 6, 7.50) ref -> x22 class-hnd exact single-def <System.String>
-; V02 loc1 [V02,T00] ( 30,404.50) ref -> x24 class-hnd <System.Xml.XmlNode>
-; V03 loc2 [V03,T01] ( 4, 21 ) ref -> x23 class-hnd single-def <System.Xml.XmlDocument>
+; V00 arg0 [V00,T06] ( 21, 18 ) ref -> x19 class-hnd single-def <System.Xml.XmlElement>
+; V01 loc0 [V01,T27] ( 6, 7.50) ref -> x21 class-hnd exact single-def <System.String>
+; V02 loc1 [V02,T00] ( 30,404.50) ref -> x23 class-hnd <System.Xml.XmlNode>
+; V03 loc2 [V03,T05] ( 4, 21 ) ref -> x22 class-hnd single-def <System.Xml.XmlDocument>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V07 tmp3 [V07,T32] ( 5, 4.50) ref -> x0 single-def "spilling varStr"
-; V08 tmp4 [V08,T44] ( 2, 2 ) int -> x0 "spilling unroll qmark"
-; V09 tmp5 [V09,T23] ( 6, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
-; V10 tmp6 [V10,T47] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+; V07 tmp3 [V07,T30] ( 5, 4.50) ref -> x0 single-def "spilling varStr"
+; V08 tmp4 [V08,T38] ( 2, 2 ) int -> x0 "spilling unroll qmark"
+;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V10 tmp6 [V10,T24] ( 8, 7.50) ref -> x0 single-def "spilling varStr"
+; V11 tmp7 [V11,T39] ( 2, 2 ) int -> x0 "spilling unroll qmark"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V14 tmp10 [V14,T41] ( 5, 3 ) ref -> x0 single-def "spilling varStr"
+; V14 tmp10 [V14,T35] ( 5, 3 ) ref -> x0 single-def "spilling varStr"
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V16 tmp12 [V16,T24] ( 6, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
-; V17 tmp13 [V17,T48] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V17 tmp13 [V17,T25] ( 8, 7.50) ref -> x0 single-def "spilling varStr"
+; V18 tmp14 [V18,T40] ( 2, 2 ) int -> x0 "spilling unroll qmark"
;* V19 tmp15 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V21 tmp17 [V21,T33] ( 5, 4.50) ref -> x0 single-def "spilling varStr"
-; V22 tmp18 [V22,T45] ( 2, 2 ) int -> x0 "spilling unroll qmark"
-; V23 tmp19 [V23,T25] ( 6, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
-; V24 tmp20 [V24,T49] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-;* V26 tmp22 [V26,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V21 tmp17 [V21,T31] ( 5, 4.50) ref -> x0 single-def "spilling varStr"
+; V22 tmp18 [V22,T41] ( 2, 2 ) int -> x0 "spilling unroll qmark"
+;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V24 tmp20 [V24,T26] ( 8, 7.50) ref -> x0 single-def "spilling varStr"
+; V25 tmp21 [V25,T42] ( 2, 2 ) int -> x0 "spilling unroll qmark"
+;* V26 tmp22 [V26,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V29 tmp25 [V29,T09] ( 5, 18 ) ref -> x0 "spilling varStr"
+; V29 tmp25 [V29,T08] ( 5, 18 ) ref -> x0 "spilling varStr"
; V30 tmp26 [V30,T21] ( 2, 8 ) int -> x0 "spilling unroll qmark"
-; V31 tmp27 [V31,T04] ( 5, 20 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
-; V32 tmp28 [V32,T35] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
-;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V32 tmp28 [V32,T01] ( 8, 30 ) ref -> x0 "spilling varStr"
+; V33 tmp29 [V33,T22] ( 2, 8 ) int -> x0 "spilling unroll qmark"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp31 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V36 tmp32 [V36,T14] ( 5, 12 ) ref -> x0 "spilling varStr"
-; V37 tmp33 [V37,T19] ( 2, 2 ) int -> x0 "spilling unroll qmark"
-; V38 tmp34 [V38,T05] ( 5, 20 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
-; V39 tmp35 [V39,T36] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
-;* V40 tmp36 [V40 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+; V36 tmp32 [V36,T13] ( 5, 12 ) ref -> x0 "spilling varStr"
+;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V39 tmp35 [V39,T02] ( 8, 30 ) ref -> x0 "spilling varStr"
+; V40 tmp36 [V40,T23] ( 2, 8 ) int -> x0 "spilling unroll qmark"
;* V41 tmp37 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V42 tmp38 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V43 tmp39 [V43,T10] ( 5, 18 ) ref -> x0 "spilling varStr"
-; V44 tmp40 [V44,T15] ( 2, 8 ) int -> x0 "spilling unroll qmark"
-; V45 tmp41 [V45,T06] ( 5, 20 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
-; V46 tmp42 [V46,T37] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
-;* V47 tmp43 [V47 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+; V43 tmp39 [V43,T09] ( 5, 18 ) ref -> x0 "spilling varStr"
+; V44 tmp40 [V44,T14] ( 2, 8 ) int -> x0 "spilling unroll qmark"
+;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V46 tmp42 [V46,T03] ( 8, 30 ) ref -> x0 "spilling varStr"
+; V47 tmp43 [V47,T15] ( 2, 8 ) int -> x0 "spilling unroll qmark"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp45 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V50 tmp46 [V50,T11] ( 5, 18 ) ref -> x0 "spilling varStr"
+; V50 tmp46 [V50,T10] ( 5, 18 ) ref -> x0 "spilling varStr"
; V51 tmp47 [V51,T16] ( 2, 8 ) int -> x0 "spilling unroll qmark"
-; V52 tmp48 [V52,T07] ( 5, 20 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
-; V53 tmp49 [V53,T38] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
-;* V54 tmp50 [V54 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V55 tmp51 [V55,T08] ( 5, 20 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
-; V56 tmp52 [V56,T39] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+;* V52 tmp48 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V53 tmp49 [V53,T04] ( 8, 30 ) ref -> x0 "spilling varStr"
+; V54 tmp50 [V54,T17] ( 2, 8 ) int -> x1 "spilling unroll qmark"
+; V55 tmp51 [V55,T07] ( 5, 20 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
+; V56 tmp52 [V56,T33] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V57 tmp53 [V57,T20] ( 2, 8 ) byref -> x0 "impAppendStmt"
-; V58 tmp54 [V58,T42] ( 3, 3 ) ref -> x0 "Single return block return value"
-; V59 tmp55 [V59,T43] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-;* V60 tmp56 [V60,T40] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V61 cse0 [V61,T34] ( 2, 2.50) ref -> x25 "CSE #24: moderate"
-; V62 cse1 [V62,T12] ( 12, 12 ) long -> x20 multi-def "CSE #02: moderate"
-; V63 cse2 [V63,T13] ( 6, 12 ) long -> x25 multi-def "CSE #12: moderate"
-; V64 cse3 [V64,T17] ( 4, 12 ) long -> x25 "CSE #23: moderate"
-; V65 cse4 [V65,T46] ( 3, 1.50) long -> x23 "CSE #08: conservative"
-; V66 cse5 [V66,T02] ( 17, 20.50) ref -> x21 multi-def "CSE #04: aggressive"
-; V67 cse6 [V67,T26] ( 3, 6 ) int -> x2 "CSE #13: moderate"
-; V68 cse7 [V68,T27] ( 3, 6 ) int -> x2 "CSE #16: moderate"
-; V69 cse8 [V69,T28] ( 3, 6 ) int -> x2 "CSE #17: moderate"
-; V70 cse9 [V70,T29] ( 3, 6 ) int -> x2 "CSE #20: moderate"
-; V71 cse10 [V71,T30] ( 3, 6 ) int -> x2 "CSE #22: moderate"
-; V72 rat0 [V72,T18] ( 4, 9 ) ref -> x25 "replacement local"
-; V73 rat1 [V73,T31] ( 3, 5 ) long -> x0 "CSE for expectedClsNode"
-; V74 rat2 [V74,T54] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
-; V75 rat3 [V75,T55] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
-; V76 rat4 [V76,T51] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
-; V77 rat5 [V77,T52] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
-; V78 rat6 [V78,T53] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V58 tmp54 [V58,T36] ( 3, 3 ) ref -> x0 "Single return block return value"
+; V59 tmp55 [V59,T37] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+;* V60 tmp56 [V60,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V61 cse0 [V61,T32] ( 2, 2.50) ref -> x24 "CSE #20: moderate"
+; V62 cse1 [V62,T11] ( 12, 12 ) long -> x20 multi-def "CSE #02: moderate"
+; V63 cse2 [V63,T12] ( 6, 12 ) long -> x24 multi-def "CSE #12: moderate"
+; V64 cse3 [V64,T18] ( 4, 12 ) long -> x24 "CSE #19: moderate"
+; V65 cse4 [V65,T43] ( 3, 1.50) long -> x22 "CSE #08: conservative"
+; V66 cse5 [V66,T52] ( 10, 11 ) simd16 -> d8 multi-def "CSE #03: moderate"
+; V67 cse6 [V67,T53] ( 10, 11 ) simd16 -> d9 multi-def "CSE #04: moderate"
+; V68 cse7 [V68,T54] ( 10, 11 ) simd16 -> d10 multi-def "CSE #05: moderate"
+; V69 cse8 [V69,T55] ( 10, 11 ) simd16 -> d11 multi-def "CSE #06: moderate"
+; V70 cse9 [V70,T56] ( 10, 11 ) simd16 -> [fp+0x10] multi-def "CSE #07: moderate"
+; V71 cse10 [V71,T28] ( 3, 6 ) int -> x2 "CSE #18: moderate"
+; V72 rat0 [V72,T19] ( 4, 9 ) ref -> x24 "replacement local"
+; V73 rat1 [V73,T29] ( 3, 5 ) long -> x0 "CSE for expectedClsNode"
+; V74 rat2 [V74,T57] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V75 rat3 [V75,T58] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V76 rat4 [V76,T59] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V77 rat5 [V77,T60] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V78 rat6 [V78,T61] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V79 rat7 [V79,T45] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat8 [V80,T46] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V81 rat9 [V81,T47] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V82 rat10 [V82,T48] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V83 rat11 [V83,T49] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V84 rat12 [V84,T50] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V85 rat13 [V85,T51] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M33548_IG01:
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x90]!
+ stp d8, d9, [sp, #0x20]
+ stp d10, d11, [sp, #0x30]
+ stp d12, d13, [sp, #0x40]
+ stp d14, d15, [sp, #0x50]
+ stp x19, x20, [sp, #0x60]
+ stp x21, x22, [sp, #0x70]
+ stp x23, x24, [sp, #0x80]
mov fp, sp
mov x19, x0
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=40 bbWeight=1 PerfScore 9.00
G_M33548_IG02:
- cbz x19, G_M33548_IG06
+ cbz x19, G_M33548_IG08
;; size=4 bbWeight=1 PerfScore 1.00
G_M33548_IG03:
mov x0, x19
ldr x1, [x19]
ldr x20, [x1, #0x60]
ldr x1, [x20, #0x30]
blr x1
- cbz x0, G_M33548_IG06
+ cbz x0, G_M33548_IG08
;; size=24 bbWeight=0.50 PerfScore 5.75
G_M33548_IG04:
ldr w1, [x0, #0x08]
cmp w1, #11
- bne G_M33548_IG06
+ bne G_M33548_IG08
;; size=12 bbWeight=0.25 PerfScore 1.12
G_M33548_IG05:
ldr q16, [x0, #0x0C]
ldr q17, [@RWD00]
eor v16.2d, v16.2d, v17.2d
ldr q17, [x0, #0x12]
ldr q18, [@RWD16]
eor v17.2d, v17.2d, v18.2d
orr v16.2d, v16.2d, v17.2d
umaxp v16.4s, v16.4s, v16.4s
umov x0, v16.d[0]
cmp x0, #0
cset x0, eq
- cbz w0, G_M33548_IG06
+ cbz w0, G_M33548_IG08
mov x0, x19
ldr x1, [x20, #0x18]
blr x1
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x0, x21
- beq G_M33548_IG44
- cbz x0, G_M33548_IG06
- ldr w2, [x0, #0x08]
- cmp w2, #34
- bne G_M33548_IG06
- ldr w2, [x0, #0x08]
- lsl w2, w2, #1
- mov w2, w2
- add x1, x21, #12
- add x0, x0, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbnz w0, G_M33548_IG44
- ;; size=140 bbWeight=0.50 PerfScore 20.25
+ cbz x0, G_M33548_IG08
+ ;; size=64 bbWeight=0.50 PerfScore 10.50
G_M33548_IG06:
+ ldr w1, [x0, #0x08]
+ cmp w1, #34
+ bne G_M33548_IG08
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
+G_M33548_IG07:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [x0, #0x1C]
+ ldr q8, [@RWD32]
+ eor v16.2d, v16.2d, v8.2d
+ ldr q9, [@RWD48]
+ eor v17.2d, v17.2d, v9.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x2C]
+ ldr q18, [x0, #0x3C]
+ ldr q10, [@RWD64]
+ eor v17.2d, v17.2d, v10.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q11, [@RWD80]
+ eor v17.2d, v18.2d, v11.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x40]
+ ldr q12, [@RWD96]
+ eor v17.2d, v17.2d, v12.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x0, v16.d[0]
+ cmp x0, #0
+ cset x0, eq
+ cbnz w0, G_M33548_IG56
+ ;; size=96 bbWeight=0.50 PerfScore 16.75
+G_M33548_IG08:
mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x2, [x19]
ldr x2, [x2, #0x80]
ldr x2, [x2, #0x38]
blr x2
- mov x22, x0
+ mov x21, x0
mov x0, x19
ldr x1, [x19]
ldr x20, [x1, #0x60]
ldr x1, [x20, #0x30]
blr x1
- cbz x0, G_M33548_IG10
+ cbz x0, G_M33548_IG14
;; size=60 bbWeight=0.50 PerfScore 12.00
-G_M33548_IG07:
+G_M33548_IG09:
ldr w1, [x0, #0x08]
cmp w1, #7
- bne G_M33548_IG10
+ bne G_M33548_IG14
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M33548_IG08:
+G_M33548_IG10:
ldr x1, [x0, #0x0C]
movz x2, #101
movk x2, #108 LSL #16
movk x2, #101 LSL #32
movk x2, #109 LSL #48
eor x1, x1, x2
ldr x0, [x0, #0x12]
movz x2, #109
movk x2, #101 LSL #16
movk x2, #110 LSL #32
movk x2, #116 LSL #48
eor x0, x0, x2
orr x0, x1, x0
- cbnz x0, G_M33548_IG10
+ cbnz x0, G_M33548_IG14
;; size=56 bbWeight=0.12 PerfScore 1.56
-G_M33548_IG09:
+G_M33548_IG11:
mov x0, x19
ldr x1, [x20, #0x18]
blr x1
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x0, x21
- beq G_M33548_IG13
- cbz x0, G_M33548_IG10
- ldr w2, [x0, #0x08]
- cmp w2, #34
- bne G_M33548_IG10
- ldr w2, [x0, #0x08]
- lsl w2, w2, #1
- mov w2, w2
- add x1, x21, #12
- add x0, x0, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbnz w0, G_M33548_IG13
- ;; size=92 bbWeight=0.50 PerfScore 12.50
-G_M33548_IG10:
+ cbz x0, G_M33548_IG14
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M33548_IG12:
+ ldr w1, [x0, #0x08]
+ cmp w1, #34
+ bne G_M33548_IG14
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
+G_M33548_IG13:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [x0, #0x1C]
+ ldr q8, [@RWD32]
+ eor v16.2d, v16.2d, v8.2d
+ ldr q9, [@RWD48]
+ eor v17.2d, v17.2d, v9.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x2C]
+ ldr q18, [x0, #0x3C]
+ ldr q10, [@RWD64]
+ eor v17.2d, v17.2d, v10.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q11, [@RWD80]
+ eor v17.2d, v18.2d, v11.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x40]
+ ldr q12, [@RWD96]
+ eor v17.2d, v17.2d, v12.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x0, v16.d[0]
+ cmp x0, #0
+ cset x0, eq
+ cbnz w0, G_M33548_IG19
+ ;; size=96 bbWeight=0.50 PerfScore 16.75
+G_M33548_IG14:
mov x0, x19
ldr x1, [x20, #0x30]
blr x1
- cbz x0, G_M33548_IG41
+ cbz x0, G_M33548_IG52
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M33548_IG11:
+G_M33548_IG15:
ldr w1, [x0, #0x08]
cmp w1, #9
- bne G_M33548_IG41
+ bne G_M33548_IG52
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M33548_IG12:
+G_M33548_IG16:
ldr q16, [x0, #0x0C]
- ldr q17, [@RWD32]
+ ldr q17, [@RWD112]
eor v16.2d, v16.2d, v17.2d
ldr q17, [x0, #0x0E]
- ldr q18, [@RWD48]
+ ldr q18, [@RWD128]
eor v17.2d, v17.2d, v18.2d
orr v16.2d, v16.2d, v17.2d
umaxp v16.4s, v16.4s, v16.4s
umov x0, v16.d[0]
cmp x0, #0
cset x0, eq
- cbz w0, G_M33548_IG41
+ cbz w0, G_M33548_IG52
mov x0, x19
ldr x1, [x20, #0x18]
blr x1
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x0, x21
- beq G_M33548_IG13
- cbz x0, G_M33548_IG41
- ldr w2, [x0, #0x08]
- cmp w2, #34
- bne G_M33548_IG41
- ldr w2, [x0, #0x08]
- lsl w2, w2, #1
- mov w2, w2
- add x1, x21, #12
- add x0, x0, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbz w0, G_M33548_IG41
- ;; size=140 bbWeight=0.50 PerfScore 20.25
-G_M33548_IG13:
- cbz x22, G_M33548_IG41
- ldr w0, [x22, #0x08]
- cbz w0, G_M33548_IG41
+ cbz x0, G_M33548_IG52
+ ;; size=64 bbWeight=0.50 PerfScore 10.50
+G_M33548_IG17:
+ ldr w1, [x0, #0x08]
+ cmp w1, #34
+ bne G_M33548_IG52
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
+G_M33548_IG18:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [x0, #0x1C]
+ ldr q8, [@RWD32]
+ eor v16.2d, v16.2d, v8.2d
+ ldr q9, [@RWD48]
+ eor v17.2d, v17.2d, v9.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x2C]
+ ldr q18, [x0, #0x3C]
+ ldr q10, [@RWD64]
+ eor v17.2d, v17.2d, v10.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q11, [@RWD80]
+ eor v17.2d, v18.2d, v11.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x40]
+ ldr q12, [@RWD96]
+ str q12, [fp, #0x10] // [V70 cse9]
+ eor v17.2d, v17.2d, v12.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x0, v16.d[0]
+ cmp x0, #0
+ cset x0, eq
+ ldr q12, [fp, #0x10] // [V70 cse9]
+ cbz w0, G_M33548_IG52
+ ;; size=104 bbWeight=0.50 PerfScore 18.25
+G_M33548_IG19:
+ cbz x21, G_M33548_IG52
+ ldr w0, [x21, #0x08]
+ str q12, [fp, #0x10] // [V70 cse9]
+ cbz w0, G_M33548_IG52
mov x0, x19
ldr x1, [x19]
- ldr x23, [x1, #0x48]
- ldr x1, [x23, #0x30]
+ ldr x22, [x1, #0x48]
+ ldr x1, [x22, #0x30]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x1
ldr x1, [x0]
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x38]
blr x1
- mov x24, x0
- mov x0, x19
- ldr x1, [x23, #0x30]
- blr x1
mov x23, x0
- cmp x24, x23
- beq G_M33548_IG41
- ;; size=76 bbWeight=0.50 PerfScore 16.25
-G_M33548_IG14:
- cbz x24, G_M33548_IG18
- ;; size=4 bbWeight=4 PerfScore 4.00
-G_M33548_IG15:
- mov x0, x24
- ldr x1, [x24]
- ldr x25, [x1, #0x60]
- ldr x1, [x25, #0x30]
+ mov x0, x19
+ ldr x1, [x22, #0x30]
blr x1
- cbz x0, G_M33548_IG18
- ;; size=24 bbWeight=2 PerfScore 23.00
-G_M33548_IG16:
+ mov x22, x0
+ cmp x23, x22
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ beq G_M33548_IG52
+ ;; size=112 bbWeight=0.50 PerfScore 20.75
+G_M33548_IG20:
+ cbz x23, G_M33548_IG26
+ ;; size=4 bbWeight=4 PerfScore 4.00
+G_M33548_IG21:
+ mov x0, x23
+ ldr x1, [x23]
+ ldr x24, [x1, #0x60]
+ ldr x1, [x24, #0x30]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x1
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG26
+ ;; size=56 bbWeight=2 PerfScore 39.00
+G_M33548_IG22:
ldr w1, [x0, #0x08]
cmp w1, #11
- bne G_M33548_IG18
+ bne G_M33548_IG26
;; size=12 bbWeight=1 PerfScore 4.50
-G_M33548_IG17:
+G_M33548_IG23:
ldr q16, [x0, #0x0C]
ldr q17, [@RWD00]
eor v16.2d, v16.2d, v17.2d
ldr q17, [x0, #0x12]
ldr q18, [@RWD16]
eor v17.2d, v17.2d, v18.2d
orr v16.2d, v16.2d, v17.2d
umaxp v16.4s, v16.4s, v16.4s
umov x0, v16.d[0]
cmp x0, #0
cset x0, eq
- cbz w0, G_M33548_IG18
- mov x0, x24
- ldr x1, [x25, #0x18]
+ cbz w0, G_M33548_IG26
+ mov x0, x23
+ ldr x1, [x24, #0x18]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x1
- cmp x0, x21
- beq G_M33548_IG19
- cbz x0, G_M33548_IG18
- ldr w2, [x0, #0x08]
- cmp w2, #34
- bne G_M33548_IG18
- add x0, x0, #12
- lsl w2, w2, #1
- mov w2, w2
- add x1, x21, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbnz w0, G_M33548_IG19
- ;; size=124 bbWeight=2 PerfScore 72.00
-G_M33548_IG18:
- cbz x24, G_M33548_IG35
- b G_M33548_IG20
- ;; size=8 bbWeight=2 PerfScore 4.00
-G_M33548_IG19:
- mov x0, x19
- ldr x1, [x20, #0x30]
- blr x1
- cbnz x0, G_M33548_IG31
- ;; size=16 bbWeight=2 PerfScore 11.00
-G_M33548_IG20:
- mov x0, x24
- ldr x1, [x24]
- ldr x25, [x1, #0x60]
- ldr x1, [x25, #0x30]
- blr x1
- cbz x0, G_M33548_IG35
- ;; size=24 bbWeight=2 PerfScore 23.00
-G_M33548_IG21:
- ldr w1, [x0, #0x08]
- cmp w1, #13
- bne G_M33548_IG35
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M33548_IG22:
- ldr q16, [x0, #0x0C]
- ldr q17, [@RWD64]
- eor v16.2d, v16.2d, v17.2d
- ldr q17, [x0, #0x16]
- ldr q18, [@RWD80]
- eor v17.2d, v17.2d, v18.2d
- orr v16.2d, v16.2d, v17.2d
- umaxp v16.4s, v16.4s, v16.4s
- umov x0, v16.d[0]
- cmp x0, #0
- cset x0, eq
- tst w0, #255
- beq G_M33548_IG35
- mov x0, x24
- ldr x1, [x25, #0x18]
- blr x1
- cmp x0, x21
- beq G_M33548_IG23
- cbz x0, G_M33548_IG35
- ldr w2, [x0, #0x08]
- cmp w2, #34
- bne G_M33548_IG35
- add x0, x0, #12
- lsl w2, w2, #1
- mov w2, w2
- add x1, x21, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbz w0, G_M33548_IG35
- ;; size=128 bbWeight=2 PerfScore 73.00
-G_M33548_IG23:
- mov x0, x19
- ldr x1, [x20, #0x30]
- blr x1
- cbz x0, G_M33548_IG35
- ;; size=16 bbWeight=2 PerfScore 11.00
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG26
+ ;; size=96 bbWeight=2 PerfScore 58.00
G_M33548_IG24:
ldr w1, [x0, #0x08]
- cmp w1, #9
- bne G_M33548_IG35
+ cmp w1, #34
+ bne G_M33548_IG26
;; size=12 bbWeight=1 PerfScore 4.50
G_M33548_IG25:
ldr q16, [x0, #0x0C]
- ldr q17, [@RWD32]
- eor v16.2d, v16.2d, v17.2d
- ldr q17, [x0, #0x0E]
- ldr q18, [@RWD48]
- eor v17.2d, v17.2d, v18.2d
+ ldr q17, [x0, #0x1C]
+ eor v16.2d, v16.2d, v8.2d
+ eor v17.2d, v17.2d, v9.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x2C]
+ ldr q18, [x0, #0x3C]
+ eor v17.2d, v17.2d, v10.2d
+ orr v16.2d, v16.2d, v17.2d
+ eor v17.2d, v18.2d, v11.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x40]
+ ldr q12, [fp, #0x10] // [V70 cse9]
+ eor v17.2d, v17.2d, v12.2d
orr v16.2d, v16.2d, v17.2d
umaxp v16.4s, v16.4s, v16.4s
umov x0, v16.d[0]
cmp x0, #0
cset x0, eq
- tst w0, #255
- beq G_M33548_IG35
- mov x0, x19
- ldr x1, [x20, #0x18]
- blr x1
- cmp x0, x21
- beq G_M33548_IG26
- cbz x0, G_M33548_IG35
- ldr w2, [x0, #0x08]
- cmp w2, #34
- bne G_M33548_IG35
- add x0, x0, #12
- lsl w2, w2, #1
- mov w2, w2
- add x1, x21, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbz w0, G_M33548_IG35
- ;; size=128 bbWeight=2 PerfScore 73.00
+ cbnz w0, G_M33548_IG27
+ ;; size=80 bbWeight=2 PerfScore 51.00
G_M33548_IG26:
- mov x1, x24
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFCLASS
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- cbz x0, G_M33548_IG35
- ;; size=40 bbWeight=2 PerfScore 17.00
+ cbz x23, G_M33548_IG46
+ b G_M33548_IG33
+ ;; size=8 bbWeight=2 PerfScore 4.00
G_M33548_IG27:
- mov x25, x24
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x1, [x25]
- cmp x1, x0
- beq G_M33548_IG29
- ;; size=28 bbWeight=1 PerfScore 6.50
+ mov x0, x19
+ ldr x1, [x20, #0x30]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x1
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG33
+ ;; size=48 bbWeight=2 PerfScore 27.00
G_M33548_IG28:
- mov x1, x24
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- mov x25, x0
- ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M33548_IG29:
- mov x0, x24
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x2, [x24]
- ldr x2, [x2, #0x80]
- ldr x2, [x2, #0x38]
- blr x2
- cmp x0, x22
- bne G_M33548_IG34
- ;; size=40 bbWeight=2 PerfScore 27.00
-G_M33548_IG30:
- mov x0, x25
- b G_M33548_IG45
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M33548_IG31:
ldr w1, [x0, #0x08]
cmp w1, #7
- bne G_M33548_IG20
+ bne G_M33548_IG33
;; size=12 bbWeight=1 PerfScore 4.50
-G_M33548_IG32:
+G_M33548_IG29:
ldr x1, [x0, #0x0C]
movz x2, #101
movk x2, #108 LSL #16
movk x2, #101 LSL #32
movk x2, #109 LSL #48
eor x1, x1, x2
ldr x0, [x0, #0x12]
movz x2, #109
movk x2, #101 LSL #16
movk x2, #110 LSL #32
movk x2, #116 LSL #48
eor x0, x0, x2
orr x0, x1, x0
+ cbnz x0, G_M33548_IG33
+ ;; size=56 bbWeight=0.50 PerfScore 6.25
+G_M33548_IG30:
+ mov x0, x19
+ ldr x1, [x20, #0x18]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x1
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG33
+ ;; size=48 bbWeight=2 PerfScore 27.00
+G_M33548_IG31:
+ ldr w1, [x0, #0x08]
+ cmp w1, #34
+ bne G_M33548_IG33
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M33548_IG32:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [x0, #0x1C]
+ eor v16.2d, v16.2d, v8.2d
+ eor v17.2d, v17.2d, v9.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x2C]
+ ldr q18, [x0, #0x3C]
+ eor v17.2d, v17.2d, v10.2d
+ orr v16.2d, v16.2d, v17.2d
+ eor v17.2d, v18.2d, v11.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x40]
+ ldr q12, [fp, #0x10] // [V70 cse9]
+ eor v17.2d, v17.2d, v12.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x0, v16.d[0]
+ cmp x0, #0
+ cset x0, eq
+ cbnz w0, G_M33548_IG42
+ ;; size=80 bbWeight=2 PerfScore 51.00
+G_M33548_IG33:
+ mov x0, x23
+ ldr x1, [x23]
+ ldr x24, [x1, #0x60]
+ ldr x1, [x24, #0x30]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x1
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG46
+ ;; size=56 bbWeight=2 PerfScore 39.00
+G_M33548_IG34:
+ ldr w1, [x0, #0x08]
+ cmp w1, #13
+ bne G_M33548_IG46
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M33548_IG35:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [@RWD144]
+ eor v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x16]
+ ldr q18, [@RWD160]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x0, v16.d[0]
cmp x0, #0
cset x0, eq
tst w0, #255
- beq G_M33548_IG20
- ;; size=68 bbWeight=0.50 PerfScore 7.00
-G_M33548_IG33:
+ beq G_M33548_IG46
+ mov x0, x23
+ ldr x1, [x24, #0x18]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x1
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG46
+ ;; size=100 bbWeight=2 PerfScore 59.00
+G_M33548_IG36:
+ ldr w1, [x0, #0x08]
+ cmp w1, #34
+ bne G_M33548_IG46
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M33548_IG37:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [x0, #0x1C]
+ eor v16.2d, v16.2d, v8.2d
+ eor v17.2d, v17.2d, v9.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x2C]
+ ldr q18, [x0, #0x3C]
+ eor v17.2d, v17.2d, v10.2d
+ orr v16.2d, v16.2d, v17.2d
+ eor v17.2d, v18.2d, v11.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x40]
+ ldr q12, [fp, #0x10] // [V70 cse9]
+ eor v17.2d, v17.2d, v12.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x0, v16.d[0]
+ cmp x0, #0
+ cset x0, eq
+ tst w0, #255
+ beq G_M33548_IG46
+ mov x0, x19
+ ldr x1, [x20, #0x30]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x1
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG46
+ ;; size=132 bbWeight=2 PerfScore 79.00
+G_M33548_IG38:
+ ldr w1, [x0, #0x08]
+ cmp w1, #9
+ bne G_M33548_IG46
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M33548_IG39:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [@RWD112]
+ eor v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x0E]
+ ldr q18, [@RWD128]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x0, v16.d[0]
+ cmp x0, #0
+ cset x0, eq
+ tst w0, #255
+ beq G_M33548_IG46
mov x0, x19
ldr x1, [x20, #0x18]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x1
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG46
+ ;; size=100 bbWeight=2 PerfScore 59.00
+G_M33548_IG40:
+ ldr w1, [x0, #0x08]
+ cmp w1, #34
+ bne G_M33548_IG46
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M33548_IG41:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [x0, #0x1C]
+ eor v16.2d, v16.2d, v8.2d
+ eor v17.2d, v17.2d, v9.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x2C]
+ ldr q18, [x0, #0x3C]
+ eor v17.2d, v17.2d, v10.2d
+ orr v16.2d, v16.2d, v17.2d
+ eor v17.2d, v18.2d, v11.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x40]
+ ldr q12, [fp, #0x10] // [V70 cse9]
+ eor v17.2d, v17.2d, v12.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x1, v16.d[0]
+ cmp x1, #0
+ cset x1, eq
+ tst w1, #255
+ beq G_M33548_IG46
+ ;; size=84 bbWeight=2 PerfScore 52.00
+G_M33548_IG42:
+ mov x1, x23
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x2
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG46
+ ;; size=72 bbWeight=2 PerfScore 33.00
+G_M33548_IG43:
+ mov x24, x23
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x1, [x24]
+ cmp x1, x0
+ beq G_M33548_IG45
+ ;; size=28 bbWeight=1 PerfScore 6.50
+G_M33548_IG44:
+ mov x1, x23
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x2
+ mov x24, x0
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ ;; size=60 bbWeight=0.50 PerfScore 7.25
+G_M33548_IG45:
+ mov x0, x23
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x2, [x23]
+ ldr x2, [x2, #0x80]
+ ldr x2, [x2, #0x38]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
+ blr x2
cmp x0, x21
- beq G_M33548_IG26
- cbz x0, G_M33548_IG20
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ beq G_M33548_IG55
+ cbz x0, G_M33548_IG46
ldr w2, [x0, #0x08]
- cmp w2, #34
- bne G_M33548_IG20
+ ldr w1, [x21, #0x08]
+ cmp w2, w1
+ bne G_M33548_IG46
add x0, x0, #12
lsl w2, w2, #1
mov w2, w2
add x1, x21, #12
movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x3
- cbnz w0, G_M33548_IG26
- b G_M33548_IG20
- ;; size=80 bbWeight=2 PerfScore 43.00
-G_M33548_IG34:
- cbz x0, G_M33548_IG35
- ldr w2, [x0, #0x08]
- ldr w1, [x22, #0x08]
- cmp w2, w1
- bne G_M33548_IG35
- add x0, x0, #12
- lsl w2, w2, #1
- mov w2, w2
- add x1, x22, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbnz w0, G_M33548_IG30
- ;; size=60 bbWeight=2 PerfScore 35.00
-G_M33548_IG35:
- mov x0, x24
- ldr x1, [x24]
- ldr x25, [x1, #0x48]
- ldr x1, [x25, #0x38]
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbnz w0, G_M33548_IG55
+ ;; size=164 bbWeight=2 PerfScore 94.00
+G_M33548_IG46:
+ mov x0, x23
+ ldr x1, [x23]
+ ldr x24, [x1, #0x48]
+ ldr x1, [x24, #0x38]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x1
- cbnz x0, G_M33548_IG43
- ;; size=24 bbWeight=4 PerfScore 46.00
-G_M33548_IG36:
- mov x0, x24
- ldr x1, [x25, #0x20]
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbnz x0, G_M33548_IG54
+ ;; size=56 bbWeight=4 PerfScore 78.00
+G_M33548_IG47:
+ mov x0, x23
+ ldr x1, [x24, #0x20]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x1
- cbnz x0, G_M33548_IG39
- ;; size=16 bbWeight=2 PerfScore 11.00
-G_M33548_IG37:
- cmp x24, x23
- beq G_M33548_IG40
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbnz x0, G_M33548_IG50
+ ;; size=48 bbWeight=2 PerfScore 27.00
+G_M33548_IG48:
+ cmp x23, x22
+ beq G_M33548_IG51
;; size=8 bbWeight=16 PerfScore 24.00
-G_M33548_IG38:
- mov x0, x24
- ldr x1, [x24]
+G_M33548_IG49:
+ mov x0, x23
+ ldr x1, [x23]
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x08]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x1
- mov x24, x0
- ldr x1, [x24]
+ mov x23, x0
+ ldr x1, [x23]
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x20]
blr x1
- cbz x0, G_M33548_IG37
- ;; size=44 bbWeight=64 PerfScore 1408.00
-G_M33548_IG39:
- mov x0, x24
- ldr x1, [x24]
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ cbz x0, G_M33548_IG48
+ ;; size=76 bbWeight=64 PerfScore 1920.00
+G_M33548_IG50:
+ mov x0, x23
+ ldr x1, [x23]
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x20]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x1
- mov x24, x0
- ;; size=24 bbWeight=8 PerfScore 88.00
-G_M33548_IG40:
- cmp x24, x23
- bne G_M33548_IG14
+ mov x23, x0
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ ;; size=56 bbWeight=8 PerfScore 152.00
+G_M33548_IG51:
+ cmp x23, x22
+ bne G_M33548_IG20
;; size=8 bbWeight=4 PerfScore 6.00
-G_M33548_IG41:
+G_M33548_IG52:
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M33548_IG42:
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
+G_M33548_IG53:
+ ldp x23, x24, [sp, #0x80]
+ ldp x21, x22, [sp, #0x70]
+ ldp x19, x20, [sp, #0x60]
+ ldp d14, d15, [sp, #0x50]
+ ldp d12, d13, [sp, #0x40]
+ ldp d10, d11, [sp, #0x30]
+ ldp d8, d9, [sp, #0x20]
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M33548_IG43:
- mov x0, x24
- ldr x1, [x25, #0x38]
+ ;; size=36 bbWeight=0.50 PerfScore 4.50
+G_M33548_IG54:
+ mov x0, x23
+ ldr x1, [x24, #0x38]
+ mov v13.d[0], v8.d[1]
+ mov v14.d[0], v9.d[1]
+ mov v15.d[0], v10.d[1]
+ mov v12.d[0], v11.d[1]
blr x1
- mov x24, x0
- b G_M33548_IG40
- ;; size=20 bbWeight=2 PerfScore 12.00
-G_M33548_IG44:
+ mov x23, x0
+ mov v8.d[1], v13.d[0]
+ mov v9.d[1], v14.d[0]
+ mov v10.d[1], v15.d[0]
+ mov v11.d[1], v12.d[0]
+ b G_M33548_IG51
+ ;; size=52 bbWeight=2 PerfScore 28.00
+G_M33548_IG55:
+ mov x0, x24
+ b G_M33548_IG57
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M33548_IG56:
mov x0, x19
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M33548_IG45:
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
+G_M33548_IG57:
+ ldp x23, x24, [sp, #0x80]
+ ldp x21, x22, [sp, #0x70]
+ ldp x19, x20, [sp, #0x60]
+ ldp d14, d15, [sp, #0x50]
+ ldp d12, d13, [sp, #0x40]
+ ldp d10, d11, [sp, #0x30]
+ ldp d8, d9, [sp, #0x20]
+ ldp fp, lr, [sp], #0x90
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.50
+ ;; size=36 bbWeight=0.50 PerfScore 4.50
RWD00 dq 006D0065006C0045h, 00540074006E0065h
RWD16 dq 0074006E0065006Dh, 0065007000790054h
-RWD32 dq 0072007400740061h, 0074007500620069h
-RWD48 dq 0069007200740074h, 0065007400750062h
-RWD64 dq 0072007400740041h, 0074007500620069h
-RWD80 dq 0065007400750062h, 0065007000790054h
+RWD32 dq 003A006E00720075h, 0065006800630073h
+RWD48 dq 002D00730061006Dh, 007200630069006Dh
+RWD64 dq 0066006F0073006Fh, 006F0063002D0074h
+RWD80 dq 006D0078003A006Dh, 00610064002D006Ch
+RWD96 dq 002D006C006D0078h, 0061007400610064h
+RWD112 dq 0072007400740061h, 0074007500620069h
+RWD128 dq 0069007200740074h, 0065007400750062h
+RWD144 dq 0072007400740041h, 0074007500620069h
+RWD160 dq 0065007400750062h, 0065007000790054h
-; Total bytes of code 1744, prolog size 24, PerfScore 2155.69, instruction count 436, allocated bytes for code 1744 (MethodHash=df227cf3) for method System.Data.XDRSchema:FindTypeNode(System.Xml.XmlElement):System.Xml.XmlElement (FullOpts)
+; Total bytes of code 2584, prolog size 36, PerfScore 3112.31, instruction count 646, allocated bytes for code 2584 (MethodHash=df227cf3) for method System.Data.XDRSchema:FindTypeNode(System.Xml.XmlElement):System.Xml.XmlElement (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/c38eda4ccf75afd288c83f086399f129 |
Top method improvements-76 (-9.90 % of base) - System.Xml.XPath.XPathNavigator:ComparePosition(System.Xml.XPath.XPathNavigator):int:this ; Assembly listing for method System.Xml.XPath.XPathNavigator:ComparePosition(System.Xml.XPath.XPathNavigator):int:this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T09] ( 6, 4 ) ref -> x20 this class-hnd single-def <System.Xml.XPath.XPathNavigator>
; V01 arg1 [V01,T08] ( 6, 4.50) ref -> x19 class-hnd single-def <System.Xml.XPath.XPathNavigator>
; V02 loc0 [V02,T03] ( 10, 12 ) ref -> x20 class-hnd single-def <System.Xml.XPath.XPathNavigator>
; V03 loc1 [V03,T04] ( 9, 11.50) ref -> x19 class-hnd single-def <System.Xml.XPath.XPathNavigator>
; V04 loc2 [V04,T00] ( 7, 13.75) int -> x23
-; V05 loc3 [V05,T11] ( 5, 5.75) int -> x26
+; V05 loc3 [V05,T10] ( 5, 5.75) int -> x26
; V06 loc4 [V06,T06] ( 4, 9 ) ref -> x22 class-hnd single-def <System.Xml.XPath.XPathNavigator>
; V07 loc5 [V07,T01] ( 4, 12.50) ref -> x23 class-hnd single-def <System.Xml.XPath.XPathNavigator>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-; V10 tmp2 [V10,T10] ( 6, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
-;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V12 tmp4 [V12 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V11 tmp3 [V11,T13] ( 3, 2.50) ref -> x0 single-def "spilling varStr"
+;* V12 tmp4 [V12 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V13 tmp5 [V13,T15] ( 2, 2 ) int -> x0 "Single return block return value"
; V14 tmp6 [V14,T14] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V15 cse0 [V15,T13] ( 2, 4.50) long -> x26 hoist "CSE #08: aggressive"
+; V15 cse0 [V15,T12] ( 2, 4.50) long -> x26 hoist "CSE #08: aggressive"
; V16 cse1 [V16,T16] ( 3, 1.50) long -> x22 "CSE #05: moderate"
; V17 cse2 [V17,T17] ( 3, 1.50) long -> x25 "CSE #06: moderate"
; V18 cse3 [V18,T05] ( 6, 10 ) long -> x21 "CSE #02: aggressive"
; V19 cse4 [V19,T07] ( 4, 9 ) long -> x24 "CSE #03: aggressive"
-; V20 cse5 [V20,T12] ( 3, 5 ) long -> x25 hoist "CSE #07: aggressive"
+; V20 cse5 [V20,T11] ( 3, 5 ) long -> x25 hoist "CSE #07: aggressive"
; V21 rat0 [V21,T02] ( 4, 12.25) int -> x23 "Trip count IV"
;
; Lcl frame size = 0
G_M40554_IG01:
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
stp x25, x26, [sp, #0x40]
mov fp, sp
mov x20, x0
mov x19, x1
;; size=32 bbWeight=1 PerfScore 6.50
G_M40554_IG02:
- cbz x19, G_M40554_IG18
+ cbz x19, G_M40554_IG19
;; size=4 bbWeight=1 PerfScore 1.00
G_M40554_IG03:
mov x0, x20
mov x1, x19
ldr x2, [x20]
ldr x2, [x2, #0x78]
ldr x2, [x2, #0x30]
blr x2
- cbnz w0, G_M40554_IG24
+ cbnz w0, G_M40554_IG25
mov x0, x20
ldr x1, [x20]
ldr x1, [x1, #0x58]
ldr x1, [x1]
blr x1
mov x20, x0
mov x0, x19
ldr x1, [x19]
ldr x1, [x1, #0x58]
ldr x1, [x1]
blr x1
mov x19, x0
mov x0, x20
ldr x21, [x20]
ldr x22, [x21, #0x58]
ldr x1, [x22]
blr x1
movz x1, #0xD1FFAB1E // code for System.Xml.XPath.XPathNavigator:GetDepth(System.Xml.XPath.XPathNavigator):int
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
sxtw w23, w0
mov x0, x19
ldr x24, [x19]
ldr x25, [x24, #0x58]
ldr x1, [x25]
blr x1
movz x1, #0xD1FFAB1E // code for System.Xml.XPath.XPathNavigator:GetDepth(System.Xml.XPath.XPathNavigator):int
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
sxtw w26, w0
cmp w23, w26
ble G_M40554_IG07
b G_M40554_IG05
;; size=176 bbWeight=0.50 PerfScore 34.75
G_M40554_IG04:
mov x0, x20
ldr x1, [x21, #0x70]
ldr x1, [x1, #0x08]
blr x1
sub w23, w23, #1
;; size=20 bbWeight=4 PerfScore 32.00
G_M40554_IG05:
cmp w23, w26
bgt G_M40554_IG04
;; size=8 bbWeight=4 PerfScore 6.00
G_M40554_IG06:
mov x0, x20
mov x1, x19
ldr x2, [x21, #0x78]
ldr x2, [x2, #0x30]
blr x2
- cbnz w0, G_M40554_IG22
+ cbnz w0, G_M40554_IG23
;; size=24 bbWeight=0.50 PerfScore 4.50
G_M40554_IG07:
cmp w26, w23
ble G_M40554_IG12
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M40554_IG08:
neg w0, w23
add w0, w0, w26
add w23, w0, #1
b G_M40554_IG10
;; size=16 bbWeight=0.25 PerfScore 0.62
G_M40554_IG09:
mov x0, x19
ldr x1, [x24, #0x70]
ldr x1, [x1, #0x08]
blr x1
;; size=16 bbWeight=4 PerfScore 30.00
G_M40554_IG10:
sub w23, w23, #1
cbnz w23, G_M40554_IG09
;; size=8 bbWeight=4 PerfScore 6.00
G_M40554_IG11:
mov x0, x20
mov x1, x19
ldr x2, [x21, #0x78]
ldr x2, [x2, #0x30]
blr x2
- cbnz w0, G_M40554_IG20
+ cbnz w0, G_M40554_IG21
;; size=24 bbWeight=0.50 PerfScore 4.50
G_M40554_IG12:
mov x0, x20
ldr x1, [x22]
blr x1
mov x22, x0
mov x0, x19
ldr x1, [x25]
blr x1
mov x23, x0
ldr x25, [x22]
ldr x26, [x25, #0x70]
b G_M40554_IG14
;; size=44 bbWeight=0.50 PerfScore 8.50
G_M40554_IG13:
mov x0, x20
ldr x1, [x21, #0x70]
ldr x1, [x1, #0x08]
blr x1
mov x0, x19
ldr x1, [x24, #0x70]
ldr x1, [x1, #0x08]
blr x1
;; size=32 bbWeight=4 PerfScore 60.00
G_M40554_IG14:
mov x0, x22
ldr x1, [x26, #0x08]
blr x1
- cbz w0, G_M40554_IG18
+ cbz w0, G_M40554_IG19
mov x0, x23
ldr x1, [x23]
ldr x1, [x1, #0x70]
ldr x1, [x1, #0x08]
blr x1
- cbz w0, G_M40554_IG18
+ cbz w0, G_M40554_IG19
mov x0, x22
mov x1, x23
ldr x2, [x25, #0x78]
ldr x2, [x2, #0x30]
blr x2
cbz w0, G_M40554_IG13
;; size=64 bbWeight=4 PerfScore 104.00
G_M40554_IG15:
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Object:GetType():System.Type:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
mov w1, #1
movz x2, #0xD1FFAB1E // code for System.RuntimeType:GetCachedName(int):System.String:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- beq G_M40554_IG16
- cbz x0, G_M40554_IG16
- ldr w2, [x0, #0x08]
- cmp w2, #46
- bne G_M40554_IG16
- ldr w2, [x0, #0x08]
- lsl w2, w2, #1
- mov w2, w2
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- add x0, x0, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ;; size=132 bbWeight=0.50 PerfScore 16.25
+ cbz x0, G_M40554_IG17
+ ;; size=52 bbWeight=0.50 PerfScore 6.50
G_M40554_IG16:
+ ldr wzr, [x0, #0x08]
+ ;; size=4 bbWeight=0.25 PerfScore 0.75
+G_M40554_IG17:
mov x0, x20
mov x1, x19
movz x2, #0xD1FFAB1E // code for System.Xml.XPath.XPathNavigator:CompareSiblings(System.Xml.XPath.XPathNavigator,System.Xml.XPath.XPathNavigator):int
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=24 bbWeight=0.50 PerfScore 2.75
-G_M40554_IG17:
+G_M40554_IG18:
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x50
br x2
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M40554_IG18:
+G_M40554_IG19:
mov w0, #3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M40554_IG19:
+G_M40554_IG20:
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M40554_IG20:
+G_M40554_IG21:
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M40554_IG21:
+G_M40554_IG22:
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M40554_IG22:
+G_M40554_IG23:
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M40554_IG23:
+G_M40554_IG24:
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M40554_IG24:
+G_M40554_IG25:
mov w0, #2
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M40554_IG25:
+G_M40554_IG26:
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 768, prolog size 24, PerfScore 334.12, instruction count 192, allocated bytes for code 768 (MethodHash=b6286195) for method System.Xml.XPath.XPathNavigator:ComparePosition(System.Xml.XPath.XPathNavigator):int:this (FullOpts)
+; Total bytes of code 692, prolog size 24, PerfScore 325.12, instruction count 173, allocated bytes for code 692 (MethodHash=b6286195) for method System.Xml.XPath.XPathNavigator:ComparePosition(System.Xml.XPath.XPathNavigator):int:this (FullOpts)
; ============================================================ -72 (-8.57 % of base) - System.Security.Cryptography.Pkcs.SignerInfo:RemoveCounterSignature(int):this ; Assembly listing for method System.Security.Cryptography.Pkcs.SignerInfo:RemoveCounterSignature(int):this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 5, 5 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.Pkcs.SignerInfo>
-; V01 arg1 [V01,T03] ( 5, 5.50) int -> x19 single-def
-; V02 loc0 [V02,T14] ( 4, 4 ) int -> x0 single-def
-; V03 loc1 [V03,T18] ( 4, 3 ) byref -> x20 single-def
-; V04 loc2 [V04,T13] ( 6, 4 ) int -> x22
-; V05 loc3 [V05,T21] ( 4, 2.50) int -> x23
-; V06 loc4 [V06,T19] ( 4, 3 ) ubyte -> x24
-; V07 loc5 [V07,T12] ( 4, 5.50) int -> x25
-; V08 loc6 [V08,T06] ( 4, 6.50) ref -> x21 class-hnd exact single-def <System.Security.Cryptography.Asn1.AttributeAsn[]>
-; V09 loc7 [V09,T01] ( 6, 17.50) int -> x26
+; V00 this [V00,T05] ( 5, 5 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.Pkcs.SignerInfo>
+; V01 arg1 [V01,T04] ( 5, 5.50) int -> x19 single-def
+; V02 loc0 [V02,T13] ( 4, 4 ) int -> x0 single-def
+; V03 loc1 [V03,T16] ( 4, 3 ) byref -> x0 single-def
+; V04 loc2 [V04,T12] ( 6, 4 ) int -> x2
+; V05 loc3 [V05,T19] ( 4, 2.50) int -> x3
+; V06 loc4 [V06,T17] ( 4, 3 ) ubyte -> x4
+; V07 loc5 [V07,T11] ( 4, 5.50) int -> x5
+; V08 loc6 [V08,T07] ( 4, 6.50) ref -> x1 class-hnd exact single-def <System.Security.Cryptography.Asn1.AttributeAsn[]>
+; V09 loc7 [V09,T01] ( 6, 17.50) int -> x6
;* V10 loc8 [V10 ] ( 0, 0 ) struct (16) zero-ref <System.Security.Cryptography.Asn1.AttributeAsn>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T22] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
-; V13 tmp2 [V13,T23] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
-; V14 tmp3 [V14,T24] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
-; V15 tmp4 [V15,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+; V12 tmp1 [V12,T21] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
+; V13 tmp2 [V13,T22] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
+; V14 tmp3 [V14,T23] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
+; V15 tmp4 [V15,T24] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.Pkcs.SignerInfoCollection>
-; V17 tmp6 [V17,T15] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.Pkcs.SignedCms>
+; V17 tmp6 [V17,T14] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.Pkcs.SignedCms>
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp8 [V19,T17] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
-;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V21 tmp10 [V21 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V22 tmp11 [V22,T02] ( 5, 14 ) ref -> x2 "field V10.AttrType (fldOffset=0x0)" P-INDEP
-; V23 tmp12 [V23,T07] ( 3, 6.50) ref -> [fp+0x18] spill-single-def "field V10.AttrValues (fldOffset=0x8)" P-INDEP
-; V24 tmp13 [V24,T16] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V25 tmp14 [V25,T09] ( 3, 6 ) ref -> x2 single-def "arr expr"
-; V26 tmp15 [V26,T00] ( 3, 24 ) byref -> x0 "BlockOp address local"
+;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
+; V20 tmp9 [V20,T03] ( 2, 8 ) int -> x8 "spilling unroll qmark"
+; V21 tmp10 [V21,T02] ( 6, 15 ) ref -> x8 "field V10.AttrType (fldOffset=0x0)" P-INDEP
+; V22 tmp11 [V22,T08] ( 3, 6.50) ref -> x7 "field V10.AttrValues (fldOffset=0x8)" P-INDEP
+; V23 tmp12 [V23,T15] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
+; V24 tmp13 [V24,T09] ( 3, 6 ) ref -> x1 single-def "arr expr"
+; V25 tmp14 [V25,T00] ( 3, 24 ) byref -> x7 "BlockOp address local"
+; V26 tmp15 [V26,T25] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V27 tmp16 [V27,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V28 tmp17 [V28,T27] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V29 tmp18 [V29,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V30 tmp19 [V30,T29] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V31 cse0 [V31,T10] ( 3, 6 ) int -> x0 "CSE #06: aggressive"
-; V32 cse1 [V32,T08] ( 3, 6.25) ref -> x28 hoist "CSE #03: aggressive"
-; V33 cse2 [V33,T05] ( 5, 7 ) int -> x27 "CSE #07: aggressive"
-; V34 cse3 [V34,T11] ( 3, 6 ) int -> x1 "CSE #04: moderate"
-; V35 cse4 [V35,T20] ( 3, 3 ) ref -> x21 "CSE #02: moderate"
+; V30 cse0 [V30,T10] ( 3, 6 ) int -> x8 "CSE #04: aggressive"
+; V31 cse1 [V31,T06] ( 5, 7 ) int -> x20 "CSE #05: aggressive"
+; V32 cse2 [V32,T18] ( 3, 3 ) ref -> x1 "CSE #02: moderate"
+; V33 rat0 [V33,T20] ( 3, 12 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M28540_IG01:
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x20, x0
mov w19, w1
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M28540_IG02:
- tbnz w19, #31, G_M28540_IG19
+ tbnz w19, #31, G_M28540_IG18
ldr x0, [x20, #0x30]
movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.Pkcs.SignedCms:get_SignerInfos():System.Security.Cryptography.Pkcs.SignerInfoCollection:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x0, [x0, #0x08]
mov x1, x20
movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.Pkcs.SignerInfoCollection:FindIndexForSigner(System.Security.Cryptography.Pkcs.SignerInfo[],System.Security.Cryptography.Pkcs.SignerInfo):int
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- tbnz w0, #31, G_M28540_IG18
- ldr x2, [x20, #0x30]
- ldr x2, [x2, #0x40]
- ldr w1, [x2, #0x08]
- cmp w0, w1
- bhs G_M28540_IG20
- mov w1, #184
+ tbnz w0, #31, G_M28540_IG17
+ ldr x1, [x20, #0x30]
+ ldr x1, [x1, #0x40]
+ ldr w2, [x1, #0x08]
+ cmp w0, w2
+ bhs G_M28540_IG19
+ mov w2, #184
mov x3, #16
- umaddl x0, w0, w1, x3
- add x20, x2, x0
- ldr x21, [x20]
- cbz x21, G_M28540_IG17
- movn w22, #0
- movn w23, #0
- mov w24, wzr
- mov w25, wzr
- mov w26, wzr
- ldr w27, [x21, #0x08]
- cmp w27, #0
- ble G_M28540_IG08
+ umaddl x0, w0, w2, x3
+ add x0, x1, x0
+ ldr x1, [x0]
+ cbz x1, G_M28540_IG16
+ movn w2, #0
+ movn w3, #0
+ mov w4, wzr
+ mov w5, wzr
+ mov w6, wzr
+ ldr w20, [x1, #0x08]
+ cmp w20, #0
+ ble G_M28540_IG07
+ align [0 bytes for IG03]
+ align [0 bytes]
+ align [0 bytes]
+ align [0 bytes]
;; size=140 bbWeight=1 PerfScore 50.50
G_M28540_IG03:
- movz x28, #0xD1FFAB1E
- movk x28, #0xD1FFAB1E LSL #16
- movk x28, #0xD1FFAB1E LSL #32
- ;; size=12 bbWeight=0.25 PerfScore 0.38
+ ubfiz x7, x6, #4, #32
+ add x7, x7, #16
+ add x7, x1, x7
+ ldp x8, x7, [x7]
+ cbz x8, G_M28540_IG06
+ ;; size=20 bbWeight=4 PerfScore 28.00
G_M28540_IG04:
- ubfiz x0, x26, #4, #32
- add x0, x0, #16
- add x0, x21, x0
- ldp x2, x3, [x0]
- str x3, [fp, #0x18] // [V23 tmp12]
- cmp x2, x28
- beq G_M28540_IG06
- ;; size=28 bbWeight=4 PerfScore 34.00
+ ldr w9, [x8, #0x08]
+ cmp w9, #20
+ bne G_M28540_IG06
+ ;; size=12 bbWeight=1 PerfScore 4.50
G_M28540_IG05:
- cbz x2, G_M28540_IG07
- ldr w1, [x2, #0x08]
- cmp w1, #20
- bne G_M28540_IG07
- add x0, x2, #12
- lsl w2, w1, #1
- mov w2, w2
- add x1, x28, #12
- movz x4, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
- cbz w0, G_M28540_IG07
- ;; size=56 bbWeight=2 PerfScore 29.00
+ ldr q16, [x8, #0x0C]
+ ldr q17, [x8, #0x1C]
+ ldr q18, [@RWD00]
+ eor v16.2d, v16.2d, v18.2d
+ ldr q18, [@RWD16]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x8, #0x24]
+ ldr q18, [@RWD32]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x8, v16.d[0]
+ cmp x8, #0
+ cset x8, eq
+ cbz w8, G_M28540_IG06
+ ldr w8, [x7, #0x08]
+ add w8, w8, w5
+ cmp w19, w8
+ blt G_M28540_IG10
+ sxtw w5, w8
+ ;; size=84 bbWeight=2 PerfScore 54.00
G_M28540_IG06:
- ldr x3, [fp, #0x18] // [V23 tmp12]
- ldr w0, [x3, #0x08]
- add w0, w0, w25
- cmp w19, w0
- blt G_M28540_IG11
- sxtw w25, w0
- ;; size=24 bbWeight=2 PerfScore 15.00
-G_M28540_IG07:
- add w26, w26, #1
- cmp w27, w26
- bgt G_M28540_IG04
+ add w6, w6, #1
+ cmp w20, w6
+ bgt G_M28540_IG03
;; size=12 bbWeight=4 PerfScore 8.00
-G_M28540_IG08:
- tbnz w22, #31, G_M28540_IG16
- cbz w24, G_M28540_IG12
+G_M28540_IG07:
+ tbnz w2, #31, G_M28540_IG15
+ cbz w4, G_M28540_IG11
;; size=8 bbWeight=1 PerfScore 2.00
-G_M28540_IG09:
- cmp w27, #1
- bne G_M28540_IG14
- str xzr, [x20]
+G_M28540_IG08:
+ cmp w20, #1
+ bne G_M28540_IG13
+ str xzr, [x0]
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M28540_IG10:
- ldp x27, x28, [sp, #0x60]
- ldp x25, x26, [sp, #0x50]
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x70
+G_M28540_IG09:
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M28540_IG11:
- sxtw w22, w26
- sub w23, w19, w25
- cbnz w23, G_M28540_IG08
- ldr w0, [x3, #0x08]
- mov w1, #1
- cmp w0, #1
- csel w24, w24, w1, ne
- b G_M28540_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M28540_IG10:
+ sxtw w2, w6
+ sub w3, w19, w5
+ cbnz w3, G_M28540_IG07
+ ldr w5, [x7, #0x08]
+ mov w6, #1
+ cmp w5, #1
+ csel w4, w4, w6, ne
+ b G_M28540_IG07
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M28540_IG12:
- cmp w22, w27
- bhs G_M28540_IG20
- ubfiz x0, x22, #4, #32
+G_M28540_IG11:
+ cmp w2, w20
+ bhs G_M28540_IG19
+ ubfiz x0, x2, #4, #32
add x0, x0, #16
- add x0, x21, x0
+ add x0, x1, x0
add x0, x0, #8
- mov w1, w23
+ mov w1, w3
movz x2, #0xD1FFAB1E // code for Internal.Cryptography.PkcsHelpers:RemoveAt[System.ReadOnlyMemory`1[ubyte]](byref,int)
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=44 bbWeight=0.50 PerfScore 4.50
-G_M28540_IG13:
- ldp x27, x28, [sp, #0x60]
- ldp x25, x26, [sp, #0x50]
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x70
+G_M28540_IG12:
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x2
- ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M28540_IG14:
- mov x0, x20
- mov w1, w22
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M28540_IG13:
+ mov w1, w2
movz x2, #0xD1FFAB1E // code for Internal.Cryptography.PkcsHelpers:RemoveAt[System.Security.Cryptography.Asn1.AttributeAsn](byref,int)
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
- ;; size=24 bbWeight=0.50 PerfScore 2.75
-G_M28540_IG15:
- ldp x27, x28, [sp, #0x60]
- ldp x25, x26, [sp, #0x50]
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x70
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M28540_IG14:
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x2
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M28540_IG15:
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ mov x19, x0
+ movz x0, #0xD1FFAB1E // code for System.SR:get_Cryptography_Cms_NoSignerAtIndex():System.String
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ blr x0
+ mov x1, x0
+ mov x0, x19
+ movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ mov x0, x19
+ bl CORINFO_HELP_THROW
+ brk #0
+ ;; size=80 bbWeight=0 PerfScore 0.00
G_M28540_IG16:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x19, x0
movz x0, #0xD1FFAB1E // code for System.SR:get_Cryptography_Cms_NoSignerAtIndex():System.String
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
mov x1, x0
mov x0, x19
movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x0, x19
bl CORINFO_HELP_THROW
brk #0
;; size=80 bbWeight=0 PerfScore 0.00
G_M28540_IG17:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x19, x0
- movz x0, #0xD1FFAB1E // code for System.SR:get_Cryptography_Cms_NoSignerAtIndex():System.String
+ movz x0, #0xD1FFAB1E // code for System.SR:get_Cryptography_Cms_SignerNotFound():System.String
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
mov x1, x0
mov x0, x19
movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x0, x19
bl CORINFO_HELP_THROW
brk #0
;; size=80 bbWeight=0 PerfScore 0.00
G_M28540_IG18:
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- mov x19, x0
- movz x0, #0xD1FFAB1E // code for System.SR:get_Cryptography_Cms_SignerNotFound():System.String
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- blr x0
- mov x1, x0
- mov x0, x19
- movz x2, #0xD1FFAB1E // code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- mov x0, x19
- bl CORINFO_HELP_THROW
- brk #0
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M28540_IG19:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x19, x0
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_STRCNS
mov x1, x0
mov x0, x19
movz x2, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:.ctor(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x0, x19
bl CORINFO_HELP_THROW
brk #0
;; size=80 bbWeight=0 PerfScore 0.00
-G_M28540_IG20:
+G_M28540_IG19:
bl CORINFO_HELP_RNGCHKFAIL
brk #0
;; size=8 bbWeight=0 PerfScore 0.00
+RWD00 dq 002E0032002E0031h, 002E003000340038h
+RWD16 dq 0035003300310031h, 0031002E00390034h
+RWD32 dq 0031002E00390034h, 0036002E0039002Eh
-; Total bytes of code 840, prolog size 36, PerfScore 169.12, instruction count 210, allocated bytes for code 840 (MethodHash=e20b9083) for method System.Security.Cryptography.Pkcs.SignerInfo:RemoveCounterSignature(int):this (FullOpts)
+
+; Total bytes of code 768, prolog size 20, PerfScore 167.00, instruction count 196, allocated bytes for code 768 (MethodHash=e20b9083) for method System.Security.Cryptography.Pkcs.SignerInfo:RemoveCounterSignature(int):this (FullOpts)
; ============================================================ -36 (-15.79 % of base) - System.Configuration.ClientConfigurationSystem:IsSectionUsedInInit(System.String):ubyte:this ; Assembly listing for method System.Configuration.ClientConfigurationSystem:IsSectionUsedInInit(System.String):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 2.50) ref -> x20 this class-hnd single-def <System.Configuration.ClientConfigurationSystem>
-; V01 arg1 [V01,T00] ( 9, 5.50) ref -> x19 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Configuration.ClientConfigurationSystem>
+; V01 arg1 [V01,T00] ( 10, 5.75) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-; V04 tmp2 [V04,T04] ( 3, 2 ) int -> x0 "spilling unroll qmark"
-; V05 tmp3 [V05,T05] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V07 cse0 [V07,T02] ( 5, 2.50) int -> x21 multi-def "CSE #01: aggressive"
-; V08 cse1 [V08,T03] ( 3, 2.50) ref -> x1 "CSE #02: aggressive"
-; V09 rat0 [V09,T06] ( 3, 1.50) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V04 tmp2 [V04,T02] ( 3, 2 ) int -> x0 "spilling unroll qmark"
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
+; V06 tmp4 [V06,T03] ( 2, 2 ) int -> x2 "spilling unroll qmark"
+; V07 rat0 [V07,T04] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V08 rat1 [V08,T05] ( 3, 1.50) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M6934_IG01:
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0
- mov x19, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M6934_IG02:
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x19, x1
- beq G_M6934_IG04
- ;; size=20 bbWeight=1 PerfScore 3.00
+ cbz x1, G_M6934_IG06
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M6934_IG03:
- cbz x19, G_M6934_IG06
- ldr w21, [x19, #0x08]
- cmp w21, #18
+ ldr w2, [x1, #0x08]
+ cmp w2, #18
bne G_M6934_IG06
- add x0, x19, #12
- lsl w2, w21, #1
- mov w2, w2
- add x1, x1, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbz w0, G_M6934_IG06
- ;; size=56 bbWeight=0.50 PerfScore 7.25
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M6934_IG04:
+ ldr q16, [x1, #0x0C]
+ ldr q17, [x1, #0x1C]
+ ldr q18, [@RWD00]
+ eor v16.2d, v16.2d, v18.2d
+ ldr q18, [@RWD16]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x1, #0x20]
+ ldr q18, [@RWD32]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x2, v16.d[0]
+ cmp x2, #0
+ cset x2, eq
+ cbz w2, G_M6934_IG06
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.00
G_M6934_IG05:
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M6934_IG06:
- ldrb w0, [x20, #0x30]
+ ldrb w0, [x0, #0x30]
cbnz w0, G_M6934_IG08
mov w0, wzr
;; size=12 bbWeight=0.50 PerfScore 2.25
G_M6934_IG07:
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M6934_IG08:
- ldr w21, [x19, #0x08]
- cmp w21, #11
+ ldr w0, [x1, #0x08]
+ cmp w0, #11
bge G_M6934_IG10
;; size=12 bbWeight=0.50 PerfScore 2.25
G_M6934_IG09:
mov w0, wzr
b G_M6934_IG11
;; size=8 bbWeight=0.25 PerfScore 0.38
G_M6934_IG10:
- ldr q16, [x19, #0x0C]
- ldr q17, [@RWD00]
+ ldr q16, [x1, #0x0C]
+ ldr q17, [@RWD48]
eor v16.2d, v16.2d, v17.2d
- ldr q17, [x19, #0x12]
- ldr q18, [@RWD16]
+ ldr q17, [x1, #0x12]
+ ldr q18, [@RWD64]
eor v17.2d, v17.2d, v18.2d
orr v16.2d, v16.2d, v17.2d
umaxp v16.4s, v16.4s, v16.4s
umov x0, v16.d[0]
cmp x0, #0
cset x0, eq
;; size=44 bbWeight=0.25 PerfScore 3.62
G_M6934_IG11:
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-RWD00 dq 0074007300790073h, 006E002E006D0065h
-RWD16 dq 002E006D00650074h, 002F00740065006Eh
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+RWD00 dq 0074007300790073h, 0064002E006D0065h
+RWD16 dq 006E006700610069h, 006900740073006Fh
+RWD32 dq 0073006F006E0067h, 0073006300690074h
+RWD48 dq 0074007300790073h, 006E002E006D0065h
+RWD64 dq 002E006D00650074h, 002F00740065006Eh
-; Total bytes of code 228, prolog size 16, PerfScore 31.00, instruction count 57, allocated bytes for code 228 (MethodHash=0d81e4e9) for method System.Configuration.ClientConfigurationSystem:IsSectionUsedInInit(System.String):ubyte:this (FullOpts)
+; Total bytes of code 192, prolog size 8, PerfScore 26.12, instruction count 48, allocated bytes for code 192 (MethodHash=0d81e4e9) for method System.Configuration.ClientConfigurationSystem:IsSectionUsedInInit(System.String):ubyte:this (FullOpts)
; ============================================================ -36 (-7.03 % of base) - System.Security.Cryptography.X509Certificates.X509Certificate2:get_PrivateKey():System.Security.Cryptography.AsymmetricAlgorithm:this ; Assembly listing for method System.Security.Cryptography.X509Certificates.X509Certificate2:get_PrivateKey():System.Security.Cryptography.AsymmetricAlgorithm:this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 12 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 6.50) ref -> x19 this class-hnd single-def <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V01 loc0 [V01,T06] ( 3, 1.50) ref -> x15 class-hnd <System.Security.Cryptography.AsymmetricAlgorithm>
-; V02 loc1 [V02,T01] ( 9, 4.50) ref -> x21 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T08] ( 3, 1.50) ref -> x15 class-hnd <System.Security.Cryptography.AsymmetricAlgorithm>
+; V02 loc1 [V02,T01] ( 11, 5 ) ref -> x0 class-hnd exact single-def <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
-; V05 tmp2 [V05,T09] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V07 tmp4 [V07,T10] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-;* V08 tmp5 [V08 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
+; V06 tmp3 [V06,T06] ( 2, 2 ) int -> x1 "spilling unroll qmark"
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
+; V08 tmp5 [V08,T07] ( 2, 2 ) int -> x0 "spilling unroll qmark"
; V09 tmp6 [V09,T04] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V10 tmp7 [V10,T05] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V11 tmp8 [V11,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V12 cse0 [V12,T03] ( 4, 2 ) byref -> x20 "CSE #08: aggressive"
-; V13 cse1 [V13,T02] ( 6, 3 ) int -> x22 multi-def "CSE #01: aggressive"
-; V14 cse2 [V14,T07] ( 3, 1.50) ref -> x1 "CSE #02: moderate"
-; V15 cse3 [V15,T08] ( 3, 1.50) ref -> x1 "CSE #05: moderate"
+; V12 cse0 [V12,T02] ( 4, 2 ) ref -> x0 multi-def "CSE #06: aggressive"
+; V13 cse1 [V13,T03] ( 4, 2 ) byref -> x20 "CSE #08: aggressive"
+; V14 rat0 [V14,T09] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V15 rat1 [V15,T10] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
G_M27222_IG01:
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp
mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M27222_IG02:
mov x0, x19
movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Certificate:ThrowIfInvalid():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
mov x0, x19
movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X509Certificate2:get_HasPrivateKey():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- cbz w0, G_M27222_IG10
+ cbz w0, G_M27222_IG13
;; size=52 bbWeight=1 PerfScore 13.00
G_M27222_IG03:
add x20, x19, #128
ldapr x0, [x20]
- cbnz x0, G_M27222_IG08
+ cbnz x0, G_M27222_IG11
mov x0, x19
ldr x1, [x19]
ldr x1, [x1, #0x58]
ldr x1, [x1]
blr x1
- mov x21, x0
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x21, x1
- beq G_M27222_IG04
- cbz x21, G_M27222_IG05
- ldr w22, [x21, #0x08]
- cmp w22, #20
- bne G_M27222_IG05
- lsl w2, w22, #1
- mov w2, w2
- add x1, x1, #12
- add x0, x21, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbz w0, G_M27222_IG05
- ;; size=112 bbWeight=0.50 PerfScore 16.50
+ cbz x0, G_M27222_IG05
+ ;; size=36 bbWeight=0.50 PerfScore 8.00
G_M27222_IG04:
+ ldr w1, [x0, #0x08]
+ cmp w1, #20
+ beq G_M27222_IG08
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
+G_M27222_IG05:
+ cbz x0, G_M27222_IG15
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M27222_IG06:
+ ldr w11, [x0, #0x08]
+ cmp w11, #17
+ bne G_M27222_IG15
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
+G_M27222_IG07:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [x0, #0x1C]
+ ldr q18, [@RWD00]
+ eor v16.2d, v16.2d, v18.2d
+ ldr q18, [@RWD16]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x1E]
+ ldr q18, [@RWD32]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x0, v16.d[0]
+ cmp x0, #0
+ cset x0, eq
+ cbnz w0, G_M27222_IG09
+ b G_M27222_IG15
+ ;; size=68 bbWeight=0.50 PerfScore 11.25
+G_M27222_IG08:
+ ldr q16, [x0, #0x0C]
+ ldr q17, [x0, #0x1C]
+ ldr q18, [@RWD00]
+ eor v16.2d, v16.2d, v18.2d
+ ldr q18, [@RWD48]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ ldr q17, [x0, #0x24]
+ ldr q18, [@RWD64]
+ eor v17.2d, v17.2d, v18.2d
+ orr v16.2d, v16.2d, v17.2d
+ umaxp v16.4s, v16.4s, v16.4s
+ umov x1, v16.d[0]
+ cmp x1, #0
+ cset x1, eq
+ cbz w1, G_M27222_IG06
ldr x1, [x19, #0x48]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTINTERFACE
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
movz x11, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.ICertificatePal:GetRSAPrivateKey():System.Security.Cryptography.RSA:this
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
ldr xip0, [x11]
blr xip0
mov x15, x0
- b G_M27222_IG07
- ;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M27222_IG05:
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x21, x1
- beq G_M27222_IG06
- cbz x21, G_M27222_IG12
- ldr w22, [x21, #0x08]
- cmp w22, #17
- bne G_M27222_IG12
- lsl w2, w22, #1
- mov w2, w2
- add x1, x1, #12
- add x0, x21, #12
- movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- cbz w0, G_M27222_IG12
- ;; size=76 bbWeight=0.50 PerfScore 8.75
-G_M27222_IG06:
- ldr x1, [x19, #0x48]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTINTERFACE
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
+ b G_M27222_IG10
+ ;; size=128 bbWeight=0.50 PerfScore 19.25
+G_M27222_IG09:
+ ldr x0, [x19, #0x48]
movz x11, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.ICertificatePal:GetDSAPrivateKey():System.Security.Cryptography.DSA:this
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
ldr xip0, [x11]
blr xip0
mov x15, x0
- ;; size=60 bbWeight=0.50 PerfScore 8.00
-G_M27222_IG07:
+ ;; size=28 bbWeight=0.50 PerfScore 4.50
+G_M27222_IG10:
mov x14, x20
bl CORINFO_HELP_ASSIGN_REF
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M27222_IG08:
+G_M27222_IG11:
ldapr x0, [x20]
;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M27222_IG09:
- ldp x21, x22, [sp, #0x20]
+G_M27222_IG12:
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M27222_IG10:
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27222_IG13:
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M27222_IG11:
- ldp x21, x22, [sp, #0x20]
+G_M27222_IG14:
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M27222_IG12:
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27222_IG15:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x19, x0
movz x0, #0xD1FFAB1E // code for System.SR:get_NotSupported_KeyAlgorithm():System.String
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
mov x1, x0
mov x0, x19
movz x2, #0xD1FFAB1E // code for System.NotSupportedException:.ctor(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x0, x19
bl CORINFO_HELP_THROW
brk #0
;; size=80 bbWeight=0 PerfScore 0.00
+RWD00 dq 002E0032002E0031h, 002E003000340038h
+RWD16 dq 0034003000300031h, 002E0034002E0030h
+RWD32 dq 0030003400300030h, 0031002E0034002Eh
+RWD48 dq 0035003300310031h, 0031002E00390034h
+RWD64 dq 0031002E00390034h, 0031002E0031002Eh
-; Total bytes of code 512, prolog size 16, PerfScore 65.25, instruction count 128, allocated bytes for code 512 (MethodHash=92fc95a9) for method System.Security.Cryptography.X509Certificates.X509Certificate2:get_PrivateKey():System.Security.Cryptography.AsymmetricAlgorithm:this (FullOpts)
+
+; Total bytes of code 476, prolog size 12, PerfScore 67.25, instruction count 119, allocated bytes for code 476 (MethodHash=92fc95a9) for method System.Security.Cryptography.X509Certificates.X509Certificate2:get_PrivateKey():System.Security.Cryptography.AsymmetricAlgorithm:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/0860e11beb422aa0557d87ca80b0523b |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 16 minutes 42 seconds.
dotnet/runtime#109036
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: