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 X64] [hez2010] JIT: Extend escape analysis to account for arrays with non-gcref elements #804
Comments
Top method regressions138 (14.35 % of base) - System.Runtime.Serialization.DataContracts.DataContract:ComputeHash(ubyte[]):ubyte[] ; Assembly listing for method System.Runtime.Serialization.DataContracts.DataContract:ComputeHash(ubyte[]):ubyte[] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T23] ( 6, 23 ) ref -> rbx class-hnd single-def <ubyte[]>
-; V01 loc0 [V01,T26] ( 2, 16.84) ref -> r15 class-hnd exact single-def <int[]>
-; V02 loc1 [V02,T27] ( 2, 16.84) ref -> [rbp-0x50] class-hnd exact spill-single-def <uint[]>
-; V03 loc2 [V03,T33] ( 5, 12 ) int -> [rbp-0x2C] spill-single-def
-; V04 loc3 [V04,T31] ( 8, 14 ) int -> [rbp-0x30]
-; V05 loc4 [V05,T32] ( 6, 12 ) int -> [rbp-0x34]
-; V06 loc5 [V06,T38] ( 4, 6 ) int -> [rbp-0x38]
-; V07 loc6 [V07,T39] ( 4, 6 ) int -> [rbp-0x3C]
-; V08 loc7 [V08,T25] ( 7, 23 ) int -> [rbp-0x40]
-; V09 loc8 [V09,T08] ( 12, 63.68) ref -> r10 class-hnd <ubyte[]>
-; V10 loc9 [V10,T11] ( 12, 51 ) int -> [rbp-0x44]
-; V11 loc10 [V11,T16] ( 4, 36.68) int -> registers
-; V12 loc11 [V12,T01] ( 14,155.48) int -> registers
-; V13 loc12 [V13,T04] ( 9, 82.20) int -> registers
-; V14 loc13 [V14,T06] ( 9, 74.28) int -> registers
-; V15 loc14 [V15,T12] ( 5, 47.52) int -> r12
-; V16 loc15 [V16,T02] ( 10, 95.04) int -> rax
+;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref class-hnd exact <int[]>
+;* V02 loc1 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact <uint[]>
+; V03 loc2 [V03,T31] ( 5, 12 ) int -> [rbp-0x2C] spill-single-def
+; V04 loc3 [V04,T29] ( 8, 14 ) int -> r13
+; V05 loc4 [V05,T30] ( 6, 12 ) int -> [rbp-0x30]
+; V06 loc5 [V06,T36] ( 4, 6 ) int -> [rbp-0x34]
+; V07 loc6 [V07,T37] ( 4, 6 ) int -> [rbp-0x38]
+; V08 loc7 [V08,T25] ( 7, 23 ) int -> [rbp-0x3C]
+; V09 loc8 [V09,T07] ( 12, 64 ) ref -> r8 class-hnd <ubyte[]>
+; V10 loc9 [V10,T12] ( 12, 51.16) int -> [rbp-0x40]
+; V11 loc10 [V11,T16] ( 4, 37 ) int -> registers
+; V12 loc11 [V12,T01] ( 14,157 ) int -> registers
+; V13 loc12 [V13,T04] ( 9, 83 ) int -> registers
+; V14 loc13 [V14,T06] ( 9, 75 ) int -> registers
+; V15 loc14 [V15,T13] ( 5, 48 ) int -> rax
+; V16 loc15 [V16,T02] ( 10, 96 ) int -> r14
; V17 loc16 [V17,T05] ( 12, 82.16) int -> rsi
-;* V18 loc17 [V18,T44] ( 0, 0 ) int -> zero-ref
+;* V18 loc17 [V18,T40] ( 0, 0 ) int -> zero-ref
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V20 tmp1 [V20,T40] ( 3, 6 ) ref -> r15 class-hnd exact single-def "dup spill" <int[]>
-; V21 tmp2 [V21,T41] ( 3, 6 ) ref -> r14 class-hnd exact single-def "dup spill" <uint[]>
-; V22 tmp3 [V22,T09] ( 2, 63.36) int -> r8 "impSpillLclRefs"
-; V23 tmp4 [V23,T10] ( 2, 63.36) int -> rdi "impAppendStmt"
+;* V20 tmp1 [V20 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <int[]>
+;* V21 tmp2 [V21 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <uint[]>
+; V22 tmp3 [V22,T09] ( 2, 64 ) int -> r11 "impSpillLclRefs"
+; V23 tmp4 [V23,T10] ( 2, 64 ) int -> rdi "impAppendStmt"
;* V24 tmp5 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V25 tmp6 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V26 tmp7 [V26,T07] ( 4, 64 ) int -> rax "Strict ordering of exceptions for Array store"
-; V27 tmp8 [V27,T34] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V28 tmp9 [V28,T35] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V29 tmp10 [V29,T36] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V30 tmp11 [V30,T37] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V31 tmp12 [V31,T28] ( 8, 16 ) ref -> rax class-hnd exact single-def "dup spill" <ubyte[]>
-;* V32 tmp13 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V34 tmp15 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
-; V35 tmp16 [V35,T20] ( 2, 31.68) byref -> r14 "Inlining Arg"
-; V36 tmp17 [V36,T21] ( 2, 31.68) int -> r12 "Inlining Arg"
-;* V37 tmp18 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V38 tmp19 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V39 tmp20 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp22 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V26 tmp7 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <ubyte[]>
+; V27 tmp8 [V27,T08] ( 4, 64 ) int -> rax "Strict ordering of exceptions for Array store"
+; V28 tmp9 [V28,T32] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
+; V29 tmp10 [V29,T33] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
+; V30 tmp11 [V30,T34] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
+; V31 tmp12 [V31,T35] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
+; V32 tmp13 [V32,T26] ( 8, 16 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
+;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
+;* V34 tmp15 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V35 tmp16 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
+; V36 tmp17 [V36,T20] ( 2, 32 ) byref -> r12 "Inlining Arg"
+; V37 tmp18 [V37,T21] ( 2, 32 ) int -> rax "Inlining Arg"
+;* V38 tmp19 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V39 tmp20 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V40 tmp21 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V41 tmp22 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V42 tmp23 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V43 tmp24 [V43 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
-;* V44 tmp25 [V44 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-;* V45 tmp26 [V45 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
-;* V46 tmp27 [V46 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V47 tmp28 [V47,T18] ( 3, 31.68) byref -> registers "field V32._reference (fldOffset=0x0)" P-INDEP
-; V48 tmp29 [V48,T19] ( 3, 31.68) int -> r12 "field V32._length (fldOffset=0x8)" P-INDEP
-; V49 tmp30 [V49,T29] ( 2, 15.84) byref -> r14 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V50 tmp31 [V50,T30] ( 2, 15.84) int -> r12 "field V33._length (fldOffset=0x8)" P-INDEP
-;* V51 tmp32 [V51 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
-;* V52 tmp33 [V52 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
-;* V53 tmp34 [V53 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
-;* V54 tmp35 [V54 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
-;* V55 tmp36 [V55 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V56 tmp37 [V56 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
-;* V57 tmp38 [V57 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V58 tmp39 [V58 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
-;* V59 tmp40 [V59 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
-;* V60 tmp41 [V60 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V61 tmp42 [V61,T03] ( 3, 95.04) int -> rax "index expr"
-;* V62 tmp43 [V62,T22] ( 0, 0 ) int -> zero-ref "index expr"
-; V63 cse0 [V63,T13] ( 3, 47.52) int -> rax "CSE #13: moderate"
-; V64 cse1 [V64,T14] ( 2, 31.68) int -> rax "CSE #10: moderate"
-; V65 cse2 [V65,T42] ( 3, 6 ) int -> rsi "CSE #04: conservative"
-; V66 cse3 [V66,T17] ( 12, 36 ) int -> r13 "CSE #01: moderate"
-; V67 cse4 [V67,T15] ( 3, 47.52) int -> rcx "CSE #02: moderate"
-; V68 cse5 [V68,T24] ( 3, 23.76) int -> r12 "CSE #06: moderate"
-; V69 rat0 [V69,T00] ( 15,167.32) long -> rcx "Widened IV V18"
-; V70 rat1 [V70,T43] ( 3, 6 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+;* V43 tmp24 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+; V44 tmp25 [V44 ] ( 7, 52 ) struct (80) [rbp-0x90] do-not-enreg[XSF] addr-exposed "stack allocated array temp"
+; V45 tmp26 [V45 ] ( 6, 36 ) struct (272) [rbp-0x1A0] do-not-enreg[XSF] addr-exposed "stack allocated array temp"
+;* V46 tmp27 [V46 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
+;* V47 tmp28 [V47 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
+;* V48 tmp29 [V48 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp30 [V49 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
+; V50 tmp31 [V50,T18] ( 3, 32 ) byref -> registers "field V33._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp32 [V51,T19] ( 3, 32 ) int -> registers "field V33._length (fldOffset=0x8)" P-INDEP
+; V52 tmp33 [V52,T27] ( 2, 16 ) byref -> r12 "field V34._reference (fldOffset=0x0)" P-INDEP
+; V53 tmp34 [V53,T28] ( 2, 16 ) int -> rax "field V34._length (fldOffset=0x8)" P-INDEP
+;* V54 tmp35 [V54 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
+;* V55 tmp36 [V55 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
+;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
+;* V57 tmp38 [V57 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
+;* V58 tmp39 [V58 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V59 tmp40 [V59 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
+;* V60 tmp41 [V60 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V61 tmp42 [V61 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+;* V62 tmp43 [V62 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
+;* V63 tmp44 [V63 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+; V64 tmp45 [V64,T03] ( 3, 96 ) int -> r14 "index expr"
+; V65 tmp46 [V65,T11] ( 2, 64 ) int -> rax "index expr"
+; V66 cse0 [V66,T14] ( 3, 48 ) int -> rax "CSE #10: moderate"
+; V67 cse1 [V67,T22] ( 2, 32 ) int -> r12 "CSE #11: moderate"
+; V68 cse2 [V68,T38] ( 3, 6 ) int -> rsi "CSE #04: conservative"
+; V69 cse3 [V69,T17] ( 12, 36 ) int -> r15 "CSE #01: moderate"
+; V70 cse4 [V70,T15] ( 3, 47.52) int -> rcx "CSE #02: moderate"
+; V71 cse5 [V71,T24] ( 3, 24 ) int -> rax "CSE #06: moderate"
+; V72 rat0 [V72,T00] ( 16,185 ) long -> rcx "Widened IV V18"
+; V73 rat1 [V73,T39] ( 3, 6 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 376
G_M24152_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 376
+ lea rbp, [rsp+0x1A0]
mov rbx, rdi
- ;; size=22 bbWeight=1 PerfScore 7.00
+ ;; size=28 bbWeight=1 PerfScore 7.00
G_M24152_IG02:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu32 zmmword ptr [rbp-0x90], zmm0
+ vmovdqu xmmword ptr [rbp-0x50], xmm0
mov rdi, 0xD1FFAB1E ; int[]
- mov esi, 16
- call CORINFO_HELP_NEWARR_1_VC
- mov r15, rax
+ mov qword ptr [rbp-0x90], rdi
+ mov dword ptr [rbp-0x88], 16
mov rdi, 0xD1FFAB1E ; const ptr
vmovdqu32 zmm0, zmmword ptr [rdi]
- vmovdqu32 zmmword ptr [r15+0x10], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x80], zmm0
+ ;; NOP compensation instructions of 3 bytes.
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu32 zmmword ptr [rbp-0x1A0], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x160], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x120], zmm0
+ vmovdqu32 zmmword ptr [rbp-0xE0], zmm0
+ vmovdqu xmmword ptr [rbp-0xA0], xmm0
mov rdi, 0xD1FFAB1E ; uint[]
- mov esi, 64
- call CORINFO_HELP_NEWARR_1_VC
- mov r14, rax
+ mov qword ptr [rbp-0x1A0], rdi
+ mov dword ptr [rbp-0x198], 64
mov rdi, 0xD1FFAB1E ; const ptr
vmovdqu32 zmm0, zmmword ptr [rdi]
- vmovdqu32 zmmword ptr [r14+0x10], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x190], zmm0
vmovdqu32 zmm0, zmmword ptr [rdi+0x40]
- vmovdqu32 zmmword ptr [r14+0x50], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x150], zmm0
vmovdqu32 zmm0, zmmword ptr [rdi+0x80]
- vmovdqu32 zmmword ptr [r14+0x90], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x110], zmm0
vmovdqu32 zmm0, zmmword ptr [rdi+0xC0]
- vmovdqu32 zmmword ptr [r14+0xD0], zmm0
- mov gword ptr [rbp-0x50], r14
- mov r13d, dword ptr [rbx+0x08]
- lea r12d, [r13+0x08]
- mov eax, r12d
- sar eax, 31
- and eax, 63
- add r12d, eax
- sar r12d, 6
- inc r12d
- mov dword ptr [rbp-0x2C], r12d
- mov dword ptr [rbp-0x30], 0xD1FFAB1E
+ vmovdqu32 zmmword ptr [rbp-0xD0], zmm0
+ mov r15d, dword ptr [rbx+0x08]
+ lea r14d, [r15+0x08]
+ mov r13d, r14d
+ sar r13d, 31
+ and r13d, 63
+ add r14d, r13d
+ sar r14d, 6
+ inc r14d
+ mov dword ptr [rbp-0x2C], r14d
+ mov r13d, 0xD1FFAB1E
+ mov r12d, 0xD1FFAB1E
mov dword ptr [rbp-0x34], 0xD1FFAB1E
mov dword ptr [rbp-0x38], 0xD1FFAB1E
- mov dword ptr [rbp-0x3C], 0xD1FFAB1E
- xor r9d, r9d
- test r12d, r12d
+ xor edx, edx
+ test r14d, r14d
jle G_M24152_IG24
- ;; size=224 bbWeight=1 PerfScore 46.00
+ ;; size=298 bbWeight=1 PerfScore 47.17
G_M24152_IG03:
- mov r10, rbx
+ mov r8, rbx
+ mov dword ptr [rbp-0x3C], edx
+ mov r9d, edx
+ shl r9d, 6
mov dword ptr [rbp-0x40], r9d
- mov r11d, r9d
- shl r11d, 6
- mov dword ptr [rbp-0x44], r11d
- lea edi, [r11+0x40]
- cmp r13d, edi
+ lea edi, [r9+0x40]
+ cmp r15d, edi
jge G_M24152_IG10
- ;; size=31 bbWeight=4 PerfScore 19.00
+ ;; size=30 bbWeight=4 PerfScore 19.00
G_M24152_IG04:
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 64
call CORINFO_HELP_NEWARR_1_VC
- mov r10, rax
- mov edi, dword ptr [rbp-0x44]
+ mov r8, rax
+ mov edi, dword ptr [rbp-0x40]
mov esi, edi
- cmp r13d, edi
+ cmp r15d, edi
jle SHORT G_M24152_IG07
;; size=33 bbWeight=2 PerfScore 8.50
G_M24152_IG05:
test edi, edi
jl G_M24152_IG13
- align [2 bytes for IG06]
- ;; size=10 bbWeight=1 PerfScore 1.50
+ align [3 bytes for IG06]
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M24152_IG06:
mov eax, esi
movzx rax, byte ptr [rbx+rax+0x10]
mov ecx, esi
sub ecx, edi
cmp ecx, 64
jae G_M24152_IG28
- mov byte ptr [r10+rcx+0x10], al
+ mov byte ptr [r8+rcx+0x10], al
inc esi
- cmp r13d, esi
+ cmp r15d, esi
jg SHORT G_M24152_IG06
;; size=32 bbWeight=15.84 PerfScore 102.96
G_M24152_IG07:
- cmp r13d, edi
+ cmp r15d, edi
jl SHORT G_M24152_IG08
- mov esi, r13d
+ mov esi, r15d
sub esi, edi
cmp esi, 64
jae G_M24152_IG28
mov edi, esi
- mov byte ptr [r10+rdi+0x10], 128
+ mov byte ptr [r8+rdi+0x10], 128
;; size=27 bbWeight=2 PerfScore 8.50
G_M24152_IG08:
- lea edi, [r12-0x01]
- mov esi, dword ptr [rbp-0x40]
+ lea edi, [r14-0x01]
+ mov esi, dword ptr [rbp-0x3C]
cmp esi, edi
jne SHORT G_M24152_IG09
- lea edi, [8*r13]
+ lea edi, [8*r15]
movzx rdi, dil
- mov byte ptr [r10+0x48], dil
- mov edi, r13d
+ mov byte ptr [r8+0x48], dil
+ mov edi, r15d
sar edi, 5
movzx rdi, dil
- mov byte ptr [r10+0x49], dil
- mov edi, r13d
+ mov byte ptr [r8+0x49], dil
+ mov edi, r15d
sar edi, 13
movzx rdi, dil
- mov byte ptr [r10+0x4A], dil
- mov edi, r13d
+ mov byte ptr [r8+0x4A], dil
+ mov edi, r15d
sar edi, 21
movzx rdi, dil
- mov byte ptr [r10+0x4B], dil
- ;; size=70 bbWeight=2 PerfScore 21.00
+ mov byte ptr [r8+0x4B], dil
+ ;; size=69 bbWeight=2 PerfScore 21.00
G_M24152_IG09:
xor edi, edi
- mov dword ptr [rbp-0x44], edi
- mov dword ptr [rbp-0x40], esi
- mov r12d, dword ptr [rbp-0x2C]
+ mov dword ptr [rbp-0x40], edi
+ mov dword ptr [rbp-0x3C], esi
+ mov r14d, dword ptr [rbp-0x2C]
;; size=12 bbWeight=2 PerfScore 6.50
G_M24152_IG10:
- mov eax, dword ptr [rbp-0x30]
- mov edi, eax
- mov ecx, dword ptr [rbp-0x34]
- mov esi, ecx
- mov edx, dword ptr [rbp-0x38]
- mov r8d, dword ptr [rbp-0x3C]
+ mov edi, r13d
+ mov dword ptr [rbp-0x30], r12d
+ mov esi, r12d
+ mov eax, dword ptr [rbp-0x34]
+ mov r10d, eax
+ mov ecx, dword ptr [rbp-0x38]
+ mov r11d, ecx
xor ecx, ecx
align [0 bytes for IG11]
- ;; size=19 bbWeight=1 PerfScore 4.75
+ ;; size=24 bbWeight=1 PerfScore 4.25
G_M24152_IG11:
cmp ecx, 16
jge SHORT G_M24152_IG14
- ;; size=5 bbWeight=15.84 PerfScore 19.80
+ ;; size=5 bbWeight=16 PerfScore 20.00
G_M24152_IG12:
- mov r12d, esi
- and r12d, edx
- andn eax, esi, r8d
- or r12d, eax
- mov eax, ecx
+ mov eax, esi
+ and eax, r10d
+ andn r14d, esi, r11d
+ or eax, r14d
+ mov r14d, ecx
jmp SHORT G_M24152_IG17
- ;; size=18 bbWeight=7.92 PerfScore 27.72
+ ;; size=18 bbWeight=8 PerfScore 28.00
G_M24152_IG13:
mov eax, esi
movzx rax, byte ptr [rbx+rax+0x10]
mov ecx, esi
sub ecx, edi
cmp ecx, 64
jae G_M24152_IG28
mov ecx, esi
sub ecx, edi
- mov byte ptr [r10+rcx+0x10], al
+ mov byte ptr [r8+rcx+0x10], al
inc esi
- cmp r13d, esi
+ cmp r15d, esi
jg SHORT G_M24152_IG13
jmp G_M24152_IG07
;; size=41 bbWeight=0.16 PerfScore 1.44
G_M24152_IG14:
cmp ecx, 32
jl SHORT G_M24152_IG16
cmp ecx, 48
jl SHORT G_M24152_IG15
- mov r12d, r8d
- not r12d
- or r12d, esi
- xor r12d, edx
- lea eax, [8*rcx]
- sub eax, ecx
+ mov eax, r11d
+ not eax
+ or eax, esi
+ xor eax, r10d
+ lea r14d, [8*rcx]
+ sub r14d, ecx
jmp SHORT G_M24152_IG17
- ;; size=33 bbWeight=7.92 PerfScore 49.50
+ ;; size=33 bbWeight=8 PerfScore 50.00
G_M24152_IG15:
- mov r12d, esi
- xor r12d, edx
- xor r12d, r8d
- lea eax, [rcx+2*rcx]
- add eax, 5
+ mov eax, esi
+ xor eax, r10d
+ xor eax, r11d
+ lea r14d, [rcx+2*rcx]
+ add r14d, 5
jmp SHORT G_M24152_IG17
- ;; size=17 bbWeight=7.92 PerfScore 27.72
+ ;; size=18 bbWeight=8 PerfScore 28.00
G_M24152_IG16:
- mov r12d, esi
- and r12d, r8d
- andn eax, r8d, edx
- or r12d, eax
- lea eax, [rcx+4*rcx]
- inc eax
- ;; size=19 bbWeight=7.92 PerfScore 15.84
+ mov eax, esi
+ and eax, r11d
+ andn r14d, r11d, r10d
+ or eax, r14d
+ lea r14d, [rcx+4*rcx]
+ inc r14d
+ ;; size=20 bbWeight=8 PerfScore 16.00
G_M24152_IG17:
- and eax, 15
- mov r11d, dword ptr [rbp-0x44]
- lea eax, [r11+4*rax]
- add edi, r12d
- add edi, dword ptr [r14+4*rcx+0x10]
- test r10, r10
+ and r14d, 15
+ mov r9d, dword ptr [rbp-0x40]
+ lea r14d, [r9+4*r14]
+ add edi, eax
+ lea rax, [rbp-0x1A0]
+ cmp ecx, dword ptr [rax+0x08]
+ jae G_M24152_IG28
+ lea rax, [rbp-0x1A0]
+ add edi, dword ptr [rax+4*rcx+0x10]
+ test r8, r8
je SHORT G_M24152_IG19
- ;; size=24 bbWeight=15.84 PerfScore 99.00
+ ;; size=46 bbWeight=16 PerfScore 180.00
G_M24152_IG18:
- mov r12d, dword ptr [r10+0x08]
- cmp r12d, eax
+ mov eax, dword ptr [r8+0x08]
+ cmp eax, r14d
jb G_M24152_IG27
+ mov r12d, r14d
+ lea r12, bword ptr [r8+r12+0x10]
+ sub eax, r14d
mov r14d, eax
- lea r14, bword ptr [r10+r14+0x10]
- sub r12d, eax
- mov rax, r14
+ mov rax, r12
jmp SHORT G_M24152_IG20
- ;; size=29 bbWeight=7.92 PerfScore 55.44
+ ;; size=32 bbWeight=8 PerfScore 58.00
G_M24152_IG19:
- test eax, eax
+ test r14d, r14d
jne G_M24152_IG27
xor rax, rax
- xor r12d, r12d
- ;; size=13 bbWeight=7.92 PerfScore 13.86
+ xor r14d, r14d
+ ;; size=14 bbWeight=8 PerfScore 14.00
G_M24152_IG20:
- cmp r12d, 4
+ cmp r14d, 4
jl G_M24152_IG26
add edi, dword ptr [rax]
mov eax, ecx
and eax, 3
- mov r12d, ecx
- sar r12d, 2
- and r12d, -4
- or eax, r12d
- cmp eax, 16
+ mov r14d, ecx
+ sar r14d, 2
+ and r14d, -4
+ or eax, r14d
+ mov r14d, eax
+ lea r12, [rbp-0x90]
+ mov r12d, dword ptr [r12+0x08]
+ cmp r14d, r12d
jae G_M24152_IG28
- mov eax, dword ptr [r15+4*rax+0x10]
- shlx r12d, edi, eax
+ lea r12, [rbp-0x90]
+ mov r14d, dword ptr [r12+4*r14+0x10]
+ shlx r14d, edi, r14d
+ lea r12, [rbp-0x90]
+ mov eax, dword ptr [r12+4*rax+0x10]
neg eax
add eax, 32
shrx edi, edi, eax
- or edi, r12d
+ or edi, r14d
add edi, esi
inc ecx
cmp ecx, 64
- mov dword ptr [rbp-0x44], r11d
- mov eax, edx
- mov edx, esi
+ mov dword ptr [rbp-0x40], r9d
+ mov eax, esi
mov esi, edi
- mov edi, r8d
- mov r8d, eax
- mov r12d, dword ptr [rbp-0x2C]
- mov r14, gword ptr [rbp-0x50]
+ mov edi, r11d
+ mov r11d, r10d
+ mov r10d, eax
+ mov r14d, dword ptr [rbp-0x2C]
jl G_M24152_IG11
- ;; size=100 bbWeight=15.84 PerfScore 269.28
+ ;; size=131 bbWeight=16 PerfScore 348.00
G_M24152_IG21:
- mov eax, edi
- add eax, dword ptr [rbp-0x30]
- mov dword ptr [rbp-0x30], eax
- mov ecx, esi
- add ecx, dword ptr [rbp-0x34]
- mov dword ptr [rbp-0x34], ecx
- lea edi, [r12-0x01]
- mov r9d, dword ptr [rbp-0x40]
- cmp r9d, edi
+ add r13d, edi
+ mov r12d, esi
+ add r12d, dword ptr [rbp-0x30]
+ lea edi, [r14-0x01]
+ mov edx, dword ptr [rbp-0x3C]
+ cmp edx, edi
jge SHORT G_M24152_IG23
- ;; size=30 bbWeight=4 PerfScore 37.00
+ ;; size=21 bbWeight=4 PerfScore 21.00
G_M24152_IG22:
- add edx, dword ptr [rbp-0x38]
- mov edi, edx
- add r8d, dword ptr [rbp-0x3C]
- mov esi, r8d
+ mov eax, r10d
+ add eax, dword ptr [rbp-0x34]
+ mov ecx, r11d
+ add ecx, dword ptr [rbp-0x38]
+ mov edi, ecx
+ mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], edi
- mov dword ptr [rbp-0x3C], esi
- ;; size=18 bbWeight=2 PerfScore 13.00
+ ;; size=20 bbWeight=2 PerfScore 13.50
G_M24152_IG23:
- inc r9d
- cmp r9d, r12d
+ inc edx
+ cmp edx, r14d
jl G_M24152_IG03
- ;; size=12 bbWeight=4 PerfScore 6.00
+ ;; size=11 bbWeight=4 PerfScore 6.00
G_M24152_IG24:
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 6
call CORINFO_HELP_NEWARR_1_VC
- mov ebx, dword ptr [rbp-0x30]
- mov byte ptr [rax+0x10], bl
- mov edi, ebx
+ mov byte ptr [rax+0x10], r13b
+ mov edi, r13d
shr edi, 8
mov byte ptr [rax+0x11], dil
- mov edi, ebx
+ mov edi, r13d
shr edi, 16
mov byte ptr [rax+0x12], dil
- mov edi, ebx
+ mov edi, r13d
shr edi, 24
mov byte ptr [rax+0x13], dil
- mov ebx, dword ptr [rbp-0x34]
- mov byte ptr [rax+0x14], bl
- mov edi, ebx
+ mov byte ptr [rax+0x14], r12b
+ mov edi, r12d
shr edi, 8
mov byte ptr [rax+0x15], dil
- ;; size=68 bbWeight=1 PerfScore 12.50
+ ;; size=68 bbWeight=1 PerfScore 10.50
G_M24152_IG25:
vzeroupper
- add rsp, 40
+ add rsp, 376
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 5.25
+ ;; size=21 bbWeight=1 PerfScore 5.25
G_M24152_IG26:
mov edi, 40
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M24152_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M24152_IG28:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 962, prolog size 22, PerfScore 879.06, instruction count 262, allocated bytes for code 962 (MethodHash=ada3a1a7) for method System.Runtime.Serialization.DataContracts.DataContract:ComputeHash(ubyte[]):ubyte[] (FullOpts)
+; Total bytes of code 1100, prolog size 28, PerfScore 1026.07, instruction count 275, allocated bytes for code 1100 (MethodHash=ada3a1a7) for method System.Runtime.Serialization.DataContracts.DataContract:ComputeHash(ubyte[]):ubyte[] (FullOpts)
; ============================================================ 101 (19.54 % of base) - ILCompiler.Reflection.ReadyToRun.Arm64.UnwindInfo:.ctor(ubyte[],int):this ; Assembly listing for method ILCompiler.Reflection.ReadyToRun.Arm64.UnwindInfo:.ctor(ubyte[],int):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 36 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 23, 28.50) ref -> rbx this class-hnd single-def <ILCompiler.Reflection.ReadyToRun.Arm64.UnwindInfo>
; V01 arg1 [V01,T07] ( 5, 7.50) ref -> r15 class-hnd single-def <ubyte[]>
; V02 arg2 [V02 ] ( 7, 9.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed ld-addr-op single-def
; V03 loc0 [V03,T08] ( 3, 6 ) int -> r14 single-def
-; V04 loc1 [V04,T05] ( 12, 16.50) int -> [rbp-0x30]
-; V05 loc2 [V05,T09] ( 3, 5.50) ref -> r12 class-hnd exact single-def <ubyte[]>
+; V04 loc1 [V04,T05] ( 12, 16.50) int -> registers
+;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref class-hnd exact <ubyte[]>
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc4 [V07,T16] ( 0, 0 ) int -> zero-ref
+;* V07 loc4 [V07,T15] ( 0, 0 ) int -> zero-ref
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V11 tmp3 [V11,T02] ( 3, 24 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog>
-; V12 tmp4 [V12,T06] ( 2, 16 ) ref -> [rbp-0x40] class-hnd spill-single-def "impAppendStmt" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[]>
-;* V13 tmp5 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V14 tmp6 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V15 tmp7 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <ubyte[]>
+; V10 tmp2 [V10,T13] ( 2, 2 ) ref -> rax class-hnd exact single-def "NewArr temp" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[]>
+;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V12 tmp4 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V13 tmp5 [V13,T14] ( 2, 2 ) ref -> rax class-hnd exact single-def "NewArr temp" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[]>
+; V14 tmp6 [V14,T02] ( 3, 24 ) ref -> [rbp-0x448] class-hnd exact spill-single-def "NewObj constructor temp" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog>
+; V15 tmp7 [V15,T06] ( 2, 16 ) ref -> [rbp-0x450] class-hnd spill-single-def "impAppendStmt" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[]>
;* V16 tmp8 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V17 tmp9 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V19 tmp11 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp12 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V21 tmp13 [V21,T14] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[]>
-;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog>
-; V23 tmp15 [V23,T15] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[]>
-;* V24 tmp16 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V25 tmp17 [V25,T11] ( 2, 4 ) int -> rax "Inlining Arg"
-; V26 tmp18 [V26,T12] ( 3, 3 ) int -> r15 "index expr"
-; V27 tmp19 [V27,T04] ( 3, 24 ) int -> rax "index expr"
-; V28 tmp20 [V28,T03] ( 3, 24 ) ref -> rax "arr expr"
-; V29 cse0 [V29,T10] ( 5, 5 ) int -> rax "CSE #03: moderate"
-; V30 cse1 [V30,T13] ( 5, 2.50) int -> registers multi-def "CSE #02: moderate"
-; V31 rat0 [V31,T01] ( 8, 28.25) long -> r13 "Widened IV V07"
+;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V23 tmp15 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ILCompiler.Reflection.ReadyToRun.Arm64.Epilog>
+;* V25 tmp17 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V26 tmp18 [V26,T10] ( 2, 4 ) int -> rax "Inlining Arg"
+; V27 tmp19 [V27 ] ( 6, 11 ) struct (1040) [rbp-0x440] do-not-enreg[XSF] must-init addr-exposed "stack allocated array temp"
+; V28 tmp20 [V28,T11] ( 3, 3 ) int -> r15 "index expr"
+; V29 tmp21 [V29,T04] ( 3, 24 ) int -> rax "index expr"
+; V30 tmp22 [V30,T03] ( 3, 24 ) ref -> rax "arr expr"
+; V31 cse0 [V31,T09] ( 5, 5 ) int -> rax "CSE #03: moderate"
+; V32 cse1 [V32,T12] ( 5, 2.50) int -> registers multi-def "CSE #02: moderate"
+; V33 rat0 [V33,T01] ( 8, 28.25) long -> r13 "Widened IV V07"
;
-; Lcl frame size = 24
+; Lcl frame size = 1064
G_M35450_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ sub rsp, 0x428
+ lea rbp, [rsp+0x450]
+ vxorps xmm8, xmm8, xmm8
+ vmovdqa xmmword ptr [rbp-0x440], xmm8
+ vmovdqa xmmword ptr [rbp-0x430], xmm8
+ mov rax, -0x3F0
+ vmovdqa xmmword ptr [rbp+rax-0x30], xmm8
+ vmovdqa xmmword ptr [rbp+rax-0x20], xmm8
+ vmovdqa xmmword ptr [rbp+rax-0x10], xmm8
+ add rax, 48
+ jne SHORT -5 instr
mov dword ptr [rbp-0x2C], edx
mov rbx, rdi
mov r15, rsi
- ;; size=28 bbWeight=1 PerfScore 8.25
+ ;; size=89 bbWeight=1 PerfScore 20.08
G_M35450_IG02:
mov r14d, dword ptr [rbp-0x2C]
lea rsi, [rbp-0x2C]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
call [rax]ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
mov r13d, eax
mov esi, r13d
sar esi, 27
and esi, 31
mov dword ptr [rbx+0x0C], esi
mov esi, r13d
sar esi, 22
and esi, 31
mov dword ptr [rbx+0x18], esi
mov esi, r13d
sar esi, 21
and esi, 1
mov dword ptr [rbx+0x1C], esi
mov esi, r13d
sar esi, 20
and esi, 1
mov dword ptr [rbx+0x20], esi
mov esi, r13d
sar esi, 18
and esi, 3
mov dword ptr [rbx+0x24], esi
and r13d, 0x3FFFF
shl r13d, 2
mov dword ptr [rbx+0x28], r13d
cmp dword ptr [rbx+0x0C], 0
jne SHORT G_M35450_IG04
;; size=107 bbWeight=1 PerfScore 21.00
G_M35450_IG03:
cmp dword ptr [rbx+0x18], 0
jne SHORT G_M35450_IG04
lea rsi, [rbp-0x2C]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
call [rax]ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
mov r13d, eax
mov edi, r13d
sar edi, 16
movzx rdi, dil
mov dword ptr [rbx+0x2C], edi
movzx rdi, r13w
mov dword ptr [rbx+0x30], edi
;; size=48 bbWeight=0.50 PerfScore 5.75
G_M35450_IG04:
mov rdi, 0xD1FFAB1E ; ubyte[]
- mov esi, 0x400
- call CORINFO_HELP_NEWARR_1_VC
- mov r12, rax
+ mov qword ptr [rbp-0x440], rdi
+ mov dword ptr [rbp-0x438], 0x400
cmp dword ptr [rbx+0x1C], 0
je SHORT G_M35450_IG06
- ;; size=29 bbWeight=1 PerfScore 5.75
+ ;; size=33 bbWeight=1 PerfScore 6.25
G_M35450_IG05:
mov rdi, 0xD1FFAB1E ; ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[]
xor esi, esi
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [rbx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov r15d, dword ptr [rbx+0x18]
- cmp r15d, 0x400
+ lea rsi, [rbp-0x440]
+ cmp r15d, dword ptr [rsi+0x08]
jae G_M35450_IG11
- mov esi, r15d
- mov byte ptr [r12+rsi+0x10], 1
+ lea rsi, [rbp-0x440]
+ mov edi, r15d
+ mov byte ptr [rsi+rdi+0x10], 1
jmp G_M35450_IG09
- ;; size=60 bbWeight=0.50 PerfScore 4.88
+ ;; size=70 bbWeight=0.50 PerfScore 6.75
G_M35450_IG06:
mov esi, dword ptr [rbx+0x18]
mov r13d, esi
movsxd rsi, r13d
mov rdi, 0xD1FFAB1E ; ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [rbx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
test r13d, r13d
je G_M35450_IG09
;; size=45 bbWeight=0.50 PerfScore 3.38
G_M35450_IG07:
xor r13d, r13d
;; size=3 bbWeight=0.25 PerfScore 0.06
G_M35450_IG08:
lea rsi, [rbp-0x2C]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
call [rax]ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
- mov dword ptr [rbp-0x30], eax
+ mov r12d, eax
mov rdi, 0xD1FFAB1E ; ILCompiler.Reflection.ReadyToRun.Arm64.Epilog
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x448], rax
mov r8, gword ptr [rbx+0x10]
- mov gword ptr [rbp-0x40], r8
+ mov gword ptr [rbp-0x450], r8
mov rdi, rax
mov esi, r13d
- mov edx, dword ptr [rbp-0x30]
+ mov edx, r12d
mov ecx, r14d
mov r9, 0xD1FFAB1E ; code for ILCompiler.Reflection.ReadyToRun.Arm64.Epilog:.ctor(int,int,uint):this
call [r9]ILCompiler.Reflection.ReadyToRun.Arm64.Epilog:.ctor(int,int,uint):this
movsxd rsi, r13d
- mov rdi, gword ptr [rbp-0x40]
- mov rdx, gword ptr [rbp-0x38]
+ mov rdi, gword ptr [rbp-0x450]
+ mov rdx, gword ptr [rbp-0x448]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
mov rax, gword ptr [rbx+0x10]
cmp r13d, dword ptr [rax+0x08]
jae SHORT G_M35450_IG11
mov rax, gword ptr [rax+8*r13+0x10]
mov eax, dword ptr [rax+0x18]
- cmp eax, 0x400
+ lea rcx, [rbp-0x440]
+ cmp eax, dword ptr [rcx+0x08]
jae SHORT G_M35450_IG11
- mov byte ptr [r12+rax+0x10], 1
+ lea rcx, [rbp-0x440]
+ mov byte ptr [rcx+rax+0x10], 1
inc r13d
movsxd rax, r13d
mov ecx, dword ptr [rbx+0x18]
cmp rax, rcx
jl G_M35450_IG08
- ;; size=146 bbWeight=4 PerfScore 147.00
+ ;; size=169 bbWeight=4 PerfScore 156.00
G_M35450_IG09:
mov eax, dword ptr [rbp-0x2C]
sub eax, r14d
mov ecx, dword ptr [rbx+0x0C]
lea eax, [rax+4*rcx]
mov dword ptr [rbx+0x08], eax
lea ecx, [rax+0x03]
and ecx, -4
sub ecx, eax
lea eax, [rcx+rax+0x04]
mov dword ptr [rbx+0x08], eax
;; size=30 bbWeight=1 PerfScore 7.75
G_M35450_IG10:
- add rsp, 24
+ add rsp, 0x428
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=18 bbWeight=1 PerfScore 4.25
G_M35450_IG11:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 517, prolog size 19, PerfScore 208.06, instruction count 138, allocated bytes for code 517 (MethodHash=71537585) for method ILCompiler.Reflection.ReadyToRun.Arm64.UnwindInfo:.ctor(ubyte[],int):this (FullOpts)
+; Total bytes of code 618, prolog size 80, PerfScore 231.27, instruction count 150, allocated bytes for code 618 (MethodHash=71537585) for method ILCompiler.Reflection.ReadyToRun.Arm64.UnwindInfo:.ctor(ubyte[],int):this (FullOpts)
; ============================================================ 101 (19.54 % of base) - ILCompiler.Reflection.ReadyToRun.LoongArch64.UnwindInfo:.ctor(ubyte[],int):this ; Assembly listing for method ILCompiler.Reflection.ReadyToRun.LoongArch64.UnwindInfo:.ctor(ubyte[],int):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 36 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 23, 28.50) ref -> rbx this class-hnd single-def <ILCompiler.Reflection.ReadyToRun.LoongArch64.UnwindInfo>
; V01 arg1 [V01,T07] ( 5, 7.50) ref -> r15 class-hnd single-def <ubyte[]>
; V02 arg2 [V02 ] ( 7, 9.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed ld-addr-op single-def
; V03 loc0 [V03,T08] ( 3, 6 ) int -> r14 single-def
-; V04 loc1 [V04,T05] ( 12, 16.50) int -> [rbp-0x30]
-; V05 loc2 [V05,T09] ( 3, 5.50) ref -> r12 class-hnd exact single-def <ubyte[]>
+; V04 loc1 [V04,T05] ( 12, 16.50) int -> registers
+;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref class-hnd exact <ubyte[]>
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc4 [V07,T16] ( 0, 0 ) int -> zero-ref
+;* V07 loc4 [V07,T15] ( 0, 0 ) int -> zero-ref
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V11 tmp3 [V11,T02] ( 3, 24 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog>
-; V12 tmp4 [V12,T06] ( 2, 16 ) ref -> [rbp-0x40] class-hnd spill-single-def "impAppendStmt" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[]>
-;* V13 tmp5 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V14 tmp6 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V15 tmp7 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <ubyte[]>
+; V10 tmp2 [V10,T13] ( 2, 2 ) ref -> rax class-hnd exact single-def "NewArr temp" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[]>
+;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V12 tmp4 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V13 tmp5 [V13,T14] ( 2, 2 ) ref -> rax class-hnd exact single-def "NewArr temp" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[]>
+; V14 tmp6 [V14,T02] ( 3, 24 ) ref -> [rbp-0x448] class-hnd exact spill-single-def "NewObj constructor temp" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog>
+; V15 tmp7 [V15,T06] ( 2, 16 ) ref -> [rbp-0x450] class-hnd spill-single-def "impAppendStmt" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[]>
;* V16 tmp8 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V17 tmp9 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V19 tmp11 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp12 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V21 tmp13 [V21,T14] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[]>
-;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog>
-; V23 tmp15 [V23,T15] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[]>
-;* V24 tmp16 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V25 tmp17 [V25,T11] ( 2, 4 ) int -> rax "Inlining Arg"
-; V26 tmp18 [V26,T12] ( 3, 3 ) int -> r15 "index expr"
-; V27 tmp19 [V27,T04] ( 3, 24 ) int -> rax "index expr"
-; V28 tmp20 [V28,T03] ( 3, 24 ) ref -> rax "arr expr"
-; V29 cse0 [V29,T10] ( 5, 5 ) int -> rax "CSE #03: moderate"
-; V30 cse1 [V30,T13] ( 5, 2.50) int -> registers multi-def "CSE #02: moderate"
-; V31 rat0 [V31,T01] ( 8, 28.25) long -> r13 "Widened IV V07"
+;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V23 tmp15 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog>
+;* V25 tmp17 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V26 tmp18 [V26,T10] ( 2, 4 ) int -> rax "Inlining Arg"
+; V27 tmp19 [V27 ] ( 6, 11 ) struct (1040) [rbp-0x440] do-not-enreg[XSF] must-init addr-exposed "stack allocated array temp"
+; V28 tmp20 [V28,T11] ( 3, 3 ) int -> r15 "index expr"
+; V29 tmp21 [V29,T04] ( 3, 24 ) int -> rax "index expr"
+; V30 tmp22 [V30,T03] ( 3, 24 ) ref -> rax "arr expr"
+; V31 cse0 [V31,T09] ( 5, 5 ) int -> rax "CSE #03: moderate"
+; V32 cse1 [V32,T12] ( 5, 2.50) int -> registers multi-def "CSE #02: moderate"
+; V33 rat0 [V33,T01] ( 8, 28.25) long -> r13 "Widened IV V07"
;
-; Lcl frame size = 24
+; Lcl frame size = 1064
G_M61145_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ sub rsp, 0x428
+ lea rbp, [rsp+0x450]
+ vxorps xmm8, xmm8, xmm8
+ vmovdqa xmmword ptr [rbp-0x440], xmm8
+ vmovdqa xmmword ptr [rbp-0x430], xmm8
+ mov rax, -0x3F0
+ vmovdqa xmmword ptr [rbp+rax-0x30], xmm8
+ vmovdqa xmmword ptr [rbp+rax-0x20], xmm8
+ vmovdqa xmmword ptr [rbp+rax-0x10], xmm8
+ add rax, 48
+ jne SHORT -5 instr
mov dword ptr [rbp-0x2C], edx
mov rbx, rdi
mov r15, rsi
- ;; size=28 bbWeight=1 PerfScore 8.25
+ ;; size=89 bbWeight=1 PerfScore 20.08
G_M61145_IG02:
mov r14d, dword ptr [rbp-0x2C]
lea rsi, [rbp-0x2C]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
call [rax]ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
mov r13d, eax
mov esi, r13d
sar esi, 27
and esi, 31
mov dword ptr [rbx+0x0C], esi
mov esi, r13d
sar esi, 22
and esi, 31
mov dword ptr [rbx+0x18], esi
mov esi, r13d
sar esi, 21
and esi, 1
mov dword ptr [rbx+0x1C], esi
mov esi, r13d
sar esi, 20
and esi, 1
mov dword ptr [rbx+0x20], esi
mov esi, r13d
sar esi, 18
and esi, 3
mov dword ptr [rbx+0x24], esi
and r13d, 0x3FFFF
shl r13d, 2
mov dword ptr [rbx+0x28], r13d
cmp dword ptr [rbx+0x0C], 0
jne SHORT G_M61145_IG04
;; size=107 bbWeight=1 PerfScore 21.00
G_M61145_IG03:
cmp dword ptr [rbx+0x18], 0
jne SHORT G_M61145_IG04
lea rsi, [rbp-0x2C]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
call [rax]ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
mov r13d, eax
mov edi, r13d
sar edi, 16
movzx rdi, dil
mov dword ptr [rbx+0x2C], edi
movzx rdi, r13w
mov dword ptr [rbx+0x30], edi
;; size=48 bbWeight=0.50 PerfScore 5.75
G_M61145_IG04:
mov rdi, 0xD1FFAB1E ; ubyte[]
- mov esi, 0x400
- call CORINFO_HELP_NEWARR_1_VC
- mov r12, rax
+ mov qword ptr [rbp-0x440], rdi
+ mov dword ptr [rbp-0x438], 0x400
cmp dword ptr [rbx+0x1C], 0
je SHORT G_M61145_IG06
- ;; size=29 bbWeight=1 PerfScore 5.75
+ ;; size=33 bbWeight=1 PerfScore 6.25
G_M61145_IG05:
mov rdi, 0xD1FFAB1E ; ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[]
xor esi, esi
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [rbx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov r15d, dword ptr [rbx+0x18]
- cmp r15d, 0x400
+ lea rsi, [rbp-0x440]
+ cmp r15d, dword ptr [rsi+0x08]
jae G_M61145_IG11
- mov esi, r15d
- mov byte ptr [r12+rsi+0x10], 1
+ lea rsi, [rbp-0x440]
+ mov edi, r15d
+ mov byte ptr [rsi+rdi+0x10], 1
jmp G_M61145_IG09
- ;; size=60 bbWeight=0.50 PerfScore 4.88
+ ;; size=70 bbWeight=0.50 PerfScore 6.75
G_M61145_IG06:
mov esi, dword ptr [rbx+0x18]
mov r13d, esi
movsxd rsi, r13d
mov rdi, 0xD1FFAB1E ; ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [rbx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
test r13d, r13d
je G_M61145_IG09
;; size=45 bbWeight=0.50 PerfScore 3.38
G_M61145_IG07:
xor r13d, r13d
;; size=3 bbWeight=0.25 PerfScore 0.06
G_M61145_IG08:
lea rsi, [rbp-0x2C]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
call [rax]ILCompiler.Reflection.ReadyToRun.NativeReader:ReadInt32(ubyte[],byref):int
- mov dword ptr [rbp-0x30], eax
+ mov r12d, eax
mov rdi, 0xD1FFAB1E ; ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x448], rax
mov r8, gword ptr [rbx+0x10]
- mov gword ptr [rbp-0x40], r8
+ mov gword ptr [rbp-0x450], r8
mov rdi, rax
mov esi, r13d
- mov edx, dword ptr [rbp-0x30]
+ mov edx, r12d
mov ecx, r14d
mov r9, 0xD1FFAB1E ; code for ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog:.ctor(int,int,uint):this
call [r9]ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog:.ctor(int,int,uint):this
movsxd rsi, r13d
- mov rdi, gword ptr [rbp-0x40]
- mov rdx, gword ptr [rbp-0x38]
+ mov rdi, gword ptr [rbp-0x450]
+ mov rdx, gword ptr [rbp-0x448]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
mov rax, gword ptr [rbx+0x10]
cmp r13d, dword ptr [rax+0x08]
jae SHORT G_M61145_IG11
mov rax, gword ptr [rax+8*r13+0x10]
mov eax, dword ptr [rax+0x18]
- cmp eax, 0x400
+ lea rcx, [rbp-0x440]
+ cmp eax, dword ptr [rcx+0x08]
jae SHORT G_M61145_IG11
- mov byte ptr [r12+rax+0x10], 1
+ lea rcx, [rbp-0x440]
+ mov byte ptr [rcx+rax+0x10], 1
inc r13d
movsxd rax, r13d
mov ecx, dword ptr [rbx+0x18]
cmp rax, rcx
jl G_M61145_IG08
- ;; size=146 bbWeight=4 PerfScore 147.00
+ ;; size=169 bbWeight=4 PerfScore 156.00
G_M61145_IG09:
mov eax, dword ptr [rbp-0x2C]
sub eax, r14d
mov ecx, dword ptr [rbx+0x0C]
lea eax, [rax+4*rcx]
mov dword ptr [rbx+0x08], eax
lea ecx, [rax+0x03]
and ecx, -4
sub ecx, eax
lea eax, [rcx+rax+0x04]
mov dword ptr [rbx+0x08], eax
;; size=30 bbWeight=1 PerfScore 7.75
G_M61145_IG10:
- add rsp, 24
+ add rsp, 0x428
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=18 bbWeight=1 PerfScore 4.25
G_M61145_IG11:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 517, prolog size 19, PerfScore 208.06, instruction count 138, allocated bytes for code 517 (MethodHash=f1741126) for method ILCompiler.Reflection.ReadyToRun.LoongArch64.UnwindInfo:.ctor(ubyte[],int):this (FullOpts)
+; Total bytes of code 618, prolog size 80, PerfScore 231.27, instruction count 150, allocated bytes for code 618 (MethodHash=f1741126) for method ILCompiler.Reflection.ReadyToRun.LoongArch64.UnwindInfo:.ctor(ubyte[],int):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/0b415cf8b0626f82884609de74fdbc79 |
Top method improvements-270 (-16.14 % of base) - System.Threading.Tasks.Task:WaitAllCore(System.ReadOnlySpan`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte ; Assembly listing for method System.Threading.Tasks.Task:WaitAllCore(System.ReadOnlySpan`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 22 inlinees without PGO data
+; 0 inlinees with PGO data; 25 single block inlinees; 20 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Threading.Tasks.Task]>
; V01 arg1 [V01,T28] ( 5, 5.50) int -> r15 single-def
; V02 arg2 [V02 ] ( 10, 8 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T30] ( 5, 7 ) ref -> r13 ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Exception]>
-; V04 loc1 [V04,T07] ( 19, 33 ) ref -> r12 ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V05 loc2 [V05,T04] ( 19, 82 ) ref -> [rbp-0x58] ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V06 loc3 [V06,T31] ( 5, 6 ) ubyte -> [rbp-0x34]
-; V07 loc4 [V07,T22] ( 4, 11.50) ubyte -> [rbp-0x38]
-; V08 loc5 [V08,T37] ( 5, 4 ) ubyte -> [rbp-0x3C]
-; V09 loc6 [V09,T40] ( 2, 2 ) int -> rdi
+; V03 loc0 [V03 ] ( 3, 5 ) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Exception]>
+; V04 loc1 [V04,T07] ( 19, 33 ) ref -> r13 ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V05 loc2 [V05,T04] ( 19, 82 ) ref -> r12 ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V06 loc3 [V06,T30] ( 5, 6 ) ubyte -> [rbp-0x3C]
+; V07 loc4 [V07,T21] ( 4, 11.50) ubyte -> [rbp-0x40]
+; V08 loc5 [V08,T36] ( 5, 4 ) ubyte -> [rbp-0x44]
+; V09 loc6 [V09,T39] ( 2, 2 ) int -> rdi
; V10 loc7 [V10,T08] ( 13, 32 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Threading.Tasks.Task>
-; V11 loc8 [V11,T14] ( 5, 16 ) ubyte -> [rbp-0x40]
+; V11 loc8 [V11,T14] ( 5, 16 ) ubyte -> [rbp-0x48]
;* V12 loc9 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V13 loc10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
;* V14 loc11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.Threading.Tasks.Task]>
;* V15 loc12 [V15,T45] ( 0, 0 ) int -> zero-ref
-; V16 loc13 [V16,T23] ( 3, 10 ) ref -> r12 class-hnd <System.Threading.Tasks.Task>
+;* V16 loc13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V18 tmp1 [V18,T35] ( 3, 6 ) int -> r10
+; V18 tmp1 [V18,T34] ( 3, 6 ) int -> r9
;* V19 tmp2 [V19,T46] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp3 [V20,T38] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V20 tmp3 [V20,T37] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V21 tmp4 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V22 tmp5 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp6 [V23,T18] ( 3, 12 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-;* V24 tmp7 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V25 tmp8 [V25,T32] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
-; V26 tmp9 [V26,T25] ( 4, 8 ) int -> r11 "Inline stloc first use temp"
-;* V27 tmp10 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V23 tmp6 [V23,T18] ( 3, 12 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V24 tmp7 [V24,T25] ( 2, 8 ) ref -> rax class-hnd exact "NewArr temp" <System.Threading.Tasks.Task[]>
+;* V25 tmp8 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V26 tmp9 [V26,T31] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
+; V27 tmp10 [V27,T22] ( 4, 8 ) int -> r10 "Inline stloc first use temp"
;* V28 tmp11 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V29 tmp12 [V29,T19] ( 3, 12 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-;* V30 tmp13 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V31 tmp14 [V31,T33] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
-; V32 tmp15 [V32,T26] ( 4, 8 ) int -> rsi "Inline stloc first use temp"
-; V33 tmp16 [V33,T20] ( 3, 12 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-;* V34 tmp17 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V35 tmp18 [V35,T34] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
-; V36 tmp19 [V36,T27] ( 4, 8 ) int -> r10 "Inline stloc first use temp"
-;* V37 tmp20 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-;* V38 tmp21 [V38 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
-; V39 tmp22 [V39,T05] ( 3, 48 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-;* V40 tmp23 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V41 tmp24 [V41,T10] ( 3, 24 ) ref -> r9 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
-; V42 tmp25 [V42,T09] ( 4, 32 ) int -> r10 "Inline stloc first use temp"
-;* V43 tmp26 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V44 tmp27 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-;* V45 tmp28 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-;* V46 tmp29 [V46 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
+;* V29 tmp12 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V30 tmp13 [V30,T19] ( 3, 12 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V31 tmp14 [V31,T26] ( 2, 8 ) ref -> rax class-hnd exact "NewArr temp" <System.Threading.Tasks.Task[]>
+;* V32 tmp15 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V33 tmp16 [V33,T32] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
+; V34 tmp17 [V34,T23] ( 4, 8 ) int -> rsi "Inline stloc first use temp"
+; V35 tmp18 [V35,T20] ( 3, 12 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V36 tmp19 [V36,T27] ( 2, 8 ) ref -> rax class-hnd exact "NewArr temp" <System.Threading.Tasks.Task[]>
+;* V37 tmp20 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V38 tmp21 [V38,T33] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
+; V39 tmp22 [V39,T24] ( 4, 8 ) int -> r9 "Inline stloc first use temp"
+;* V40 tmp23 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+;* V41 tmp24 [V41 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
+; V42 tmp25 [V42,T05] ( 3, 48 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V43 tmp26 [V43,T10] ( 2, 32 ) ref -> rax class-hnd exact "NewArr temp" <System.Threading.Tasks.Task[]>
+;* V44 tmp27 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V45 tmp28 [V45,T11] ( 3, 24 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
+; V46 tmp29 [V46,T09] ( 4, 32 ) int -> r9 "Inline stloc first use temp"
;* V47 tmp30 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V48 tmp31 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-;* V49 tmp32 [V49,T47] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V50 tmp33 [V50,T39] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V51 tmp34 [V51,T17] ( 4, 12 ) ref -> [rbp-0x78] class-hnd spill-single-def "Inline stloc first use temp" <System.AggregateException>
-;* V52 tmp35 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.List`1[System.Exception]>
-; V53 tmp36 [V53,T15] ( 4, 16 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Exception]>
-; V54 tmp37 [V54,T21] ( 3, 12 ) int -> rsi "Inlining Arg"
+;* V49 tmp32 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+;* V50 tmp33 [V50 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
+;* V51 tmp34 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V52 tmp35 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+;* V53 tmp36 [V53,T47] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V54 tmp37 [V54,T38] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
; V55 tmp38 [V55,T29] ( 3, 5.50) byref -> r14 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V56 tmp39 [V56,T16] ( 6, 10.50) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V56 tmp39 [V56,T15] ( 6, 10.50) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V57 tmp40 [V57 ] ( 10, 8 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
-; V58 tmp41 [V58,T02] ( 8,109 ) ref -> r12 "field V12._list (fldOffset=0x0)" P-INDEP
-; V59 tmp42 [V59,T03] ( 8,104 ) ref -> [rbp-0x80] "field V12._current (fldOffset=0x8)" P-INDEP
-; V60 tmp43 [V60,T01] ( 12,181 ) int -> [rbp-0x44] "field V12._index (fldOffset=0x10)" P-INDEP
-; V61 tmp44 [V61,T06] ( 4, 37 ) int -> [rbp-0x48] "field V12._version (fldOffset=0x14)" P-INDEP
-; V62 tmp45 [V62,T36] ( 2, 4.50) byref -> r14 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V63 tmp46 [V63,T24] ( 4, 9 ) int -> rbx "field V14._length (fldOffset=0x8)" P-INDEP
-; V64 tmp47 [V64,T41] ( 3, 1.50) ref -> r12 single-def "field V38._list (fldOffset=0x0)" P-INDEP
-;* V65 tmp48 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V38._current (fldOffset=0x8)" P-INDEP
-;* V66 tmp49 [V66,T48] ( 0, 0 ) int -> zero-ref "field V38._index (fldOffset=0x10)" P-INDEP
-; V67 tmp50 [V67,T43] ( 2, 1 ) int -> rax "field V38._version (fldOffset=0x14)" P-INDEP
-; V68 tmp51 [V68,T42] ( 3, 1.50) ref -> r12 single-def "field V46._list (fldOffset=0x0)" P-INDEP
-;* V69 tmp52 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "field V46._current (fldOffset=0x8)" P-INDEP
-;* V70 tmp53 [V70,T49] ( 0, 0 ) int -> zero-ref "field V46._index (fldOffset=0x10)" P-INDEP
-; V71 tmp54 [V71,T44] ( 2, 1 ) int -> rax "field V46._version (fldOffset=0x14)" P-INDEP
+; V58 tmp41 [V58,T02] ( 8,109 ) ref -> r13 "field V12._list (fldOffset=0x0)" P-INDEP
+; V59 tmp42 [V59,T03] ( 8,104 ) ref -> [rbp-0x68] "field V12._current (fldOffset=0x8)" P-INDEP
+; V60 tmp43 [V60,T01] ( 12,181 ) int -> [rbp-0x4C] "field V12._index (fldOffset=0x10)" P-INDEP
+; V61 tmp44 [V61,T06] ( 4, 37 ) int -> [rbp-0x50] "field V12._version (fldOffset=0x14)" P-INDEP
+; V62 tmp45 [V62,T35] ( 2, 4.50) byref -> r14 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V63 tmp46 [V63,T42] ( 3, 1.25) int -> rbx "field V14._length (fldOffset=0x8)" P-INDEP
+; V64 tmp47 [V64,T40] ( 3, 1.50) ref -> r13 single-def "field V41._list (fldOffset=0x0)" P-INDEP
+;* V65 tmp48 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V41._current (fldOffset=0x8)" P-INDEP
+;* V66 tmp49 [V66,T48] ( 0, 0 ) int -> zero-ref "field V41._index (fldOffset=0x10)" P-INDEP
+; V67 tmp50 [V67,T43] ( 2, 1 ) int -> rax "field V41._version (fldOffset=0x14)" P-INDEP
+; V68 tmp51 [V68,T41] ( 3, 1.50) ref -> r13 single-def "field V50._list (fldOffset=0x0)" P-INDEP
+;* V69 tmp52 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "field V50._current (fldOffset=0x8)" P-INDEP
+;* V70 tmp53 [V70,T49] ( 0, 0 ) int -> zero-ref "field V50._index (fldOffset=0x10)" P-INDEP
+; V71 tmp54 [V71,T44] ( 2, 1 ) int -> rax "field V50._version (fldOffset=0x14)" P-INDEP
; V72 tmp55 [V72,T00] ( 3,192 ) ref -> rcx "arr expr"
-; V73 tmp56 [V73,T11] ( 3, 24 ) ref -> rdi "arr expr"
-; V74 rat0 [V74,T12] ( 7, 22 ) long -> [rbp-0x50] "Widened IV V09"
-; V75 rat1 [V75,T13] ( 6, 20.50) long -> r15 "Widened IV V15"
+; V73 tmp56 [V73,T12] ( 3, 24 ) ref -> rdi "arr expr"
+; V74 rat0 [V74,T13] ( 7, 22 ) long -> [rbp-0x58] "Widened IV V09"
+; V75 rat1 [V75,T16] ( 4, 12.25) long -> r15 "Strength reduced derived IV"
+; V76 rat2 [V76,T17] ( 4, 12.25) int -> rbx "Trip count IV"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M22167_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
+ xor eax, eax
+ mov qword ptr [rbp-0x38], rax
mov gword ptr [rbp-0x30], rcx
mov r14, rdi
mov ebx, esi
mov r15d, edx
- ;; size=34 bbWeight=1 PerfScore 8.50
+ ;; size=37 bbWeight=1 PerfScore 9.75
G_M22167_IG02:
cmp r15d, -1
- jl G_M22167_IG53
+ jl G_M22167_IG52
cmp gword ptr [rbp-0x30], 0
je SHORT G_M22167_IG04
;; size=17 bbWeight=1 PerfScore 4.25
G_M22167_IG03:
mov rdi, gword ptr [rbp-0x30]
cmp dword ptr [rdi+0x20], 0
- jne G_M22167_IG52
+ jne G_M22167_IG51
;; size=14 bbWeight=0.50 PerfScore 2.50
G_M22167_IG04:
- xor r13, r13
- xor r12, r12
- xor rax, rax
- mov gword ptr [rbp-0x58], rax
- xor ecx, ecx
- mov dword ptr [rbp-0x34], ecx
- xor edx, edx
- mov dword ptr [rbp-0x38], edx
- mov dword ptr [rbp-0x3C], 1
- lea edi, [rbx-0x01]
- mov r8d, edi
- test r8d, r8d
- jl G_M22167_IG25
- ;; size=44 bbWeight=1 PerfScore 7.25
+ xor rdi, rdi
+ mov gword ptr [rbp-0x38], rdi
+ ;; size=6 bbWeight=1 PerfScore 1.25
G_M22167_IG05:
- cmp r8d, ebx
- jae G_M22167_IG54
- mov qword ptr [rbp-0x50], r8
- mov r9, gword ptr [r14+8*r8]
- mov gword ptr [rbp-0x60], r9
- test r9, r9
- je G_M22167_IG51
- test dword ptr [r9+0x34], 0xD1FFAB1E
- setne r10b
- movzx r10, r10b
- test r10d, r10d
- jne G_M22167_IG18
- ;; size=55 bbWeight=4 PerfScore 48.00
+ xor r13, r13
+ ;; size=3 bbWeight=1 PerfScore 0.25
G_M22167_IG06:
- cmp r15d, -1
- jne G_M22167_IG14
- cmp gword ptr [rbp-0x30], 0
- jne G_M22167_IG14
- mov rdi, r9
- mov r10, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:WrappedTryRunInline():ubyte:this
- call [r10]System.Threading.Tasks.Task:WrappedTryRunInline():ubyte:this
- test eax, eax
- jne SHORT G_M22167_IG07
- xor r10d, r10d
- mov rax, gword ptr [rbp-0x60]
- jmp SHORT G_M22167_IG08
- ;; size=50 bbWeight=2 PerfScore 24.50
+ xor r12, r12
+ ;; size=3 bbWeight=1 PerfScore 0.25
G_M22167_IG07:
+ mov dword ptr [rbp-0x3C], edi
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M22167_IG08:
+ mov dword ptr [rbp-0x40], edi
+ mov dword ptr [rbp-0x44], 1
+ lea edi, [rbx-0x01]
+ mov esi, edi
+ test esi, esi
+ jl G_M22167_IG29
+ ;; size=23 bbWeight=1 PerfScore 4.00
+G_M22167_IG09:
+ cmp esi, ebx
+ jae G_M22167_IG53
+ mov qword ptr [rbp-0x58], rsi
+ mov r8, gword ptr [r14+8*rsi]
+ mov gword ptr [rbp-0x60], r8
+ test r8, r8
+ je G_M22167_IG50
+ test dword ptr [r8+0x34], 0xD1FFAB1E
+ setne r9b
+ movzx r9, r9b
+ test r9d, r9d
+ jne G_M22167_IG22
+ ;; size=54 bbWeight=4 PerfScore 48.00
+G_M22167_IG10:
+ cmp r15d, -1
+ jne G_M22167_IG18
+ cmp gword ptr [rbp-0x30], 0
+ jne G_M22167_IG18
+ mov rdi, r8
+ mov r9, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:WrappedTryRunInline():ubyte:this
+ call [r9]System.Threading.Tasks.Task:WrappedTryRunInline():ubyte:this
+ test eax, eax
+ jne SHORT G_M22167_IG11
+ xor r9d, r9d
+ mov rax, gword ptr [rbp-0x60]
+ jmp SHORT G_M22167_IG12
+ ;; size=50 bbWeight=2 PerfScore 24.50
+G_M22167_IG11:
mov rax, gword ptr [rbp-0x60]
test dword ptr [rax+0x34], 0xD1FFAB1E
- setne r10b
- movzx r10, r10b
+ setne r9b
+ movzx r9, r9b
mov rax, gword ptr [rbp-0x60]
;; size=23 bbWeight=2 PerfScore 12.50
-G_M22167_IG08:
- mov ecx, r10d
- mov dword ptr [rbp-0x40], ecx
+G_M22167_IG12:
+ mov ecx, r9d
+ mov dword ptr [rbp-0x48], ecx
test ecx, ecx
- je SHORT G_M22167_IG10
+ je SHORT G_M22167_IG14
;; size=10 bbWeight=2 PerfScore 5.00
-G_M22167_IG09:
- mov r9, rax
- mov r10d, dword ptr [rbp-0x40]
- jmp G_M22167_IG18
+G_M22167_IG13:
+ mov r8, rax
+ mov r9d, dword ptr [rbp-0x48]
+ jmp G_M22167_IG22
;; size=12 bbWeight=1 PerfScore 3.25
-G_M22167_IG10:
- test r12, r12
- jne SHORT G_M22167_IG11
+G_M22167_IG14:
+ test r13, r13
+ jne SHORT G_M22167_IG15
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Threading.Tasks.Task]
call CORINFO_HELP_NEWSFAST
- mov r12, rax
+ mov r13, rax
mov esi, ebx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task[]
call CORINFO_HELP_NEWARR_1_OBJ
- lea rdi, bword ptr [r12+0x08]
+ lea rdi, bword ptr [r13+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x60]
- ;; size=57 bbWeight=2 PerfScore 14.00
-G_M22167_IG11:
- inc dword ptr [r12+0x14]
- mov rdi, gword ptr [r12+0x08]
- mov esi, dword ptr [r12+0x10]
+ ;; size=56 bbWeight=2 PerfScore 14.00
+G_M22167_IG15:
+ inc dword ptr [r13+0x14]
+ mov rdi, gword ptr [r13+0x08]
+ mov esi, dword ptr [r13+0x10]
cmp dword ptr [rdi+0x08], esi
- ja SHORT G_M22167_IG13
- ;; size=20 bbWeight=2 PerfScore 22.00
-G_M22167_IG12:
- mov r9, rax
- jmp G_M22167_IG16
+ ja SHORT G_M22167_IG17
+ ;; size=17 bbWeight=2 PerfScore 22.00
+G_M22167_IG16:
+ mov r8, rax
+ jmp G_M22167_IG20
;; size=8 bbWeight=1 PerfScore 2.25
-G_M22167_IG13:
+G_M22167_IG17:
lea edx, [rsi+0x01]
- mov dword ptr [r12+0x10], edx
+ mov dword ptr [r13+0x10], edx
movsxd rsi, esi
mov rdx, rax
mov r8, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [r8]CORINFO_HELP_ARRADDR_ST
- mov r9, gword ptr [rbp-0x60]
- mov r10d, dword ptr [rbp-0x40]
- jmp G_M22167_IG18
- ;; size=40 bbWeight=2 PerfScore 18.50
-G_M22167_IG14:
+ mov r8, gword ptr [rbp-0x60]
+ mov r9d, dword ptr [rbp-0x48]
+ jmp G_M22167_IG22
+ ;; size=39 bbWeight=2 PerfScore 18.50
+G_M22167_IG18:
+ test r13, r13
+ jne SHORT G_M22167_IG19
+ mov dword ptr [rbp-0x48], r9d
+ mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Threading.Tasks.Task]
+ call CORINFO_HELP_NEWSFAST
+ mov r13, rax
+ mov esi, ebx
+ mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task[]
+ call CORINFO_HELP_NEWARR_1_OBJ
+ lea rdi, bword ptr [r13+0x08]
+ mov rsi, rax
+ call CORINFO_HELP_ASSIGN_REF
+ mov r8, gword ptr [rbp-0x60]
+ mov r9d, dword ptr [rbp-0x48]
+ ;; size=64 bbWeight=2 PerfScore 18.00
+G_M22167_IG19:
+ inc dword ptr [r13+0x14]
+ mov rdi, gword ptr [r13+0x08]
+ mov r10d, dword ptr [r13+0x10]
+ cmp dword ptr [rdi+0x08], r10d
+ mov dword ptr [rbp-0x48], r9d
+ ja SHORT G_M22167_IG21
+ ;; size=22 bbWeight=2 PerfScore 24.00
+G_M22167_IG20:
+ mov rdi, r13
+ mov rsi, r8
+ mov r10, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
+ call [r10]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
+ mov r8, gword ptr [rbp-0x60]
+ mov r9d, dword ptr [rbp-0x48]
+ jmp SHORT G_M22167_IG22
+ ;; size=29 bbWeight=2 PerfScore 15.50
+G_M22167_IG21:
+ lea r11d, [r10+0x01]
+ mov dword ptr [r13+0x10], r11d
+ movsxd rsi, r10d
+ mov rdx, r8
+ mov r10, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [r10]CORINFO_HELP_ARRADDR_ST
+ mov r8, gword ptr [rbp-0x60]
+ mov r9d, dword ptr [rbp-0x48]
+ ;; size=35 bbWeight=2 PerfScore 14.50
+G_M22167_IG22:
+ test r9d, r9d
+ je G_M22167_IG28
+ ;; size=9 bbWeight=4 PerfScore 5.00
+G_M22167_IG23:
+ test dword ptr [r8+0x34], 0xD1FFAB1E
+ jne SHORT G_M22167_IG24
+ mov edi, dword ptr [r8+0x34]
+ and edi, 0xD1FFAB1E
+ cmp edi, 0xD1FFAB1E
+ jne SHORT G_M22167_IG25
+ mov dword ptr [rbp-0x40], 1
+ jmp SHORT G_M22167_IG25
+ ;; size=37 bbWeight=2 PerfScore 21.00
+G_M22167_IG24:
+ mov dword ptr [rbp-0x3C], 1
+ ;; size=7 bbWeight=2 PerfScore 2.00
+G_M22167_IG25:
+ test dword ptr [r8+0x34], 0xD1FFAB1E
+ je G_M22167_IG28
+ mov r8, gword ptr [rbp-0x60]
test r12, r12
- jne SHORT G_M22167_IG15
- mov dword ptr [rbp-0x40], r10d
+ jne SHORT G_M22167_IG26
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Threading.Tasks.Task]
call CORINFO_HELP_NEWSFAST
mov r12, rax
- mov esi, ebx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task[]
+ mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [r12+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov r9, gword ptr [rbp-0x60]
- mov r10d, dword ptr [rbp-0x40]
- ;; size=65 bbWeight=2 PerfScore 18.00
-G_M22167_IG15:
+ mov r8, gword ptr [rbp-0x60]
+ ;; size=78 bbWeight=2 PerfScore 24.00
+G_M22167_IG26:
inc dword ptr [r12+0x14]
mov rdi, gword ptr [r12+0x08]
- mov r11d, dword ptr [r12+0x10]
- cmp dword ptr [rdi+0x08], r11d
- mov dword ptr [rbp-0x40], r10d
- ja SHORT G_M22167_IG17
- ;; size=25 bbWeight=2 PerfScore 24.00
-G_M22167_IG16:
+ mov r9d, dword ptr [r12+0x10]
+ cmp dword ptr [rdi+0x08], r9d
+ ja SHORT G_M22167_IG27
mov rdi, r12
- mov rsi, r9
- mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
- call [r11]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
- mov r9, gword ptr [rbp-0x60]
- mov r10d, dword ptr [rbp-0x40]
- jmp SHORT G_M22167_IG18
- ;; size=29 bbWeight=2 PerfScore 15.50
-G_M22167_IG17:
- lea esi, [r11+0x01]
- mov dword ptr [r12+0x10], esi
- movsxd rsi, r11d
- mov rdx, r9
- mov r11, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
- call [r11]CORINFO_HELP_ARRADDR_ST
- mov r9, gword ptr [rbp-0x60]
- mov r10d, dword ptr [rbp-0x40]
- ;; size=36 bbWeight=2 PerfScore 14.50
-G_M22167_IG18:
- test r10d, r10d
- je G_M22167_IG24
- ;; size=9 bbWeight=4 PerfScore 5.00
-G_M22167_IG19:
- test dword ptr [r9+0x34], 0xD1FFAB1E
- jne SHORT G_M22167_IG20
- mov edi, dword ptr [r9+0x34]
- and edi, 0xD1FFAB1E
- cmp edi, 0xD1FFAB1E
- jne SHORT G_M22167_IG21
- mov dword ptr [rbp-0x38], 1
- jmp SHORT G_M22167_IG21
- ;; size=37 bbWeight=2 PerfScore 21.00
-G_M22167_IG20:
- mov dword ptr [rbp-0x34], 1
- ;; size=7 bbWeight=2 PerfScore 2.00
-G_M22167_IG21:
- test dword ptr [r9+0x34], 0xD1FFAB1E
- je G_M22167_IG24
- mov r9, gword ptr [rbp-0x60]
- mov rax, gword ptr [rbp-0x58]
- test rax, rax
- jne SHORT G_M22167_IG22
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Threading.Tasks.Task]
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x68], rax
- mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task[]
- mov esi, 1
- call CORINFO_HELP_NEWARR_1_OBJ
- mov rcx, gword ptr [rbp-0x68]
- lea rdi, bword ptr [rcx+0x08]
- mov rsi, rax
- call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x68]
- mov r9, gword ptr [rbp-0x60]
- ;; size=90 bbWeight=2 PerfScore 31.50
-G_M22167_IG22:
- inc dword ptr [rax+0x14]
- mov rdi, gword ptr [rax+0x08]
- mov r10d, dword ptr [rax+0x10]
- cmp dword ptr [rdi+0x08], r10d
- ja SHORT G_M22167_IG23
- mov gword ptr [rbp-0x58], rax
- mov rdi, rax
- mov rsi, r9
- mov r9, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
- call [r9]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
- jmp SHORT G_M22167_IG24
- ;; size=42 bbWeight=2 PerfScore 35.50
-G_M22167_IG23:
- lea r11d, [r10+0x01]
- mov gword ptr [rbp-0x58], rax
- mov dword ptr [rax+0x10], r11d
- movsxd rsi, r10d
- mov rdx, r9
- mov r9, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
- call [r9]CORINFO_HELP_ARRADDR_ST
- ;; size=31 bbWeight=2 PerfScore 12.50
-G_M22167_IG24:
- mov r8, qword ptr [rbp-0x50]
- dec r8d
- mov rdi, r8
+ mov rsi, r8
+ mov r8, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
+ call [r8]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
+ jmp SHORT G_M22167_IG28
+ ;; size=42 bbWeight=2 PerfScore 33.50
+G_M22167_IG27:
+ lea r10d, [r9+0x01]
+ mov dword ptr [r12+0x10], r10d
+ movsxd rsi, r9d
+ mov rdx, r8
+ mov r8, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [r8]CORINFO_HELP_ARRADDR_ST
+ ;; size=28 bbWeight=2 PerfScore 10.50
+G_M22167_IG28:
+ mov rsi, qword ptr [rbp-0x58]
+ dec esi
+ mov rdi, rsi
test edi, edi
- mov r8, rdi
- jge G_M22167_IG05
- ;; size=21 bbWeight=4 PerfScore 12.00
-G_M22167_IG25:
- test r12, r12
+ mov rsi, rdi
+ jge G_M22167_IG09
+ ;; size=20 bbWeight=4 PerfScore 12.00
+G_M22167_IG29:
+ test r13, r13
jne G_M22167_IG40
;; size=9 bbWeight=1 PerfScore 1.25
-G_M22167_IG26:
- mov r15d, dword ptr [rbp-0x3C]
+G_M22167_IG30:
+ mov r15d, dword ptr [rbp-0x44]
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M22167_IG27:
+G_M22167_IG31:
test r15d, r15d
je G_M22167_IG46
;; size=9 bbWeight=1 PerfScore 1.25
-G_M22167_IG28:
- mov r12, gword ptr [rbp-0x58]
- test r12, r12
- je SHORT G_M22167_IG30
- mov eax, dword ptr [r12+0x14]
- xor edi, edi
- xor ecx, ecx
- ;; size=18 bbWeight=0.50 PerfScore 2.38
-G_M22167_IG29:
- mov dword ptr [rbp-0x48], eax
- cmp eax, dword ptr [r12+0x14]
- jne G_M22167_IG48
- cmp ecx, dword ptr [r12+0x10]
- jae SHORT G_M22167_IG30
- mov rdi, gword ptr [r12+0x08]
- cmp ecx, dword ptr [rdi+0x08]
- jae G_M22167_IG54
- mov edx, ecx
- mov rdi, gword ptr [rdi+8*rdx+0x10]
- inc ecx
- mov dword ptr [rbp-0x44], ecx
- mov rdx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
- cmp dword ptr [rdi], edi
- call [rdx]System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
- test eax, eax
- mov eax, dword ptr [rbp-0x48]
- mov ecx, dword ptr [rbp-0x44]
- je SHORT G_M22167_IG29
- ;; size=71 bbWeight=4 PerfScore 112.00
-G_M22167_IG30:
- mov r12d, dword ptr [rbp-0x34]
- mov eax, dword ptr [rbp-0x38]
- or eax, r12d
- mov dword ptr [rbp-0x34], r12d
- je G_M22167_IG46
- cmp dword ptr [rbp-0x34], 0
- jne SHORT G_M22167_IG31
- cmp gword ptr [rbp-0x30], 0
- je SHORT G_M22167_IG31
- mov rdi, gword ptr [rbp-0x30]
- cmp dword ptr [rdi+0x20], 0
- jne G_M22167_IG52
- ;; size=47 bbWeight=0.50 PerfScore 7.62
-G_M22167_IG31:
- xor r15d, r15d
- test ebx, ebx
- jle G_M22167_IG50
- jmp SHORT G_M22167_IG36
- ;; size=13 bbWeight=0.50 PerfScore 1.75
G_M22167_IG32:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M22167_IG49
- ;; size=19 bbWeight=2 PerfScore 8.50
+ test r12, r12
+ je SHORT G_M22167_IG34
+ mov r13, r12
+ mov eax, dword ptr [r13+0x14]
+ xor edi, edi
+ xor r12d, r12d
+ ;; size=17 bbWeight=0.50 PerfScore 2.00
G_M22167_IG33:
- mov rdi, 0xD1FFAB1E ; data for System.Collections.Generic.List`1[System.Exception]:s_emptyArray
- mov rsi, gword ptr [rdi]
- lea rdi, bword ptr [r13+0x08]
- call CORINFO_HELP_ASSIGN_REF
- ;; size=22 bbWeight=2 PerfScore 7.50
+ mov dword ptr [rbp-0x50], eax
+ cmp eax, dword ptr [r13+0x14]
+ jne G_M22167_IG48
+ cmp r12d, dword ptr [r13+0x10]
+ jae SHORT G_M22167_IG34
+ mov rdi, gword ptr [r13+0x08]
+ cmp r12d, dword ptr [rdi+0x08]
+ jae G_M22167_IG53
+ mov ecx, r12d
+ mov rcx, gword ptr [rdi+8*rcx+0x10]
+ mov rdi, rcx
+ inc r12d
+ mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
+ cmp dword ptr [rdi], edi
+ call [rcx]System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
+ test eax, eax
+ mov eax, dword ptr [rbp-0x50]
+ je SHORT G_M22167_IG33
+ ;; size=68 bbWeight=4 PerfScore 105.00
G_M22167_IG34:
- mov r12, gword ptr [rbp-0x78]
- mov rsi, gword ptr [r12+0x70]
- mov rdi, r13
- mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
- cmp dword ptr [rdi], edi
- call [rax]System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
- ;; size=26 bbWeight=2 PerfScore 19.00
-G_M22167_IG35:
- inc r15d
- cmp r15d, ebx
- jge G_M22167_IG50
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M22167_IG36:
- cmp r15d, ebx
- jae G_M22167_IG54
- mov r12, gword ptr [r14+8*r15]
- mov rdi, r12
- mov esi, 1
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this
- cmp dword ptr [rdi], edi
- call [rax]System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this
- mov gword ptr [rbp-0x78], rax
- test rax, rax
+ mov r13d, dword ptr [rbp-0x3C]
+ mov r12d, dword ptr [rbp-0x40]
+ or r12d, r13d
+ mov dword ptr [rbp-0x3C], r13d
+ je G_M22167_IG46
+ cmp dword ptr [rbp-0x3C], 0
+ jne SHORT G_M22167_IG35
+ cmp gword ptr [rbp-0x30], 0
je SHORT G_M22167_IG35
- ;; size=44 bbWeight=4 PerfScore 49.00
+ mov rsi, gword ptr [rbp-0x30]
+ cmp dword ptr [rsi+0x20], 0
+ jne G_M22167_IG51
+ ;; size=48 bbWeight=0.50 PerfScore 7.62
+G_M22167_IG35:
+ test ebx, ebx
+ jle G_M22167_IG49
+ ;; size=8 bbWeight=0.50 PerfScore 0.62
+G_M22167_IG36:
+ xor r15d, r15d
+ ;; size=3 bbWeight=0.25 PerfScore 0.06
G_M22167_IG37:
- mov rdi, r12
- mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:UpdateExceptionObservedStatus():this
- call [rcx]System.Threading.Tasks.Task:UpdateExceptionObservedStatus():this
- test r13, r13
- jne SHORT G_M22167_IG34
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Exception]
- call CORINFO_HELP_NEWSFAST
- mov r13, rax
- mov r12, gword ptr [rbp-0x78]
- mov rsi, gword ptr [r12+0x70]
- mov esi, dword ptr [rsi+0x08]
- test esi, esi
- je G_M22167_IG32
- movsxd rsi, esi
- mov rdi, 0xD1FFAB1E ; System.Exception[]
- call CORINFO_HELP_NEWARR_1_OBJ
- lea rdi, bword ptr [r13+0x08]
- mov rsi, rax
- call CORINFO_HELP_ASSIGN_REF
- jmp G_M22167_IG34
- ;; size=93 bbWeight=2 PerfScore 35.50
+ mov rsi, gword ptr [r14+r15]
+ lea rdi, [rbp-0x38]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddExceptionsForCompletedTask(byref,System.Threading.Tasks.Task)
+ call [rax]System.Threading.Tasks.Task:AddExceptionsForCompletedTask(byref,System.Threading.Tasks.Task)
+ add r15, 8
+ dec ebx
+ jne SHORT G_M22167_IG37
+ jmp G_M22167_IG49
+ ;; size=33 bbWeight=4 PerfScore 37.00
G_M22167_IG38:
- mov dword ptr [rbp-0x34], 1
+ mov dword ptr [rbp-0x3C], 1
jmp G_M22167_IG44
;; size=12 bbWeight=2 PerfScore 6.00
G_M22167_IG39:
- mov rcx, gword ptr [rbp-0x80]
+ mov rcx, gword ptr [rbp-0x68]
jmp G_M22167_IG45
;; size=9 bbWeight=4 PerfScore 12.00
G_M22167_IG40:
- mov rdi, r12
+ mov rdi, r13
mov esi, r15d
mov rdx, gword ptr [rbp-0x30]
mov r8, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte
call [r8]System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte
mov r15d, eax
test r15d, r15d
- je G_M22167_IG27
- mov eax, dword ptr [r12+0x14]
+ je G_M22167_IG31
+ mov eax, dword ptr [r13+0x14]
xor edi, edi
jmp SHORT G_M22167_IG42
- ;; size=44 bbWeight=0.50 PerfScore 5.25
+ ;; size=43 bbWeight=0.50 PerfScore 5.25
G_M22167_IG41:
- mov dword ptr [rbp-0x44], edi
- mov dword ptr [rbp-0x48], eax
- lea r11d, [r10+0x01]
- mov gword ptr [rbp-0x58], r8
- mov dword ptr [r8+0x10], r11d
- movsxd rsi, r10d
- mov rdi, r9
+ mov dword ptr [rbp-0x4C], edi
+ mov dword ptr [rbp-0x50], eax
+ lea r10d, [r9+0x01]
+ mov dword ptr [r12+0x10], r10d
+ movsxd rsi, r9d
+ mov rdi, r8
mov rdx, rcx
mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rcx]CORINFO_HELP_ARRADDR_ST
- mov eax, dword ptr [rbp-0x48]
- mov edi, dword ptr [rbp-0x44]
- ;; size=45 bbWeight=8 PerfScore 84.00
+ mov eax, dword ptr [rbp-0x50]
+ mov edi, dword ptr [rbp-0x4C]
+ ;; size=42 bbWeight=8 PerfScore 76.00
G_M22167_IG42:
- mov dword ptr [rbp-0x48], eax
- cmp eax, dword ptr [r12+0x14]
+ mov dword ptr [rbp-0x50], eax
+ cmp eax, dword ptr [r13+0x14]
jne G_M22167_IG48
- cmp edi, dword ptr [r12+0x10]
- jae G_M22167_IG27
- mov rcx, gword ptr [r12+0x08]
+ cmp edi, dword ptr [r13+0x10]
+ jae G_M22167_IG31
+ mov rcx, gword ptr [r13+0x08]
cmp edi, dword ptr [rcx+0x08]
- jae G_M22167_IG54
+ jae G_M22167_IG53
mov edx, edi
mov rcx, gword ptr [rcx+8*rdx+0x10]
inc edi
- mov dword ptr [rbp-0x44], edi
+ mov dword ptr [rbp-0x4C], edi
test dword ptr [rcx+0x34], 0xD1FFAB1E
jne G_M22167_IG38
- ;; size=64 bbWeight=32 PerfScore 720.00
+ ;; size=61 bbWeight=32 PerfScore 720.00
G_M22167_IG43:
mov edx, dword ptr [rcx+0x34]
and edx, 0xD1FFAB1E
cmp edx, 0xD1FFAB1E
jne SHORT G_M22167_IG44
- mov dword ptr [rbp-0x38], 1
+ mov dword ptr [rbp-0x40], 1
;; size=24 bbWeight=8 PerfScore 36.00
G_M22167_IG44:
test dword ptr [rcx+0x34], 0xD1FFAB1E
- mov gword ptr [rbp-0x80], rcx
- mov eax, dword ptr [rbp-0x48]
- mov edi, dword ptr [rbp-0x44]
+ mov gword ptr [rbp-0x68], rcx
+ mov eax, dword ptr [rbp-0x50]
+ mov edi, dword ptr [rbp-0x4C]
je SHORT G_M22167_IG42
- mov r8, gword ptr [rbp-0x58]
- test r8, r8
+ test r12, r12
jne G_M22167_IG39
- mov dword ptr [rbp-0x44], edi
- mov dword ptr [rbp-0x48], eax
+ mov dword ptr [rbp-0x4C], edi
+ mov dword ptr [rbp-0x50], eax
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Threading.Tasks.Task]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x70], rax
+ mov r12, rax
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
- mov r8, gword ptr [rbp-0x70]
- lea rdi, bword ptr [r8+0x08]
+ lea rdi, bword ptr [r12+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov r8, gword ptr [rbp-0x70]
- mov rax, r8
- mov r8, rax
- mov eax, dword ptr [rbp-0x48]
- mov rcx, gword ptr [rbp-0x80]
- mov edi, dword ptr [rbp-0x44]
- ;; size=113 bbWeight=8 PerfScore 178.00
+ mov eax, dword ptr [rbp-0x50]
+ mov rcx, gword ptr [rbp-0x68]
+ mov edi, dword ptr [rbp-0x4C]
+ ;; size=95 bbWeight=8 PerfScore 144.00
G_M22167_IG45:
- inc dword ptr [r8+0x14]
- mov r9, gword ptr [r8+0x08]
- mov r10d, dword ptr [r8+0x10]
- cmp dword ptr [r9+0x08], r10d
+ inc dword ptr [r12+0x14]
+ mov r8, gword ptr [r12+0x08]
+ mov r9d, dword ptr [r12+0x10]
+ cmp dword ptr [r8+0x08], r9d
ja G_M22167_IG41
- mov dword ptr [rbp-0x44], edi
- mov dword ptr [rbp-0x48], eax
- mov gword ptr [rbp-0x58], r8
- mov rdi, r8
+ mov dword ptr [rbp-0x4C], edi
+ mov dword ptr [rbp-0x50], eax
+ mov rdi, r12
mov rsi, rcx
mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rcx]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
- mov eax, dword ptr [rbp-0x48]
- mov edi, dword ptr [rbp-0x44]
+ mov eax, dword ptr [rbp-0x50]
+ mov edi, dword ptr [rbp-0x4C]
jmp G_M22167_IG42
- ;; size=61 bbWeight=8 PerfScore 174.00
+ ;; size=60 bbWeight=8 PerfScore 166.00
G_M22167_IG46:
mov eax, r15d
;; size=3 bbWeight=1 PerfScore 0.25
G_M22167_IG47:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M22167_IG48:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
call [rax]System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M22167_IG49:
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Exception]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M22167_IG33
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M22167_IG50:
- mov rdi, r13
+ mov rdi, gword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowAggregateException(System.Collections.Generic.List`1[System.Exception])
call [rax]System.ThrowHelper:ThrowAggregateException(System.Collections.Generic.List`1[System.Exception])
int3
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M22167_IG51:
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M22167_IG50:
mov edi, 47
mov esi, 51
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException(int,int)
call [rax]System.ThrowHelper:ThrowArgumentException(int,int)
int3
;; size=23 bbWeight=0 PerfScore 0.00
-G_M22167_IG52:
+G_M22167_IG51:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:ThrowOperationCanceledException():this
call [rax]System.Threading.CancellationToken:ThrowOperationCanceledException():this
int3
;; size=17 bbWeight=0 PerfScore 0.00
-G_M22167_IG53:
+G_M22167_IG52:
mov edi, 60
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M22167_IG54:
+G_M22167_IG53:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1673, prolog size 34, PerfScore 1836.00, instruction count 399, allocated bytes for code 1673 (MethodHash=2986a968) for method System.Threading.Tasks.Task:WaitAllCore(System.ReadOnlySpan`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
+; Total bytes of code 1403, prolog size 37, PerfScore 1678.31, instruction count 342, allocated bytes for code 1403 (MethodHash=2986a968) for method System.Threading.Tasks.Task:WaitAllCore(System.ReadOnlySpan`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (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/66f9cd1d815eefc3fa1d144047a329ea |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes 1 second.
dotnet/runtime#104906
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: