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: Allow stack allocate objects in loops #570
Comments
Top method regressions19 (2.29 % of base) - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this ; Assembly listing for method ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (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; 25 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T25] ( 3, 3 ) ref -> rbx this class-hnd single-def <ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo>
-; V01 arg1 [V01,T26] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]>
+; V00 this [V00,T31] ( 3, 3 ) ref -> rbx this class-hnd single-def <ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo>
+; V01 arg1 [V01,T32] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]>
; V02 loc0 [V02,T08] ( 5,162 ) ref -> r14 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]>
; V03 loc1 [V03,T13] ( 5, 57 ) int -> r13
-;* V04 loc2 [V04,T38] ( 0, 0 ) long -> zero-ref class-hnd exact EH-live single-def <System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
+; V04 loc2 [V04,T20] ( 5, 19 ) ref -> r12 class-hnd exact single-def <System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange>
-; V06 loc4 [V06,T20] ( 3, 17 ) int -> [rbp-0x2C]
+; V06 loc4 [V06,T22] ( 3, 17 ) int -> [rbp-0x2C]
;* V07 loc5 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]>
;* V08 loc6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition>
; V09 loc7 [V09,T01] ( 8,296 ) int -> [rbp-0x30]
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T23] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]>
-;* V12 tmp2 [V12 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
+; V11 tmp1 [V11,T29] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]>
+; V12 tmp2 [V12,T27] ( 5, 10 ) ref -> r12 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
;* V13 tmp3 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V15 tmp5 [V15,T04] ( 3,192 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]>
+; V15 tmp5 [V15,T04] ( 3,192 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]>
;* V16 tmp6 [V16 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V17 tmp7 [V17 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V18 tmp8 [V18,T24] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
-; V19 tmp9 [V19,T33] ( 1, 2 ) struct (32) [rbp-0x50] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
+; V18 tmp8 [V18,T30] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
+; V19 tmp9 [V19,T33] ( 2, 4 ) struct (32) [rbp-0x50] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V21 tmp11 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp12 [V22,T27] ( 4, 3 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
+; V21 tmp11 [V21,T25] ( 9, 12 ) byref -> rax single-def "Inlining Arg"
+; V22 tmp12 [V22,T34] ( 4, 3 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
;* V23 tmp13 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]>
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V26 tmp16 [V26,T10] ( 9,144 ) long -> rdi "Inlining Arg"
-; V27 tmp17 [V27,T17] ( 4, 32 ) ref -> rsi class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
+; V26 tmp16 [V26,T10] ( 7,112 ) byref -> rax "Inlining Arg"
+; V27 tmp17 [V27,T17] ( 4, 32 ) ref -> rdx class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]>
;* V28 tmp18 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V29 tmp19 [V29,T00] ( 7,448 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]>
; V30 tmp20 [V30,T05] ( 3,192 ) byref -> rax "Inline stloc first use temp"
;* V31 tmp21 [V31 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]>
; V32 tmp22 [V32,T06] ( 3,192 ) ref -> rdx class-hnd "Inline stloc first use temp" <ILCompiler.Reflection.ReadyToRun.BaseGcTransition[]>
; V33 tmp23 [V33,T03] ( 4,256 ) int -> rsi "Inline stloc first use temp"
;* V34 tmp24 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp25 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]>
;* V36 tmp26 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp27 [V37 ] ( 19, 36.50) struct (40) [rbp-0x78] do-not-enreg[XSF] must-init addr-exposed "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]]>
-;* V38 tmp28 [V38 ] ( 0, 0 ) int -> zero-ref "field V05.<Index>k__BackingField (fldOffset=0x0)" P-INDEP
-; V39 tmp29 [V39,T12] ( 6, 58 ) int -> rbx "field V05.<StartOffset>k__BackingField (fldOffset=0x4)" P-INDEP
-; V40 tmp30 [V40,T14] ( 5, 50 ) int -> r12 "field V05.<StopOffset>k__BackingField (fldOffset=0x8)" P-INDEP
-; V41 tmp31 [V41,T11] ( 4, 73 ) ref -> r15 single-def "field V07._list (fldOffset=0x0)" P-INDEP
-; V42 tmp32 [V42,T02] ( 6,264 ) ref -> [rbp-0x98] spill-single-def "field V07._current (fldOffset=0x8)" P-INDEP
-;* V43 tmp33 [V43,T35] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x10)" P-INDEP
-; V44 tmp34 [V44,T22] ( 2, 9 ) int -> [rbp-0x7C] spill-single-def "field V07._version (fldOffset=0x14)" P-INDEP
-; V45 tmp35 [V45,T28] ( 3, 3 ) ref -> r15 single-def "field V24._list (fldOffset=0x0)" P-INDEP
-;* V46 tmp36 [V46 ] ( 0, 0 ) ref -> zero-ref single-def "field V24._current (fldOffset=0x8)" P-INDEP
-;* V47 tmp37 [V47,T36] ( 0, 0 ) int -> zero-ref single-def "field V24._index (fldOffset=0x10)" P-INDEP
-; V48 tmp38 [V48,T31] ( 2, 2 ) int -> rax single-def "field V24._version (fldOffset=0x14)" P-INDEP
-;* V49 tmp39 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)"
-;* V50 tmp40 [V50 ] ( 0, 0 ) int -> zero-ref single-def "V19.[008..012)"
-; V51 tmp41 [V51,T32] ( 2, 2 ) int -> rsi single-def "V19.[012..016)"
-; V52 tmp42 [V52,T29] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V53 tmp43 [V53,T30] ( 3, 3 ) int -> rsi "index expr"
-; V54 tmp44 [V54,T07] ( 3,192 ) ref -> rcx "arr expr"
-; V55 tmp45 [V55,T15] ( 3, 48 ) ref -> r8 "arr expr"
-; V56 tmp46 [V56,T16] ( 3, 48 ) int -> r9 "index expr"
-; V57 PSPSym [V57,T37] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
-; V58 cse0 [V58,T19] ( 3, 24 ) int -> r9 "CSE #06: moderate"
-; V59 cse1 [V59,T21] ( 2, 16 ) int -> r9 "CSE #07: moderate"
-; V60 cse2 [V60,T34] ( 3, 1.50) int -> rsi "CSE #05: conservative"
-; V61 cse3 [V61,T18] ( 3, 24 ) ref -> r8 "CSE #08: moderate"
-; V62 rat0 [V62,T09] ( 6,161 ) long -> [rbp-0x88] "Widened IV V43"
+;* V37 tmp27 [V37 ] ( 0, 0 ) int -> zero-ref "field V05.<Index>k__BackingField (fldOffset=0x0)" P-INDEP
+; V38 tmp28 [V38,T12] ( 6, 58 ) int -> [rbp-0x54] "field V05.<StartOffset>k__BackingField (fldOffset=0x4)" P-INDEP
+; V39 tmp29 [V39,T14] ( 5, 50 ) int -> [rbp-0x58] "field V05.<StopOffset>k__BackingField (fldOffset=0x8)" P-INDEP
+; V40 tmp30 [V40,T11] ( 4, 73 ) ref -> r15 single-def "field V07._list (fldOffset=0x0)" P-INDEP
+; V41 tmp31 [V41,T02] ( 6,264 ) ref -> [rbp-0x78] spill-single-def "field V07._current (fldOffset=0x8)" P-INDEP
+;* V42 tmp32 [V42,T42] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0x10)" P-INDEP
+; V43 tmp33 [V43,T28] ( 2, 9 ) int -> [rbp-0x5C] spill-single-def "field V07._version (fldOffset=0x14)" P-INDEP
+; V44 tmp34 [V44,T35] ( 3, 3 ) ref -> r15 single-def "field V24._list (fldOffset=0x0)" P-INDEP
+;* V45 tmp35 [V45 ] ( 0, 0 ) ref -> zero-ref single-def "field V24._current (fldOffset=0x8)" P-INDEP
+;* V46 tmp36 [V46,T43] ( 0, 0 ) int -> zero-ref single-def "field V24._index (fldOffset=0x10)" P-INDEP
+; V47 tmp37 [V47,T38] ( 2, 2 ) int -> r8 single-def "field V24._version (fldOffset=0x14)" P-INDEP
+;* V48 tmp38 [V48 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)"
+;* V49 tmp39 [V49 ] ( 0, 0 ) int -> zero-ref single-def "V19.[008..012)"
+; V50 tmp40 [V50,T39] ( 2, 2 ) int -> rdx single-def "V19.[012..016)"
+; V51 tmp41 [V51,T36] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V52 tmp42 [V52,T37] ( 3, 3 ) int -> rsi "index expr"
+; V53 tmp43 [V53,T07] ( 3,192 ) ref -> r9 "arr expr"
+; V54 tmp44 [V54,T15] ( 3, 48 ) ref -> rsi "arr expr"
+; V55 tmp45 [V55,T16] ( 3, 48 ) int -> rdi "index expr"
+; V56 PSPSym [V56,T44] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
+; V57 cse0 [V57,T18] ( 3, 24 ) int -> rdi "CSE #08: moderate"
+; V58 cse1 [V58,T23] ( 2, 16 ) int -> rdi "CSE #09: moderate"
+; V59 cse2 [V59,T24] ( 2, 16 ) int -> r11 "CSE #11: moderate"
+; V60 cse3 [V60,T19] ( 3, 24 ) int -> rsi "CSE #12: moderate"
+; V61 cse4 [V61,T40] ( 3, 1.50) int -> rsi "CSE #02: conservative"
+; V62 cse5 [V62,T41] ( 3, 1.50) int -> rcx "CSE #06: conservative"
+; V63 cse6 [V63,T21] ( 6, 18 ) byref -> [rbp-0x80] multi-def "CSE #07: moderate"
+; V64 cse7 [V64,T26] ( 4, 11 ) byref -> rbx "CSE #01: moderate"
+; V65 rat0 [V65,T09] ( 6,161 ) long -> [rbp-0x68] "Widened IV V42"
;
-; Lcl frame size = 120
+; Lcl frame size = 104
G_M53180_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 120
- lea rbp, [rsp+0xA0]
- xor eax, eax
- mov qword ptr [rbp-0x78], rax
+ sub rsp, 104
+ lea rbp, [rsp+0x90]
vxorps xmm8, xmm8, xmm8
- vmovdqu32 zmmword ptr [rbp-0x70], zmm8
- mov qword ptr [rbp-0xA0], rsp
+ vmovdqu ymmword ptr [rbp-0x50], ymm8
+ mov qword ptr [rbp-0x90], rsp
mov rbx, rdi
mov r15, rsi
- ;; size=56 bbWeight=1 PerfScore 11.83
+ ;; size=45 bbWeight=1 PerfScore 10.58
G_M53180_IG02:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, r14
xor esi, esi
xor rdx, rdx
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[int,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[int]):this
call [rax]System.Collections.Generic.Dictionary`2[int,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[int]):this
xor r13d, r13d
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1+Enumerator[ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange]
- mov qword ptr [rbp-0x78], rdi
+ call CORINFO_HELP_NEWSFAST
+ mov r12, rax
mov rdi, gword ptr [rbx+0x38]
- mov esi, dword ptr [rdi+0x14]
- ;; size=61 bbWeight=1 PerfScore 11.00
+ mov edx, dword ptr [rdi+0x14]
+ mov gword ptr [rbp-0x50], rdi
+ lea rbx, bword ptr [r12+0x08]
+ mov rdi, rbx
+ lea rsi, bword ptr [rbp-0x50]
+ call CORINFO_HELP_ASSIGN_BYREF
+ movsq
+ movsq
+ movsq
+ xor edi, edi
+ mov dword ptr [r12+0x10], edi
+ mov dword ptr [r12+0x14], edx
+ ;; size=104 bbWeight=1 PerfScore 19.75
G_M53180_IG03:
- vmovdqu ymm0, ymmword ptr [rbp-0x50]
- vmovdqu ymmword ptr [rbp-0x70], ymm0
- ;; size=10 bbWeight=1 PerfScore 5.00
+ mov rax, rbx
+ mov rdi, gword ptr [rax]
+ mov esi, dword ptr [rax+0x0C]
+ cmp esi, dword ptr [rdi+0x14]
+ jne G_M53180_IG19
+ ;; size=18 bbWeight=1 PerfScore 8.25
G_M53180_IG04:
- mov gword ptr [rbp-0x70], rdi
+ mov esi, dword ptr [rax+0x08]
+ mov ecx, dword ptr [rdi+0x10]
+ cmp esi, ecx
+ jb SHORT G_M53180_IG05
+ inc ecx
+ mov dword ptr [rax+0x08], ecx
+ lea rcx, bword ptr [rax+0x10]
xor edi, edi
- mov dword ptr [rbp-0x68], edi
- mov dword ptr [rbp-0x64], esi
- ;; size=12 bbWeight=1 PerfScore 3.25
+ mov qword ptr [rcx], rdi
+ mov dword ptr [rcx+0x08], edi
+ jmp SHORT G_M53180_IG06
+ ;; size=29 bbWeight=0.50 PerfScore 5.62
G_M53180_IG05:
- mov rdi, gword ptr [rbp-0x70]
- mov esi, dword ptr [rbp-0x64]
- cmp esi, dword ptr [rdi+0x14]
- jne G_M53180_IG21
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M53180_IG06:
- mov esi, dword ptr [rdi+0x10]
- cmp dword ptr [rbp-0x68], esi
- jb SHORT G_M53180_IG07
- inc esi
- mov dword ptr [rbp-0x68], esi
- xor edi, edi
- mov qword ptr [rbp-0x60], rdi
- mov dword ptr [rbp-0x58], edi
- jmp SHORT G_M53180_IG08
- ;; size=24 bbWeight=0.50 PerfScore 5.25
-G_M53180_IG07:
mov rdi, gword ptr [rdi+0x08]
- mov esi, dword ptr [rbp-0x68]
cmp esi, dword ptr [rdi+0x08]
- jae G_M53180_IG20
- lea rsi, [rsi+2*rsi]
- mov rax, qword ptr [rdi+4*rsi+0x10]
- mov qword ptr [rbp-0x60], rax
- mov eax, dword ptr [rdi+4*rsi+0x18]
- mov dword ptr [rbp-0x58], eax
- mov edi, dword ptr [rbp-0x68]
- inc edi
- mov dword ptr [rbp-0x68], edi
- ;; size=44 bbWeight=0.50 PerfScore 7.88
-G_M53180_IG08:
- mov ebx, dword ptr [rbp-0x5C]
- mov r12d, dword ptr [rbp-0x58]
- mov edi, r12d
- sub edi, ebx
- mov eax, dword ptr [r15+0x14]
- mov dword ptr [rbp-0x7C], eax
+ jae G_M53180_IG18
+ mov ecx, esi
+ lea rsi, [rcx+2*rcx]
+ lea rcx, bword ptr [rax+0x10]
+ mov rdx, qword ptr [rdi+4*rsi+0x10]
+ mov qword ptr [rcx], rdx
+ mov edx, dword ptr [rdi+4*rsi+0x18]
+ mov dword ptr [rcx+0x08], edx
+ inc dword ptr [rax+0x08]
+ ;; size=41 bbWeight=0.50 PerfScore 8.12
+G_M53180_IG06:
+ mov eax, dword ptr [r12+0x1C]
+ mov edx, dword ptr [r12+0x20]
+ mov edi, edx
+ sub edi, eax
+ mov r8d, dword ptr [r15+0x14]
+ mov dword ptr [rbp-0x5C], r8d
xor esi, esi
- jmp SHORT G_M53180_IG10
- ;; size=23 bbWeight=1 PerfScore 7.75
-G_M53180_IG09:
+ jmp SHORT G_M53180_IG08
+ ;; size=26 bbWeight=1 PerfScore 9.75
+G_M53180_IG07:
lea eax, [rsi+0x01]
mov dword ptr [rdi+0x10], eax
movsxd rsi, esi
mov rdi, rdx
- mov rdx, gword ptr [rbp-0x98]
+ mov rdx, gword ptr [rbp-0x78]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
- mov eax, dword ptr [rbp-0x7C]
- mov rsi, qword ptr [rbp-0x88]
+ mov eax, dword ptr [rbp-0x54]
+ mov rcx, bword ptr [rbp-0x80]
+ mov edx, dword ptr [rbp-0x58]
+ mov rsi, qword ptr [rbp-0x68]
mov edi, dword ptr [rbp-0x2C]
- ;; size=44 bbWeight=64 PerfScore 592.00
-G_M53180_IG10:
- cmp eax, dword ptr [r15+0x14]
- jne G_M53180_IG21
+ mov r8d, dword ptr [rbp-0x5C]
+ ;; size=49 bbWeight=64 PerfScore 784.00
+G_M53180_IG08:
+ cmp r8d, dword ptr [r15+0x14]
+ jne G_M53180_IG19
;; size=10 bbWeight=8 PerfScore 32.00
-G_M53180_IG11:
+G_M53180_IG09:
cmp esi, dword ptr [r15+0x10]
- jae G_M53180_IG24
- mov rcx, gword ptr [r15+0x08]
- cmp esi, dword ptr [rcx+0x08]
- jae G_M53180_IG20
- mov rcx, gword ptr [rcx+8*rsi+0x10]
- mov gword ptr [rbp-0x98], rcx
+ jae G_M53180_IG22
+ mov r9, gword ptr [r15+0x08]
+ cmp esi, dword ptr [r9+0x08]
+ jae G_M53180_IG18
+ mov r9, gword ptr [r9+8*rsi+0x10]
+ mov gword ptr [rbp-0x78], r9
inc esi
- mov qword ptr [rbp-0x88], rsi
- mov r8d, ebx
- add r8d, dword ptr [rcx+0x08]
- sub r8d, r13d
- movsxd rsi, r8d
- mov r9d, r12d
- cmp rsi, r9
- jle SHORT G_M53180_IG13
- ;; size=65 bbWeight=32 PerfScore 624.00
-G_M53180_IG12:
+ mov qword ptr [rbp-0x68], rsi
+ mov r11d, eax
+ add r11d, dword ptr [r9+0x08]
+ sub r11d, r13d
+ movsxd rsi, r11d
+ mov r8d, edx
+ cmp rsi, r8
+ mov dword ptr [rbp-0x54], eax
+ mov dword ptr [rbp-0x58], edx
+ jle SHORT G_M53180_IG11
+ ;; size=66 bbWeight=32 PerfScore 688.00
+G_M53180_IG10:
add r13d, edi
- lea rdi, [rbp-0x70]
- mov r8, gword ptr [rdi]
- mov rsi, r8
- mov r9d, dword ptr [rdi+0x0C]
- cmp r9d, dword ptr [rsi+0x14]
- jne G_M53180_IG21
- mov r9d, dword ptr [rdi+0x08]
- cmp r9d, dword ptr [rsi+0x10]
- jae SHORT G_M53180_IG14
- mov r8, gword ptr [rsi+0x08]
- cmp r9d, dword ptr [r8+0x08]
- jae G_M53180_IG20
- mov esi, r9d
- lea rsi, [rsi+2*rsi]
- mov r9, qword ptr [r8+4*rsi+0x10]
- mov qword ptr [rdi+0x10], r9
- mov r9d, dword ptr [r8+4*rsi+0x18]
- mov dword ptr [rdi+0x18], r9d
- inc dword ptr [rdi+0x08]
- jmp SHORT G_M53180_IG15
- ;; size=81 bbWeight=8 PerfScore 262.00
-G_M53180_IG13:
+ mov rax, rbx
+ mov rdx, gword ptr [rax]
+ mov edi, dword ptr [rax+0x0C]
+ mov r11d, dword ptr [rdx+0x14]
+ cmp edi, r11d
+ jne G_M53180_IG19
+ mov edi, dword ptr [rax+0x08]
+ mov esi, dword ptr [rdx+0x10]
+ cmp edi, esi
+ jae SHORT G_M53180_IG12
+ mov rsi, gword ptr [rdx+0x08]
+ cmp edi, dword ptr [rsi+0x08]
+ jae G_M53180_IG18
+ lea rdi, [rdi+2*rdi]
+ mov rdx, qword ptr [rsi+4*rdi+0x10]
+ mov qword ptr [rcx], rdx
+ mov edx, dword ptr [rsi+4*rdi+0x18]
+ mov dword ptr [rcx+0x08], edx
+ inc dword ptr [rax+0x08]
+ jmp SHORT G_M53180_IG13
+ ;; size=72 bbWeight=8 PerfScore 244.00
+G_M53180_IG11:
+ mov bword ptr [rbp-0x80], rcx
mov dword ptr [rbp-0x2C], edi
- jmp SHORT G_M53180_IG16
- ;; size=5 bbWeight=16 PerfScore 48.00
-G_M53180_IG14:
- mov esi, dword ptr [r8+0x10]
+ jmp SHORT G_M53180_IG14
+ ;; size=9 bbWeight=16 PerfScore 64.00
+G_M53180_IG12:
inc esi
- mov dword ptr [rdi+0x08], esi
- xor esi, esi
- mov qword ptr [rdi+0x10], rsi
- mov dword ptr [rdi+0x18], esi
- ;; size=18 bbWeight=8 PerfScore 44.00
-G_M53180_IG15:
- mov ebx, dword ptr [rbp-0x5C]
- mov r12d, dword ptr [rbp-0x58]
- mov edi, r12d
- sub edi, ebx
+ mov dword ptr [rax+0x08], esi
+ xor edi, edi
+ mov bword ptr [rbp-0x80], rcx
+ mov qword ptr [rcx], rdi
+ mov dword ptr [rcx+0x08], edi
+ mov rcx, bword ptr [rbp-0x80]
+ ;; size=21 bbWeight=8 PerfScore 44.00
+G_M53180_IG13:
+ mov eax, dword ptr [r12+0x1C]
+ mov edx, dword ptr [r12+0x20]
+ mov dword ptr [rbp-0x58], edx
+ mov edi, edx
+ sub edi, eax
mov dword ptr [rbp-0x2C], edi
- mov edi, ebx
- add edi, dword ptr [rcx+0x08]
- sub edi, r13d
- mov r9d, edi
- mov r8d, r9d
- ;; size=29 bbWeight=8 PerfScore 60.00
-G_M53180_IG16:
- mov dword ptr [rcx+0x08], r8d
+ mov dword ptr [rbp-0x54], eax
+ mov r11d, eax
+ add r11d, dword ptr [r9+0x08]
+ sub r11d, r13d
+ mov bword ptr [rbp-0x80], rcx
+ ;; size=37 bbWeight=8 PerfScore 96.00
+G_M53180_IG14:
+ mov dword ptr [r9+0x08], r11d
mov rdi, r14
- mov dword ptr [rbp-0x30], r8d
- mov esi, r8d
- mov r9, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
- call [r9]System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
+ mov dword ptr [rbp-0x30], r11d
+ mov esi, r11d
+ mov r8, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
+ call [r8]System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
test rax, rax
- jne SHORT G_M53180_IG19
+ jne SHORT G_M53180_IG17
;; size=32 bbWeight=64 PerfScore 448.00
-G_M53180_IG17:
+G_M53180_IG15:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0x70], rax
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M53180_IG22
- ;; size=41 bbWeight=32 PerfScore 208.00
-G_M53180_IG18:
+ je G_M53180_IG20
+ ;; size=38 bbWeight=32 PerfScore 208.00
+G_M53180_IG16:
mov rdi, 0xD1FFAB1E ; data for System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]:s_emptyArray
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [rax+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r14
mov esi, dword ptr [rbp-0x30]
- mov rdx, gword ptr [rbp-0x90]
+ mov rdx, gword ptr [rbp-0x70]
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[int,System.__Canon]:TryInsert(int,System.__Canon,ubyte):ubyte:this
call [rax]System.Collections.Generic.Dictionary`2[int,System.__Canon]:TryInsert(int,System.__Canon,ubyte):ubyte:this
- ;; size=52 bbWeight=32 PerfScore 304.00
-G_M53180_IG19:
+ ;; size=49 bbWeight=32 PerfScore 304.00
+G_M53180_IG17:
mov rdi, r14
mov esi, dword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
call [rax]System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
test rax, rax
- je SHORT G_M53180_IG23
+ je SHORT G_M53180_IG21
mov rdi, gword ptr [rax]
inc dword ptr [rdi+0x14]
mov rdx, gword ptr [rdi+0x08]
mov esi, dword ptr [rdi+0x10]
cmp dword ptr [rdx+0x08], esi
- ja G_M53180_IG09
- mov rsi, gword ptr [rbp-0x98]
+ ja G_M53180_IG07
+ mov rsi, gword ptr [rbp-0x78]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
- mov eax, dword ptr [rbp-0x7C]
- mov rsi, qword ptr [rbp-0x88]
+ mov eax, dword ptr [rbp-0x54]
+ mov rcx, bword ptr [rbp-0x80]
+ mov edx, dword ptr [rbp-0x58]
+ mov rsi, qword ptr [rbp-0x68]
mov edi, dword ptr [rbp-0x2C]
- jmp G_M53180_IG10
- ;; size=82 bbWeight=64 PerfScore 1792.00
-G_M53180_IG20:
+ mov r8d, dword ptr [rbp-0x5C]
+ jmp G_M53180_IG08
+ ;; size=87 bbWeight=64 PerfScore 1984.00
+G_M53180_IG18:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M53180_IG21:
+G_M53180_IG19:
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_M53180_IG22:
+G_M53180_IG20:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]
call CORINFO_HELP_GET_GCSTATIC_BASE
- mov rax, gword ptr [rbp-0x90]
- jmp G_M53180_IG18
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M53180_IG23:
+ mov rax, gword ptr [rbp-0x70]
+ jmp G_M53180_IG16
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M53180_IG21:
mov edi, dword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowKeyNotFoundException[int](int)
call [rax]System.ThrowHelper:ThrowKeyNotFoundException[int](int)
int3
;; size=16 bbWeight=0 PerfScore 0.00
-G_M53180_IG24:
+G_M53180_IG22:
mov rax, r14
;; size=3 bbWeight=1 PerfScore 0.25
-G_M53180_IG25:
- vzeroupper
- add rsp, 120
+G_M53180_IG23:
+ add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 5.25
-G_M53180_IG26:
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M53180_IG24:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0xA0]
+ lea rbp, [rbp+0x90]
;; size=25 bbWeight=0 PerfScore 0.00
-G_M53180_IG27:
- vzeroupper
+G_M53180_IG25:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 831, prolog size 56, PerfScore 4477.46, instruction count 219, allocated bytes for code 831 (MethodHash=d9be3043) for method ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts)
+; Total bytes of code 850, prolog size 45, PerfScore 4962.58, instruction count 234, allocated bytes for code 850 (MethodHash=d9be3043) for method ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:UpdateTransitionCodeOffset(System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition]):System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcTransition]]:this (FullOpts) 11 (1.77 % of base) - System.Linq.Expressions.ExpressionVisitor:Visit[System.Numerics.Vector`1[float]](System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]] ; Assembly listing for method System.Linq.Expressions.ExpressionVisitor:Visit[System.Numerics.Vector`1[float]](System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]] (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; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 9, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]]>
; V01 arg1 [V01,T04] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
; V02 loc0 [V02,T02] ( 11, 29.66) ref -> r14 class-hnd <System.Numerics.Vector`1[float][]>
;* V03 loc1 [V03,T09] ( 0, 0 ) int -> zero-ref
-; V04 loc2 [V04,T07] ( 4, 8 ) int -> r12
+; V04 loc2 [V04,T06] ( 4, 8 ) int -> r12
; V05 loc3 [V05,T12] ( 3, 8 ) simd32 -> [rbp-0x50] do-not-enreg[HS] hidden-struct-arg <System.Numerics.Vector`1[float]>
; V06 loc4 [V06,T00] ( 12, 82.16) int -> [rbp-0x54]
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T11] ( 2, 16 ) simd32 -> [rbp-0x90] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument"
-; V09 tmp2 [V09,T05] ( 3, 12 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
-; V10 tmp3 [V10,T06] ( 3, 12 ) ref -> [rbp-0xC0] class-hnd exact spill-single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Numerics.Vector`1[float]>
+; V10 tmp3 [V10,T05] ( 3, 12 ) ref -> [rbp-0xE0] class-hnd exact spill-single-def "Single-def Box Helper" <System.Numerics.Vector`1[float]>
; V11 tmp4 [V11,T10] ( 4, 64 ) simd32 -> [rbp-0xB0] do-not-enreg[HS] hidden-struct-arg "Strict ordering of exceptions for Array store"
; V12 tmp5 [V12,T08] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Numerics.Vector`1[float]]>
-; V13 rat0 [V13,T01] ( 12, 42 ) long -> r13 "Widened IV V03"
+; V13 tmp6 [V13 ] ( 4, 8 ) struct (40) [rbp-0xD8] do-not-enreg[XSF] addr-exposed "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[System.Numerics.Vector`1[float]]>
+; V14 cse0 [V14,T07] ( 3, 6 ) long -> rdi "CSE #01: aggressive"
+; V15 rat0 [V15,T01] ( 12, 42 ) long -> r13 "Widened IV V03"
;
-; Lcl frame size = 184
+; Lcl frame size = 216
G_M3520_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 184
- lea rbp, [rsp+0xE0]
+ sub rsp, 216
+ lea rbp, [rsp+0x100]
mov rbx, rdi
mov r15, rsi
;; size=31 bbWeight=1 PerfScore 7.25
G_M3520_IG02:
test rbx, rbx
je G_M3520_IG16
test r15, r15
je G_M3520_IG15
xor r14, r14
xor r13d, r13d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.Numerics.Vector`1[float]]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[System.Numerics.Vector`1[float]]:get_Count():int:this
mov r12d, eax
test r12d, r12d
jle G_M3520_IG09
;; size=53 bbWeight=1 PerfScore 9.75
G_M3520_IG03:
mov rdi, gword ptr [rbx+0x08]
lea rsi, [rbp-0x90]
mov edx, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
call [r11]System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
vmovups ymm0, ymmword ptr [rbp-0x90]
vmovups ymmword ptr [rsp], ymm0
lea rsi, [rbp-0x50]
mov rdi, gword ptr [r15+0x08]
call [r15+0x18]System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]:Invoke(System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float]:this
test r14, r14
jne G_M3520_IG07
;; size=61 bbWeight=4 PerfScore 71.00
G_M3520_IG04:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu ymmword ptr [rbp-0xD8], ymm0
+ vmovdqu xmmword ptr [rbp-0xC0], xmm0
mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0xB8], rax
+ mov qword ptr [rbp-0xD8], rdi
vmovups ymm0, ymmword ptr [rbp-0x50]
- vmovups ymmword ptr [rax+0x08], ymm0
- mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
+ vmovups ymmword ptr [rbp-0xD0], ymm0
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0xC0], rax
+ mov gword ptr [rbp-0xE0], rax
mov rdi, gword ptr [rbx+0x08]
lea rsi, bword ptr [rax+0x08]
mov edx, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
call [r11]System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
- mov rsi, gword ptr [rbp-0xB8]
- cmp rsi, gword ptr [rbp-0xC0]
+ lea rsi, [rbp-0xD8]
+ mov rdi, gword ptr [rbp-0xE0]
+ cmp rsi, rdi
je G_M3520_IG08
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float][]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
xor eax, eax
test r13d, r13d
jle SHORT G_M3520_IG07
- ;; size=126 bbWeight=2 PerfScore 47.50
+ ;; size=137 bbWeight=2 PerfScore 45.17
G_M3520_IG05:
cmp dword ptr [r14+0x08], r13d
jl G_M3520_IG12
;; size=10 bbWeight=1 PerfScore 4.00
G_M3520_IG06:
mov rdi, gword ptr [rbx+0x08]
lea rsi, [rbp-0xB0]
mov dword ptr [rbp-0x54], eax
mov edx, eax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
call [r11]System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
mov eax, dword ptr [rbp-0x54]
mov edi, eax
shl rdi, 5
vmovups ymm0, ymmword ptr [rbp-0xB0]
vmovups ymmword ptr [r14+rdi+0x10], ymm0
inc eax
cmp eax, r13d
jl SHORT G_M3520_IG06
;; size=60 bbWeight=15.84 PerfScore 257.40
G_M3520_IG07:
cmp r13d, dword ptr [r14+0x08]
jae G_M3520_IG17
mov rax, r13
shl rax, 5
vmovups ymm0, ymmword ptr [rbp-0x50]
vmovups ymmword ptr [r14+rax+0x10], ymm0
;; size=29 bbWeight=2 PerfScore 21.50
G_M3520_IG08:
inc r13d
cmp r13d, r12d
jl G_M3520_IG03
;; size=12 bbWeight=4 PerfScore 6.00
G_M3520_IG09:
test r14, r14
jne SHORT G_M3520_IG13
;; size=5 bbWeight=1 PerfScore 1.25
G_M3520_IG10:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M3520_IG11:
vzeroupper
- add rsp, 184
+ add rsp, 216
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
G_M3520_IG12:
mov rdi, gword ptr [rbx+0x08]
lea rsi, [rbp-0xB0]
mov dword ptr [rbp-0x54], eax
mov edx, eax
mov r11, 0xD1FFAB1E ; function address
call [r11]System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
mov edi, dword ptr [rbp-0x54]
cmp edi, dword ptr [r14+0x08]
jae G_M3520_IG17
mov eax, edi
shl rax, 5
vmovups ymm0, ymmword ptr [rbp-0xB0]
vmovups ymmword ptr [r14+rax+0x10], ymm0
inc edi
cmp edi, r13d
mov eax, edi
jl SHORT G_M3520_IG12
jmp G_M3520_IG07
;; size=77 bbWeight=0.16 PerfScore 3.60
G_M3520_IG13:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Numerics.Vector`1[float]]
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rax, rbx
;; size=33 bbWeight=0.50 PerfScore 1.75
G_M3520_IG14:
vzeroupper
- add rsp, 184
+ add rsp, 216
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=0.50 PerfScore 2.62
G_M3520_IG15:
mov edi, 0x3B01
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M3520_IG16:
mov edi, 0x3AF5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M3520_IG17:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 620, prolog size 25, PerfScore 436.38, instruction count 144, allocated bytes for code 620 (MethodHash=f352f23f) for method System.Linq.Expressions.ExpressionVisitor:Visit[System.Numerics.Vector`1[float]](System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]] (FullOpts)
+; Total bytes of code 631, prolog size 25, PerfScore 434.04, instruction count 146, allocated bytes for code 631 (MethodHash=f352f23f) for method System.Linq.Expressions.ExpressionVisitor:Visit[System.Numerics.Vector`1[float]](System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Numerics.Vector`1[float]] (FullOpts) |
Top method improvements-70 (-13.49 % of base) - System.Linq.Expressions.ExpressionVisitor:Visit[double](System.Collections.ObjectModel.ReadOnlyCollection`1[double],System.Func`2[double,double]):System.Collections.ObjectModel.ReadOnlyCollection`1[double] ; Assembly listing for method System.Linq.Expressions.ExpressionVisitor:Visit[double](System.Collections.ObjectModel.ReadOnlyCollection`1[double],System.Func`2[double,double]):System.Collections.ObjectModel.ReadOnlyCollection`1[double] (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; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 9, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[double]>
; V01 arg1 [V01,T04] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[double,double]>
-; V02 loc0 [V02,T02] ( 11, 29.66) ref -> r14 class-hnd <double[]>
-;* V03 loc1 [V03,T09] ( 0, 0 ) int -> zero-ref
-; V04 loc2 [V04,T07] ( 4, 8 ) int -> r12
-; V05 loc3 [V05,T12] ( 3, 8 ) double -> [rbp-0x30] spill-single-def
+; V02 loc0 [V02,T02] ( 11, 33.66) ref -> r14 class-hnd <double[]>
+;* V03 loc1 [V03,T07] ( 0, 0 ) int -> zero-ref
+; V04 loc2 [V04,T05] ( 4, 8 ) int -> r12
+; V05 loc3 [V05,T10] ( 2, 8 ) double -> [rbp-0x30] spill-single-def
; V06 loc4 [V06,T00] ( 12, 82.16) int -> [rbp-0x34]
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 3, 12 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "Single-def Box Helper" <System.Double>
-; V09 tmp2 [V09,T06] ( 3, 12 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "Single-def Box Helper" <System.Double>
-; V10 tmp3 [V10,T10] ( 4, 64 ) double -> mm0 "Strict ordering of exceptions for Array store"
-; V11 tmp4 [V11,T08] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[double]>
-; V12 tmp5 [V12,T11] ( 2, 16 ) double -> mm0 "argument with side effect"
-; V13 rat0 [V13,T01] ( 12, 42 ) long -> r13 "Widened IV V03"
+;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Double>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Double>
+; V10 tmp3 [V10,T08] ( 4, 64 ) double -> mm0 "Strict ordering of exceptions for Array store"
+; V11 tmp4 [V11,T06] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[double]>
+;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[double]>
+;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[double]>
+; V14 tmp7 [V14,T09] ( 2, 16 ) double -> mm0 "argument with side effect"
+; V15 rat0 [V15,T01] ( 12, 46 ) long -> r13 "Widened IV V03"
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M3862_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
mov rbx, rdi
mov r15, rsi
;; size=25 bbWeight=1 PerfScore 7.25
G_M3862_IG02:
test rbx, rbx
- je G_M3862_IG16
- test r15, r15
je G_M3862_IG15
+ test r15, r15
+ je G_M3862_IG14
xor r14, r14
xor r13d, r13d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[double]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[double]:get_Count():int:this
mov r12d, eax
test r12d, r12d
- jle G_M3862_IG09
+ jle G_M3862_IG08
;; size=53 bbWeight=1 PerfScore 9.75
G_M3862_IG03:
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[double]:get_Item(int):double:this
call [r11]System.Collections.Generic.IList`1[double]:get_Item(int):double:this
mov rdi, gword ptr [r15+0x08]
call [r15+0x18]System.Func`2[double,double]:Invoke(double):double:this
vmovsd qword ptr [rbp-0x30], xmm0
test r14, r14
- jne G_M3862_IG07
- ;; size=42 bbWeight=4 PerfScore 51.00
+ jne SHORT G_M3862_IG07
+ ;; size=38 bbWeight=4 PerfScore 51.00
G_M3862_IG04:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
- vmovsd xmm0, qword ptr [rbp-0x30]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x48], rax
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[double]:get_Item(int):double:this
call [r11]System.Collections.Generic.IList`1[double]:get_Item(int):double:this
- mov rsi, gword ptr [rbp-0x48]
- vmovsd qword ptr [rsi+0x08], xmm0
- mov rdi, gword ptr [rbp-0x40]
- cmp rdi, rsi
- je SHORT G_M3862_IG08
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; double[]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
xor eax, eax
test r13d, r13d
jle SHORT G_M3862_IG07
- ;; size=114 bbWeight=2 PerfScore 47.00
+ ;; size=48 bbWeight=2 PerfScore 17.50
G_M3862_IG05:
cmp dword ptr [r14+0x08], r13d
- jl SHORT G_M3862_IG12
+ jl SHORT G_M3862_IG11
;; size=6 bbWeight=1 PerfScore 4.00
G_M3862_IG06:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x34], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[double]:get_Item(int):double:this
call [r11]System.Collections.Generic.IList`1[double]:get_Item(int):double:this
mov eax, dword ptr [rbp-0x34]
mov edi, eax
vmovsd qword ptr [r14+8*rdi+0x10], xmm0
inc eax
cmp eax, r13d
jl SHORT G_M3862_IG06
;; size=41 bbWeight=15.84 PerfScore 178.20
G_M3862_IG07:
cmp r13d, dword ptr [r14+0x08]
- jae G_M3862_IG17
+ jae G_M3862_IG16
vmovsd xmm0, qword ptr [rbp-0x30]
vmovsd qword ptr [r14+8*r13+0x10], xmm0
- ;; size=22 bbWeight=2 PerfScore 18.00
-G_M3862_IG08:
inc r13d
cmp r13d, r12d
jl G_M3862_IG03
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M3862_IG09:
+ ;; size=34 bbWeight=4 PerfScore 42.00
+G_M3862_IG08:
test r14, r14
- jne SHORT G_M3862_IG13
+ jne SHORT G_M3862_IG12
;; size=5 bbWeight=1 PerfScore 1.25
-G_M3862_IG10:
+G_M3862_IG09:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M3862_IG11:
- add rsp, 40
+G_M3862_IG10:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M3862_IG12:
+G_M3862_IG11:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x34], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; function address
call [r11]System.Collections.Generic.IList`1[double]:get_Item(int):double:this
mov edi, dword ptr [rbp-0x34]
cmp edi, dword ptr [r14+0x08]
- jae G_M3862_IG17
+ jae G_M3862_IG16
mov eax, edi
vmovsd qword ptr [r14+8*rax+0x10], xmm0
inc edi
cmp edi, r13d
mov eax, edi
- jl SHORT G_M3862_IG12
+ jl SHORT G_M3862_IG11
jmp SHORT G_M3862_IG07
;; size=55 bbWeight=0.16 PerfScore 2.80
-G_M3862_IG13:
+G_M3862_IG12:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[double]
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rax, rbx
;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M3862_IG14:
- add rsp, 40
+G_M3862_IG13:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M3862_IG15:
+G_M3862_IG14:
mov edi, 0x3B01
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M3862_IG16:
+G_M3862_IG15:
mov edi, 0x3AF5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M3862_IG17:
+G_M3862_IG16:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 519, prolog size 19, PerfScore 331.38, instruction count 132, allocated bytes for code 519 (MethodHash=5a3ef0e9) for method System.Linq.Expressions.ExpressionVisitor:Visit[double](System.Collections.ObjectModel.ReadOnlyCollection`1[double],System.Func`2[double,double]):System.Collections.ObjectModel.ReadOnlyCollection`1[double] (FullOpts)
+; Total bytes of code 449, prolog size 19, PerfScore 319.88, instruction count 119, allocated bytes for code 449 (MethodHash=5a3ef0e9) for method System.Linq.Expressions.ExpressionVisitor:Visit[double](System.Collections.ObjectModel.ReadOnlyCollection`1[double],System.Func`2[double,double]):System.Collections.ObjectModel.ReadOnlyCollection`1[double] (FullOpts) -69 (-13.48 % of base) - System.Linq.Expressions.ExpressionVisitor:Visit[short](System.Collections.ObjectModel.ReadOnlyCollection`1[short],System.Func`2[short,short]):System.Collections.ObjectModel.ReadOnlyCollection`1[short] ; Assembly listing for method System.Linq.Expressions.ExpressionVisitor:Visit[short](System.Collections.ObjectModel.ReadOnlyCollection`1[short],System.Func`2[short,short]):System.Collections.ObjectModel.ReadOnlyCollection`1[short] (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; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 9, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[short]>
; V01 arg1 [V01,T06] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[short,short]>
-; V02 loc0 [V02,T03] ( 11, 29.66) ref -> r14 class-hnd <short[]>
-;* V03 loc1 [V03,T12] ( 0, 0 ) int -> zero-ref
-; V04 loc2 [V04,T09] ( 4, 8 ) int -> r12
-; V05 loc3 [V05,T10] ( 3, 8 ) short -> [rbp-0x2C] spill-single-def
+; V02 loc0 [V02,T03] ( 11, 33.66) ref -> r14 class-hnd <short[]>
+;* V03 loc1 [V03,T10] ( 0, 0 ) int -> zero-ref
+; V04 loc2 [V04,T07] ( 4, 8 ) int -> r12
+; V05 loc3 [V05,T08] ( 2, 8 ) short -> [rbp-0x2C] spill-single-def
; V06 loc4 [V06,T00] ( 12, 82.16) int -> [rbp-0x30]
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 3, 12 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int16>
-; V09 tmp2 [V09,T08] ( 3, 12 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int16>
+;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int16>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int16>
; V10 tmp3 [V10,T01] ( 4, 64 ) int -> rax "Strict ordering of exceptions for Array store"
-; V11 tmp4 [V11,T11] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[short]>
-; V12 tmp5 [V12,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V13 rat0 [V13,T02] ( 12, 42 ) long -> r13 "Widened IV V03"
+; V11 tmp4 [V11,T09] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[short]>
+;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[short]>
+;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[short]>
+; V14 tmp7 [V14,T05] ( 2, 16 ) int -> rsi "argument with side effect"
+; V15 rat0 [V15,T02] ( 12, 46 ) long -> r13 "Widened IV V03"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M56529_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ push rax
+ lea rbp, [rsp+0x30]
mov rbx, rdi
mov r15, rsi
- ;; size=25 bbWeight=1 PerfScore 7.25
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M56529_IG02:
test rbx, rbx
- je G_M56529_IG16
- test r15, r15
je G_M56529_IG15
+ test r15, r15
+ je G_M56529_IG14
xor r14, r14
xor r13d, r13d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[short]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[short]:get_Count():int:this
mov r12d, eax
test r12d, r12d
- jle G_M56529_IG09
+ jle G_M56529_IG08
;; size=53 bbWeight=1 PerfScore 9.75
G_M56529_IG03:
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[short]:get_Item(int):short:this
call [r11]System.Collections.Generic.IList`1[short]:get_Item(int):short:this
mov esi, eax
mov rdi, gword ptr [r15+0x08]
call [r15+0x18]System.Func`2[short,short]:Invoke(short):short:this
mov dword ptr [rbp-0x2C], eax
test r14, r14
- jne G_M56529_IG07
- ;; size=42 bbWeight=4 PerfScore 52.00
+ jne SHORT G_M56529_IG07
+ ;; size=38 bbWeight=4 PerfScore 52.00
G_M56529_IG04:
- mov rdi, 0xD1FFAB1E ; System.Int16
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
- mov ecx, dword ptr [rbp-0x2C]
- mov word ptr [rax+0x08], cx
- mov rdi, 0xD1FFAB1E ; System.Int16
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[short]:get_Item(int):short:this
call [r11]System.Collections.Generic.IList`1[short]:get_Item(int):short:this
- mov rsi, gword ptr [rbp-0x40]
- mov word ptr [rsi+0x08], ax
- mov rdi, gword ptr [rbp-0x38]
- cmp rdi, rsi
- je SHORT G_M56529_IG08
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; short[]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
xor eax, eax
test r13d, r13d
jle SHORT G_M56529_IG07
- ;; size=110 bbWeight=2 PerfScore 39.00
+ ;; size=48 bbWeight=2 PerfScore 17.50
G_M56529_IG05:
cmp dword ptr [r14+0x08], r13d
- jl SHORT G_M56529_IG12
+ jl SHORT G_M56529_IG11
;; size=6 bbWeight=1 PerfScore 4.00
G_M56529_IG06:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x30], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[short]:get_Item(int):short:this
call [r11]System.Collections.Generic.IList`1[short]:get_Item(int):short:this
mov edi, dword ptr [rbp-0x30]
mov esi, edi
mov word ptr [r14+2*rsi+0x10], ax
inc edi
cmp edi, r13d
mov eax, edi
jl SHORT G_M56529_IG06
;; size=42 bbWeight=15.84 PerfScore 166.32
G_M56529_IG07:
cmp r13d, dword ptr [r14+0x08]
- jae G_M56529_IG17
+ jae G_M56529_IG16
mov ecx, dword ptr [rbp-0x2C]
mov word ptr [r14+2*r13+0x10], cx
- ;; size=19 bbWeight=2 PerfScore 12.00
-G_M56529_IG08:
inc r13d
cmp r13d, r12d
jl G_M56529_IG03
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M56529_IG09:
+ ;; size=31 bbWeight=4 PerfScore 30.00
+G_M56529_IG08:
test r14, r14
- jne SHORT G_M56529_IG13
+ jne SHORT G_M56529_IG12
;; size=5 bbWeight=1 PerfScore 1.25
-G_M56529_IG10:
+G_M56529_IG09:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M56529_IG11:
- add rsp, 24
+G_M56529_IG10:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M56529_IG12:
+G_M56529_IG11:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x30], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; function address
call [r11]System.Collections.Generic.IList`1[short]:get_Item(int):short:this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [r14+0x08]
- jae G_M56529_IG17
+ jae G_M56529_IG16
mov ecx, edi
mov word ptr [r14+2*rcx+0x10], ax
inc edi
cmp edi, r13d
mov eax, edi
- jl SHORT G_M56529_IG12
+ jl SHORT G_M56529_IG11
jmp SHORT G_M56529_IG07
;; size=54 bbWeight=0.16 PerfScore 2.64
-G_M56529_IG13:
+G_M56529_IG12:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[short]
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rax, rbx
;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M56529_IG14:
- add rsp, 24
+G_M56529_IG13:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M56529_IG15:
+G_M56529_IG14:
mov edi, 0x3B01
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M56529_IG16:
+G_M56529_IG15:
mov edi, 0x3AF5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M56529_IG17:
+G_M56529_IG16:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 19, PerfScore 306.34, instruction count 134, allocated bytes for code 512 (MethodHash=e7be232e) for method System.Linq.Expressions.ExpressionVisitor:Visit[short](System.Collections.ObjectModel.ReadOnlyCollection`1[short],System.Func`2[short,short]):System.Collections.ObjectModel.ReadOnlyCollection`1[short] (FullOpts)
+; Total bytes of code 443, prolog size 16, PerfScore 297.59, instruction count 121, allocated bytes for code 443 (MethodHash=e7be232e) for method System.Linq.Expressions.ExpressionVisitor:Visit[short](System.Collections.ObjectModel.ReadOnlyCollection`1[short],System.Func`2[short,short]):System.Collections.ObjectModel.ReadOnlyCollection`1[short] (FullOpts) -67 (-13.21 % of base) - System.Linq.Expressions.ExpressionVisitor:Visit[int](System.Collections.ObjectModel.ReadOnlyCollection`1[int],System.Func`2[int,int]):System.Collections.ObjectModel.ReadOnlyCollection`1[int] ; Assembly listing for method System.Linq.Expressions.ExpressionVisitor:Visit[int](System.Collections.ObjectModel.ReadOnlyCollection`1[int],System.Func`2[int,int]):System.Collections.ObjectModel.ReadOnlyCollection`1[int] (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; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 9, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[int]>
; V01 arg1 [V01,T06] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[int,int]>
-; V02 loc0 [V02,T03] ( 11, 29.66) ref -> r14 class-hnd <int[]>
-;* V03 loc1 [V03,T12] ( 0, 0 ) int -> zero-ref
-; V04 loc2 [V04,T09] ( 4, 8 ) int -> r12
-; V05 loc3 [V05,T10] ( 3, 8 ) int -> [rbp-0x2C] spill-single-def
+; V02 loc0 [V02,T03] ( 11, 33.66) ref -> r14 class-hnd <int[]>
+;* V03 loc1 [V03,T10] ( 0, 0 ) int -> zero-ref
+; V04 loc2 [V04,T07] ( 4, 8 ) int -> r12
+; V05 loc3 [V05,T08] ( 2, 8 ) int -> [rbp-0x2C] spill-single-def
; V06 loc4 [V06,T00] ( 12, 82.16) int -> [rbp-0x30]
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 3, 12 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int32>
-; V09 tmp2 [V09,T08] ( 3, 12 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int32>
+;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
; V10 tmp3 [V10,T01] ( 4, 64 ) int -> rax "Strict ordering of exceptions for Array store"
-; V11 tmp4 [V11,T11] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[int]>
-; V12 tmp5 [V12,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V13 rat0 [V13,T02] ( 12, 42 ) long -> r13 "Widened IV V03"
+; V11 tmp4 [V11,T09] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[int]>
+;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[int]>
+;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[int]>
+; V14 tmp7 [V14,T05] ( 2, 16 ) int -> rsi "argument with side effect"
+; V15 rat0 [V15,T02] ( 12, 46 ) long -> r13 "Widened IV V03"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M35728_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ push rax
+ lea rbp, [rsp+0x30]
mov rbx, rdi
mov r15, rsi
- ;; size=25 bbWeight=1 PerfScore 7.25
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M35728_IG02:
test rbx, rbx
- je G_M35728_IG16
- test r15, r15
je G_M35728_IG15
+ test r15, r15
+ je G_M35728_IG14
xor r14, r14
xor r13d, r13d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[int]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[int]:get_Count():int:this
mov r12d, eax
test r12d, r12d
- jle G_M35728_IG09
+ jle G_M35728_IG08
;; size=53 bbWeight=1 PerfScore 9.75
G_M35728_IG03:
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[int]:get_Item(int):int:this
call [r11]System.Collections.Generic.IList`1[int]:get_Item(int):int:this
mov esi, eax
mov rdi, gword ptr [r15+0x08]
call [r15+0x18]System.Func`2[int,int]:Invoke(int):int:this
mov dword ptr [rbp-0x2C], eax
test r14, r14
- jne G_M35728_IG07
- ;; size=42 bbWeight=4 PerfScore 52.00
+ jne SHORT G_M35728_IG07
+ ;; size=38 bbWeight=4 PerfScore 52.00
G_M35728_IG04:
- mov rdi, 0xD1FFAB1E ; System.Int32
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
- mov ecx, dword ptr [rbp-0x2C]
- mov dword ptr [rax+0x08], ecx
- mov rdi, 0xD1FFAB1E ; System.Int32
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[int]:get_Item(int):int:this
call [r11]System.Collections.Generic.IList`1[int]:get_Item(int):int:this
- mov rsi, gword ptr [rbp-0x40]
- mov dword ptr [rsi+0x08], eax
- mov rdi, gword ptr [rbp-0x38]
- cmp rdi, rsi
- je SHORT G_M35728_IG08
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; int[]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
xor eax, eax
test r13d, r13d
jle SHORT G_M35728_IG07
- ;; size=108 bbWeight=2 PerfScore 39.00
+ ;; size=48 bbWeight=2 PerfScore 17.50
G_M35728_IG05:
cmp dword ptr [r14+0x08], r13d
- jl SHORT G_M35728_IG12
+ jl SHORT G_M35728_IG11
;; size=6 bbWeight=1 PerfScore 4.00
G_M35728_IG06:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x30], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[int]:get_Item(int):int:this
call [r11]System.Collections.Generic.IList`1[int]:get_Item(int):int:this
mov edi, dword ptr [rbp-0x30]
mov esi, edi
mov dword ptr [r14+4*rsi+0x10], eax
inc edi
cmp edi, r13d
mov eax, edi
jl SHORT G_M35728_IG06
;; size=41 bbWeight=15.84 PerfScore 166.32
G_M35728_IG07:
cmp r13d, dword ptr [r14+0x08]
- jae G_M35728_IG17
+ jae G_M35728_IG16
mov ecx, dword ptr [rbp-0x2C]
mov dword ptr [r14+4*r13+0x10], ecx
- ;; size=18 bbWeight=2 PerfScore 12.00
-G_M35728_IG08:
inc r13d
cmp r13d, r12d
jl G_M35728_IG03
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M35728_IG09:
+ ;; size=30 bbWeight=4 PerfScore 30.00
+G_M35728_IG08:
test r14, r14
- jne SHORT G_M35728_IG13
+ jne SHORT G_M35728_IG12
;; size=5 bbWeight=1 PerfScore 1.25
-G_M35728_IG10:
+G_M35728_IG09:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M35728_IG11:
- add rsp, 24
+G_M35728_IG10:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M35728_IG12:
+G_M35728_IG11:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x30], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; function address
call [r11]System.Collections.Generic.IList`1[int]:get_Item(int):int:this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [r14+0x08]
- jae G_M35728_IG17
+ jae G_M35728_IG16
mov ecx, edi
mov dword ptr [r14+4*rcx+0x10], eax
inc edi
cmp edi, r13d
mov eax, edi
- jl SHORT G_M35728_IG12
+ jl SHORT G_M35728_IG11
jmp SHORT G_M35728_IG07
;; size=53 bbWeight=0.16 PerfScore 2.64
-G_M35728_IG13:
+G_M35728_IG12:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[int]
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rax, rbx
;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M35728_IG14:
- add rsp, 24
+G_M35728_IG13:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M35728_IG15:
+G_M35728_IG14:
mov edi, 0x3B01
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35728_IG16:
+G_M35728_IG15:
mov edi, 0x3AF5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35728_IG17:
+G_M35728_IG16:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 507, prolog size 19, PerfScore 306.34, instruction count 134, allocated bytes for code 507 (MethodHash=f676746f) for method System.Linq.Expressions.ExpressionVisitor:Visit[int](System.Collections.ObjectModel.ReadOnlyCollection`1[int],System.Func`2[int,int]):System.Collections.ObjectModel.ReadOnlyCollection`1[int] (FullOpts)
+; Total bytes of code 440, prolog size 16, PerfScore 297.59, instruction count 121, allocated bytes for code 440 (MethodHash=f676746f) for method System.Linq.Expressions.ExpressionVisitor:Visit[int](System.Collections.ObjectModel.ReadOnlyCollection`1[int],System.Func`2[int,int]):System.Collections.ObjectModel.ReadOnlyCollection`1[int] (FullOpts) -67 (-13.06 % of base) - System.Linq.Expressions.ExpressionVisitor:Visit[long](System.Collections.ObjectModel.ReadOnlyCollection`1[long],System.Func`2[long,long]):System.Collections.ObjectModel.ReadOnlyCollection`1[long] ; Assembly listing for method System.Linq.Expressions.ExpressionVisitor:Visit[long](System.Collections.ObjectModel.ReadOnlyCollection`1[long],System.Func`2[long,long]):System.Collections.ObjectModel.ReadOnlyCollection`1[long] (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; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 9, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[long]>
; V01 arg1 [V01,T06] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[long,long]>
-; V02 loc0 [V02,T03] ( 11, 29.66) ref -> r14 class-hnd <long[]>
-;* V03 loc1 [V03,T12] ( 0, 0 ) int -> zero-ref
-; V04 loc2 [V04,T09] ( 4, 8 ) int -> r12
-; V05 loc3 [V05,T10] ( 3, 8 ) long -> [rbp-0x30] spill-single-def
+; V02 loc0 [V02,T03] ( 11, 33.66) ref -> r14 class-hnd <long[]>
+;* V03 loc1 [V03,T10] ( 0, 0 ) int -> zero-ref
+; V04 loc2 [V04,T07] ( 4, 8 ) int -> r12
+; V05 loc3 [V05,T08] ( 2, 8 ) long -> [rbp-0x30] spill-single-def
; V06 loc4 [V06,T00] ( 12, 82.16) int -> [rbp-0x34]
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 3, 12 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int64>
-; V09 tmp2 [V09,T08] ( 3, 12 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int64>
+;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int64>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int64>
; V10 tmp3 [V10,T01] ( 4, 64 ) long -> rax "Strict ordering of exceptions for Array store"
-; V11 tmp4 [V11,T11] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[long]>
-; V12 tmp5 [V12,T05] ( 2, 16 ) long -> rsi "argument with side effect"
-; V13 rat0 [V13,T02] ( 12, 42 ) long -> r13 "Widened IV V03"
+; V11 tmp4 [V11,T09] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[long]>
+;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[long]>
+;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[long]>
+; V14 tmp7 [V14,T05] ( 2, 16 ) long -> rsi "argument with side effect"
+; V15 rat0 [V15,T02] ( 12, 46 ) long -> r13 "Widened IV V03"
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M41065_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
mov rbx, rdi
mov r15, rsi
;; size=25 bbWeight=1 PerfScore 7.25
G_M41065_IG02:
test rbx, rbx
- je G_M41065_IG16
- test r15, r15
je G_M41065_IG15
+ test r15, r15
+ je G_M41065_IG14
xor r14, r14
xor r13d, r13d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[long]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[long]:get_Count():int:this
mov r12d, eax
test r12d, r12d
- jle G_M41065_IG09
+ jle G_M41065_IG08
;; size=53 bbWeight=1 PerfScore 9.75
G_M41065_IG03:
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[long]:get_Item(int):long:this
call [r11]System.Collections.Generic.IList`1[long]:get_Item(int):long:this
mov rsi, rax
mov rdi, gword ptr [r15+0x08]
call [r15+0x18]System.Func`2[long,long]:Invoke(long):long:this
mov qword ptr [rbp-0x30], rax
test r14, r14
- jne G_M41065_IG07
- ;; size=44 bbWeight=4 PerfScore 52.00
+ jne SHORT G_M41065_IG07
+ ;; size=40 bbWeight=4 PerfScore 52.00
G_M41065_IG04:
- mov rdi, 0xD1FFAB1E ; System.Int64
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
- mov rcx, qword ptr [rbp-0x30]
- mov qword ptr [rax+0x08], rcx
- mov rdi, 0xD1FFAB1E ; System.Int64
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x48], rax
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[long]:get_Item(int):long:this
call [r11]System.Collections.Generic.IList`1[long]:get_Item(int):long:this
- mov rsi, gword ptr [rbp-0x48]
- mov qword ptr [rsi+0x08], rax
- mov rdi, gword ptr [rbp-0x40]
- cmp rdi, rsi
- je SHORT G_M41065_IG08
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; long[]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
xor eax, eax
test r13d, r13d
jle SHORT G_M41065_IG07
- ;; size=111 bbWeight=2 PerfScore 39.00
+ ;; size=48 bbWeight=2 PerfScore 17.50
G_M41065_IG05:
cmp dword ptr [r14+0x08], r13d
- jl SHORT G_M41065_IG12
+ jl SHORT G_M41065_IG11
;; size=6 bbWeight=1 PerfScore 4.00
G_M41065_IG06:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x34], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[long]:get_Item(int):long:this
call [r11]System.Collections.Generic.IList`1[long]:get_Item(int):long:this
mov edi, dword ptr [rbp-0x34]
mov esi, edi
mov qword ptr [r14+8*rsi+0x10], rax
inc edi
cmp edi, r13d
mov eax, edi
jl SHORT G_M41065_IG06
;; size=41 bbWeight=15.84 PerfScore 166.32
G_M41065_IG07:
cmp r13d, dword ptr [r14+0x08]
- jae G_M41065_IG17
+ jae G_M41065_IG16
mov rcx, qword ptr [rbp-0x30]
mov qword ptr [r14+8*r13+0x10], rcx
- ;; size=19 bbWeight=2 PerfScore 12.00
-G_M41065_IG08:
inc r13d
cmp r13d, r12d
jl G_M41065_IG03
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M41065_IG09:
+ ;; size=31 bbWeight=4 PerfScore 30.00
+G_M41065_IG08:
test r14, r14
- jne SHORT G_M41065_IG13
+ jne SHORT G_M41065_IG12
;; size=5 bbWeight=1 PerfScore 1.25
-G_M41065_IG10:
+G_M41065_IG09:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M41065_IG11:
- add rsp, 40
+G_M41065_IG10:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M41065_IG12:
+G_M41065_IG11:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x34], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; function address
call [r11]System.Collections.Generic.IList`1[long]:get_Item(int):long:this
mov edi, dword ptr [rbp-0x34]
cmp edi, dword ptr [r14+0x08]
- jae G_M41065_IG17
+ jae G_M41065_IG16
mov ecx, edi
mov qword ptr [r14+8*rcx+0x10], rax
inc edi
cmp edi, r13d
mov eax, edi
- jl SHORT G_M41065_IG12
+ jl SHORT G_M41065_IG11
jmp SHORT G_M41065_IG07
;; size=53 bbWeight=0.16 PerfScore 2.64
-G_M41065_IG13:
+G_M41065_IG12:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[long]
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rax, rbx
;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M41065_IG14:
- add rsp, 40
+G_M41065_IG13:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M41065_IG15:
+G_M41065_IG14:
mov edi, 0x3B01
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M41065_IG16:
+G_M41065_IG15:
mov edi, 0x3AF5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M41065_IG17:
+G_M41065_IG16:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 513, prolog size 19, PerfScore 306.34, instruction count 134, allocated bytes for code 513 (MethodHash=f4f75f96) for method System.Linq.Expressions.ExpressionVisitor:Visit[long](System.Collections.ObjectModel.ReadOnlyCollection`1[long],System.Func`2[long,long]):System.Collections.ObjectModel.ReadOnlyCollection`1[long] (FullOpts)
+; Total bytes of code 446, prolog size 19, PerfScore 296.84, instruction count 121, allocated bytes for code 446 (MethodHash=f4f75f96) for method System.Linq.Expressions.ExpressionVisitor:Visit[long](System.Collections.ObjectModel.ReadOnlyCollection`1[long],System.Func`2[long,long]):System.Collections.ObjectModel.ReadOnlyCollection`1[long] (FullOpts) -67 (-13.21 % of base) - System.Linq.Expressions.ExpressionVisitor:Visit[ubyte](System.Collections.ObjectModel.ReadOnlyCollection`1[ubyte],System.Func`2[ubyte,ubyte]):System.Collections.ObjectModel.ReadOnlyCollection`1[ubyte] ; Assembly listing for method System.Linq.Expressions.ExpressionVisitor:Visit[ubyte](System.Collections.ObjectModel.ReadOnlyCollection`1[ubyte],System.Func`2[ubyte,ubyte]):System.Collections.ObjectModel.ReadOnlyCollection`1[ubyte] (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; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 9, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[ubyte]>
; V01 arg1 [V01,T06] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[ubyte,ubyte]>
-; V02 loc0 [V02,T03] ( 11, 29.66) ref -> r14 class-hnd <ubyte[]>
-;* V03 loc1 [V03,T12] ( 0, 0 ) int -> zero-ref
-; V04 loc2 [V04,T09] ( 4, 8 ) int -> r12
-; V05 loc3 [V05,T10] ( 3, 8 ) ubyte -> [rbp-0x2C] spill-single-def
+; V02 loc0 [V02,T03] ( 11, 33.66) ref -> r14 class-hnd <ubyte[]>
+;* V03 loc1 [V03,T10] ( 0, 0 ) int -> zero-ref
+; V04 loc2 [V04,T07] ( 4, 8 ) int -> r12
+; V05 loc3 [V05,T08] ( 2, 8 ) ubyte -> [rbp-0x2C] spill-single-def
; V06 loc4 [V06,T00] ( 12, 82.16) int -> [rbp-0x30]
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 3, 12 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <System.Byte>
-; V09 tmp2 [V09,T08] ( 3, 12 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "Single-def Box Helper" <System.Byte>
+;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Byte>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Byte>
; V10 tmp3 [V10,T01] ( 4, 64 ) int -> rax "Strict ordering of exceptions for Array store"
-; V11 tmp4 [V11,T11] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[ubyte]>
-; V12 tmp5 [V12,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V13 rat0 [V13,T02] ( 12, 42 ) long -> r13 "Widened IV V03"
+; V11 tmp4 [V11,T09] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[ubyte]>
+;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[ubyte]>
+;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Runtime.CompilerServices.StackAllocatedBox`1[ubyte]>
+; V14 tmp7 [V14,T05] ( 2, 16 ) int -> rsi "argument with side effect"
+; V15 rat0 [V15,T02] ( 12, 46 ) long -> r13 "Widened IV V03"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M46492_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ push rax
+ lea rbp, [rsp+0x30]
mov rbx, rdi
mov r15, rsi
- ;; size=25 bbWeight=1 PerfScore 7.25
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M46492_IG02:
test rbx, rbx
- je G_M46492_IG16
- test r15, r15
je G_M46492_IG15
+ test r15, r15
+ je G_M46492_IG14
xor r14, r14
xor r13d, r13d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[ubyte]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[ubyte]:get_Count():int:this
mov r12d, eax
test r12d, r12d
- jle G_M46492_IG09
+ jle G_M46492_IG08
;; size=53 bbWeight=1 PerfScore 9.75
G_M46492_IG03:
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[ubyte]:get_Item(int):ubyte:this
call [r11]System.Collections.Generic.IList`1[ubyte]:get_Item(int):ubyte:this
mov esi, eax
mov rdi, gword ptr [r15+0x08]
call [r15+0x18]System.Func`2[ubyte,ubyte]:Invoke(ubyte):ubyte:this
mov dword ptr [rbp-0x2C], eax
test r14, r14
- jne G_M46492_IG07
- ;; size=42 bbWeight=4 PerfScore 52.00
+ jne SHORT G_M46492_IG07
+ ;; size=38 bbWeight=4 PerfScore 52.00
G_M46492_IG04:
- mov rdi, 0xD1FFAB1E ; System.Byte
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
- mov ecx, dword ptr [rbp-0x2C]
- mov byte ptr [rax+0x08], cl
- mov rdi, 0xD1FFAB1E ; System.Byte
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
mov rdi, gword ptr [rbx+0x08]
mov esi, r13d
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[ubyte]:get_Item(int):ubyte:this
call [r11]System.Collections.Generic.IList`1[ubyte]:get_Item(int):ubyte:this
- mov rsi, gword ptr [rbp-0x40]
- mov byte ptr [rsi+0x08], al
- mov rdi, gword ptr [rbp-0x38]
- cmp rdi, rsi
- je SHORT G_M46492_IG08
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
xor eax, eax
test r13d, r13d
jle SHORT G_M46492_IG07
- ;; size=108 bbWeight=2 PerfScore 39.00
+ ;; size=48 bbWeight=2 PerfScore 17.50
G_M46492_IG05:
cmp dword ptr [r14+0x08], r13d
- jl SHORT G_M46492_IG12
+ jl SHORT G_M46492_IG11
;; size=6 bbWeight=1 PerfScore 4.00
G_M46492_IG06:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x30], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[ubyte]:get_Item(int):ubyte:this
call [r11]System.Collections.Generic.IList`1[ubyte]:get_Item(int):ubyte:this
mov edi, dword ptr [rbp-0x30]
mov esi, edi
mov byte ptr [r14+rsi+0x10], al
inc edi
cmp edi, r13d
mov eax, edi
jl SHORT G_M46492_IG06
;; size=41 bbWeight=15.84 PerfScore 166.32
G_M46492_IG07:
cmp r13d, dword ptr [r14+0x08]
- jae G_M46492_IG17
+ jae G_M46492_IG16
mov ecx, dword ptr [rbp-0x2C]
mov byte ptr [r14+r13+0x10], cl
- ;; size=18 bbWeight=2 PerfScore 12.00
-G_M46492_IG08:
inc r13d
cmp r13d, r12d
jl G_M46492_IG03
- ;; size=12 bbWeight=4 PerfScore 6.00
-G_M46492_IG09:
+ ;; size=30 bbWeight=4 PerfScore 30.00
+G_M46492_IG08:
test r14, r14
- jne SHORT G_M46492_IG13
+ jne SHORT G_M46492_IG12
;; size=5 bbWeight=1 PerfScore 1.25
-G_M46492_IG10:
+G_M46492_IG09:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M46492_IG11:
- add rsp, 24
+G_M46492_IG10:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46492_IG12:
+G_M46492_IG11:
mov rdi, gword ptr [rbx+0x08]
mov dword ptr [rbp-0x30], eax
mov esi, eax
mov r11, 0xD1FFAB1E ; function address
call [r11]System.Collections.Generic.IList`1[ubyte]:get_Item(int):ubyte:this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [r14+0x08]
- jae G_M46492_IG17
+ jae G_M46492_IG16
mov ecx, edi
mov byte ptr [r14+rcx+0x10], al
inc edi
cmp edi, r13d
mov eax, edi
- jl SHORT G_M46492_IG12
+ jl SHORT G_M46492_IG11
jmp SHORT G_M46492_IG07
;; size=53 bbWeight=0.16 PerfScore 2.64
-G_M46492_IG13:
+G_M46492_IG12:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[ubyte]
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rax, rbx
;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M46492_IG14:
- add rsp, 24
+G_M46492_IG13:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46492_IG15:
+G_M46492_IG14:
mov edi, 0x3B01
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M46492_IG16:
+G_M46492_IG15:
mov edi, 0x3AF5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M46492_IG17:
+G_M46492_IG16:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 507, prolog size 19, PerfScore 306.34, instruction count 134, allocated bytes for code 507 (MethodHash=174c4a63) for method System.Linq.Expressions.ExpressionVisitor:Visit[ubyte](System.Collections.ObjectModel.ReadOnlyCollection`1[ubyte],System.Func`2[ubyte,ubyte]):System.Collections.ObjectModel.ReadOnlyCollection`1[ubyte] (FullOpts)
+; Total bytes of code 440, prolog size 16, PerfScore 297.59, instruction count 121, allocated bytes for code 440 (MethodHash=174c4a63) for method System.Linq.Expressions.ExpressionVisitor:Visit[ubyte](System.Collections.ObjectModel.ReadOnlyCollection`1[ubyte],System.Func`2[ubyte,ubyte]):System.Collections.ObjectModel.ReadOnlyCollection`1[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/5f1390056574e77eed6ce6a61b9740bf |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes.
dotnet/runtime#106526
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: