-130 (-87.248% of base) - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this
; Assembly listing for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 6.50) ref -> r15 this class-hnd single-def <System.Random>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Random>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Numerics.Vector`1[float]]>
-; V02 loc0 [V02,T09] ( 2, 3 ) int -> r13
-; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12
-; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax
-; V05 loc3 [V05,T10] ( 2, 4 ) simd32 -> mm0 <System.Numerics.Vector`1[float]>
-;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T04] ( 3, 5 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T02] ( 4, 7 ) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T05] ( 3, 6 ) byref -> rcx "CSE - aggressive"
-; V10 cse1 [V10,T06] ( 3, 6 ) byref -> rax "CSE - aggressive"
-; V11 cse2 [V11,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Numerics.Vector`1[float]]>
+; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M45852_IG01:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov r15, rdi
- mov r14, rsi
- mov ebx, edx
- ;; size=27 bbWeight=1 PerfScore 7.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M45852_IG02:
- mov r13d, ebx
- xor r12d, r12d
- lea eax, [rbx-0x01]
- mov dword ptr [rbp-0x34], eax
- test eax, eax
- jle SHORT G_M45852_IG07
- ;; size=16 bbWeight=1 PerfScore 3.25
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this
+ call [rax]System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this
+ nop
+ ;; size=13 bbWeight=1 PerfScore 3.50
G_M45852_IG03:
- mov rdi, qword ptr [r15]
- mov rcx, qword ptr [rdi+0x40]
- mov qword ptr [rbp-0x30], rcx
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M45852_IG04:
- mov rdi, r15
- mov esi, r12d
- mov edx, ebx
- call [rcx+0x30]System.Random:Next(int,int):int:this
- cmp eax, r12d
- je SHORT G_M45852_IG06
- ;; size=16 bbWeight=4 PerfScore 20.00
-G_M45852_IG05:
- mov ecx, r12d
- shl rcx, 5
- add rcx, r14
- vmovups ymm0, ymmword ptr [rcx]
- cmp eax, r13d
- jae SHORT G_M45852_IG08
- mov eax, eax
- shl rax, 5
- add rax, r14
- vmovups ymm1, ymmword ptr [rax]
- vmovups ymmword ptr [rcx], ymm1
- vmovups ymmword ptr [rax], ymm0
- ;; size=40 bbWeight=2 PerfScore 34.50
-G_M45852_IG06:
- inc r12d
- mov eax, dword ptr [rbp-0x34]
- cmp r12d, eax
- mov rcx, qword ptr [rbp-0x30]
- jl SHORT G_M45852_IG04
- ;; size=15 bbWeight=4 PerfScore 14.00
-G_M45852_IG07:
- vzeroupper
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
+ add rsp, 8
ret
- ;; size=18 bbWeight=1 PerfScore 5.25
-G_M45852_IG08:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 149, prolog size 19, PerfScore 87.00, instruction count 54, allocated bytes for code 149 (MethodHash=07bd4ce3) for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=07bd4ce3) for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts)
-127 (-86.986% of base) - System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this
; Assembly listing for method System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 6.50) ref -> r15 this class-hnd single-def <System.Random>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Random>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Nullable`1[int]]>
-; V02 loc0 [V02,T13] ( 2, 3 ) int -> r13
-; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12
-; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax
-;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T06] ( 3, 5 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 4, 7 ) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 tmp3 [V09,T11] ( 2, 4 ) ubyte -> rdi "field V05.hasValue (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T12] ( 2, 4 ) int -> rdx "field V05.value (fldOffset=0x4)" P-INDEP
-; V11 tmp5 [V11,T02] ( 3, 12 ) byref -> rdx "BlockOp address local"
-; V12 tmp6 [V12,T03] ( 3, 12 ) byref -> rax "BlockOp address local"
-; V13 cse0 [V13,T07] ( 3, 6 ) byref -> rcx "CSE - moderate"
-; V14 cse1 [V14,T08] ( 3, 6 ) byref -> rax "CSE - moderate"
-; V15 cse2 [V15,T10] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - moderate"
-; V16 cse3 [V16,T09] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - moderate"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Nullable`1[int]]>
+; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M4412_IG01:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov r15, rdi
- mov r14, rsi
- mov ebx, edx
- ;; size=27 bbWeight=1 PerfScore 7.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M4412_IG02:
- mov r13d, ebx
- xor r12d, r12d
- lea eax, [rbx-0x01]
- mov dword ptr [rbp-0x34], eax
- test eax, eax
- jle SHORT G_M4412_IG07
- ;; size=16 bbWeight=1 PerfScore 3.25
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.Nullable`1[int]](byref,int):this
+ call [rax]System.Random:Shuffle[System.Nullable`1[int]](byref,int):this
+ nop
+ ;; size=13 bbWeight=1 PerfScore 3.50
G_M4412_IG03:
- mov rdi, qword ptr [r15]
- mov rcx, qword ptr [rdi+0x40]
- mov qword ptr [rbp-0x30], rcx
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M4412_IG04:
- mov rdi, r15
- mov esi, r12d
- mov edx, ebx
- call [rcx+0x30]System.Random:Next(int,int):int:this
- cmp eax, r12d
- je SHORT G_M4412_IG06
- ;; size=16 bbWeight=4 PerfScore 20.00
-G_M4412_IG05:
- mov ecx, r12d
- lea rcx, bword ptr [r14+8*rcx]
- mov rdx, rcx
- movzx rdi, byte ptr [rdx]
- mov edx, dword ptr [rdx+0x04]
- cmp eax, r13d
- jae SHORT G_M4412_IG08
- mov eax, eax
- lea rax, bword ptr [r14+8*rax]
- mov rsi, qword ptr [rax]
- mov qword ptr [rcx], rsi
- mov byte ptr [rax], dil
- mov dword ptr [rax+0x04], edx
- ;; size=40 bbWeight=2 PerfScore 24.00
-G_M4412_IG06:
- inc r12d
- mov eax, dword ptr [rbp-0x34]
- cmp r12d, eax
- mov rcx, qword ptr [rbp-0x30]
- jl SHORT G_M4412_IG04
- ;; size=15 bbWeight=4 PerfScore 14.00
-G_M4412_IG07:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
+ add rsp, 8
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M4412_IG08:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 146, prolog size 19, PerfScore 75.50, instruction count 54, allocated bytes for code 146 (MethodHash=f6feeec3) for method System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=f6feeec3) for method System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts)
-120 (-86.331% of base) - System.Random:Shuffle[double](System.Span`1[double]):this
; Assembly listing for method System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def <System.Random>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Random>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[double]>
-; V02 loc0 [V02,T09] ( 2, 3 ) int -> r13
-; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12
-; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax
-; V05 loc3 [V05,T10] ( 2, 4 ) double -> mm0
-;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive"
-; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]>
+; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M20668_IG01:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov r14, rdi
- mov rbx, rsi
- mov r15d, edx
- ;; size=28 bbWeight=1 PerfScore 7.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M20668_IG02:
- mov r13d, r15d
- xor r12d, r12d
- lea eax, [r15-0x01]
- mov dword ptr [rbp-0x34], eax
- test eax, eax
- jle SHORT G_M20668_IG07
- ;; size=17 bbWeight=1 PerfScore 3.25
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[double](byref,int):this
+ call [rax]System.Random:Shuffle[double](byref,int):this
+ nop
+ ;; size=13 bbWeight=1 PerfScore 3.50
G_M20668_IG03:
- mov rdi, qword ptr [r14]
- mov rcx, qword ptr [rdi+0x40]
- mov qword ptr [rbp-0x30], rcx
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M20668_IG04:
- mov rdi, r14
- mov esi, r12d
- mov edx, r15d
- call [rcx+0x30]System.Random:Next(int,int):int:this
- cmp eax, r12d
- je SHORT G_M20668_IG06
- ;; size=17 bbWeight=4 PerfScore 20.00
-G_M20668_IG05:
- mov ecx, r12d
- vmovsd xmm0, qword ptr [rbx+8*rcx]
- cmp eax, r13d
- jae SHORT G_M20668_IG08
- mov eax, eax
- vmovsd xmm1, qword ptr [rbx+8*rax]
- vmovsd qword ptr [rbx+8*rcx], xmm1
- vmovsd qword ptr [rbx+8*rax], xmm0
- ;; size=30 bbWeight=2 PerfScore 27.50
-G_M20668_IG06:
- inc r12d
- mov eax, dword ptr [rbp-0x34]
- cmp r12d, eax
- mov rcx, qword ptr [rbp-0x30]
- jl SHORT G_M20668_IG04
- ;; size=15 bbWeight=4 PerfScore 14.00
-G_M20668_IG07:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
+ add rsp, 8
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M20668_IG08:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 139, prolog size 19, PerfScore 79.00, instruction count 49, allocated bytes for code 139 (MethodHash=621baf43) for method System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=621baf43) for method System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts)
-118 (-86.131% of base) - System.Random:Shuffle[short](System.Span`1[short]):this
; Assembly listing for method System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def <System.Random>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Random>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[short]>
-; V02 loc0 [V02,T10] ( 2, 3 ) int -> r13
-; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12
-; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax
-; V05 loc3 [V05,T09] ( 2, 4 ) short -> rdx
-;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive"
-; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[short]>
+; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M32252_IG01:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov r14, rdi
- mov rbx, rsi
- mov r15d, edx
- ;; size=28 bbWeight=1 PerfScore 7.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M32252_IG02:
- mov r13d, r15d
- xor r12d, r12d
- lea eax, [r15-0x01]
- mov dword ptr [rbp-0x34], eax
- test eax, eax
- jle SHORT G_M32252_IG07
- ;; size=17 bbWeight=1 PerfScore 3.25
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[short](byref,int):this
+ call [rax]System.Random:Shuffle[short](byref,int):this
+ nop
+ ;; size=13 bbWeight=1 PerfScore 3.50
G_M32252_IG03:
- mov rdi, qword ptr [r14]
- mov rcx, qword ptr [rdi+0x40]
- mov qword ptr [rbp-0x30], rcx
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M32252_IG04:
- mov rdi, r14
- mov esi, r12d
- mov edx, r15d
- call [rcx+0x30]System.Random:Next(int,int):int:this
- cmp eax, r12d
- je SHORT G_M32252_IG06
- ;; size=17 bbWeight=4 PerfScore 20.00
-G_M32252_IG05:
- mov ecx, r12d
- movsx rdx, word ptr [rbx+2*rcx]
- cmp eax, r13d
- jae SHORT G_M32252_IG08
- mov eax, eax
- movsx rdi, word ptr [rbx+2*rax]
- mov word ptr [rbx+2*rcx], di
- mov word ptr [rbx+2*rax], dx
- ;; size=28 bbWeight=2 PerfScore 23.50
-G_M32252_IG06:
- inc r12d
- mov eax, dword ptr [rbp-0x34]
- cmp r12d, eax
- mov rcx, qword ptr [rbp-0x30]
- jl SHORT G_M32252_IG04
- ;; size=15 bbWeight=4 PerfScore 14.00
-G_M32252_IG07:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
+ add rsp, 8
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M32252_IG08:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 137, prolog size 19, PerfScore 75.00, instruction count 49, allocated bytes for code 137 (MethodHash=89df8203) for method System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=89df8203) for method System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts)
-116 (-85.926% of base) - System.Random:Shuffle[long](System.Span`1[long]):this
; Assembly listing for method System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def <System.Random>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Random>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[long]>
-; V02 loc0 [V02,T10] ( 2, 3 ) int -> r13
-; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12
-; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax
-; V05 loc3 [V05,T09] ( 2, 4 ) long -> rdx
-;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive"
-; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[long]>
+; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M2428_IG01:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov r14, rdi
- mov rbx, rsi
- mov r15d, edx
- ;; size=28 bbWeight=1 PerfScore 7.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M2428_IG02:
- mov r13d, r15d
- xor r12d, r12d
- lea eax, [r15-0x01]
- mov dword ptr [rbp-0x34], eax
- test eax, eax
- jle SHORT G_M2428_IG07
- ;; size=17 bbWeight=1 PerfScore 3.25
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[long](byref,int):this
+ call [rax]System.Random:Shuffle[long](byref,int):this
+ nop
+ ;; size=13 bbWeight=1 PerfScore 3.50
G_M2428_IG03:
- mov rdi, qword ptr [r14]
- mov rcx, qword ptr [rdi+0x40]
- mov qword ptr [rbp-0x30], rcx
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M2428_IG04:
- mov rdi, r14
- mov esi, r12d
- mov edx, r15d
- call [rcx+0x30]System.Random:Next(int,int):int:this
- cmp eax, r12d
- je SHORT G_M2428_IG06
- ;; size=17 bbWeight=4 PerfScore 20.00
-G_M2428_IG05:
- mov ecx, r12d
- mov rdx, qword ptr [rbx+8*rcx]
- cmp eax, r13d
- jae SHORT G_M2428_IG08
- mov eax, eax
- mov rdi, qword ptr [rbx+8*rax]
- mov qword ptr [rbx+8*rcx], rdi
- mov qword ptr [rbx+8*rax], rdx
- ;; size=26 bbWeight=2 PerfScore 15.50
-G_M2428_IG06:
- inc r12d
- mov eax, dword ptr [rbp-0x34]
- cmp r12d, eax
- mov rcx, qword ptr [rbp-0x30]
- jl SHORT G_M2428_IG04
- ;; size=15 bbWeight=4 PerfScore 14.00
-G_M2428_IG07:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
+ add rsp, 8
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M2428_IG08:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 135, prolog size 19, PerfScore 67.00, instruction count 49, allocated bytes for code 135 (MethodHash=0961f683) for method System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=0961f683) for method System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts)
-116 (-85.926% of base) - System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this
; Assembly listing for method System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def <System.Random>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Random>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 loc0 [V02,T10] ( 2, 3 ) int -> r13
-; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12
-; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax
-; V05 loc3 [V05,T09] ( 2, 4 ) ubyte -> rdx
-;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive"
-; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M13980_IG01:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov r14, rdi
- mov rbx, rsi
- mov r15d, edx
- ;; size=28 bbWeight=1 PerfScore 7.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M13980_IG02:
- mov r13d, r15d
- xor r12d, r12d
- lea eax, [r15-0x01]
- mov dword ptr [rbp-0x34], eax
- test eax, eax
- jle SHORT G_M13980_IG07
- ;; size=17 bbWeight=1 PerfScore 3.25
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[ubyte](byref,int):this
+ call [rax]System.Random:Shuffle[ubyte](byref,int):this
+ nop
+ ;; size=13 bbWeight=1 PerfScore 3.50
G_M13980_IG03:
- mov rdi, qword ptr [r14]
- mov rcx, qword ptr [rdi+0x40]
- mov qword ptr [rbp-0x30], rcx
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M13980_IG04:
- mov rdi, r14
- mov esi, r12d
- mov edx, r15d
- call [rcx+0x30]System.Random:Next(int,int):int:this
- cmp eax, r12d
- je SHORT G_M13980_IG06
- ;; size=17 bbWeight=4 PerfScore 20.00
-G_M13980_IG05:
- mov ecx, r12d
- movzx rdx, byte ptr [rbx+rcx]
- cmp eax, r13d
- jae SHORT G_M13980_IG08
- mov eax, eax
- movzx rdi, byte ptr [rbx+rax]
- mov byte ptr [rbx+rcx], dil
- mov byte ptr [rbx+rax], dl
- ;; size=26 bbWeight=2 PerfScore 15.50
-G_M13980_IG06:
- inc r12d
- mov eax, dword ptr [rbp-0x34]
- cmp r12d, eax
- mov rcx, qword ptr [rbp-0x30]
- jl SHORT G_M13980_IG04
- ;; size=15 bbWeight=4 PerfScore 14.00
-G_M13980_IG07:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
+ add rsp, 8
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M13980_IG08:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 135, prolog size 19, PerfScore 67.00, instruction count 49, allocated bytes for code 135 (MethodHash=637dc963) for method System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=637dc963) for method System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts)
-112 (-85.496% of base) - System.Random:Shuffle[int](System.Span`1[int]):this
; Assembly listing for method System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def <System.Random>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Random>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
-; V02 loc0 [V02,T10] ( 2, 3 ) int -> r13
-; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12
-; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax
-; V05 loc3 [V05,T09] ( 2, 4 ) int -> rdx
-;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive"
-; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive"
-; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
+; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M28188_IG01:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov r14, rdi
- mov rbx, rsi
- mov r15d, edx
- ;; size=28 bbWeight=1 PerfScore 7.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M28188_IG02:
- mov r13d, r15d
- xor r12d, r12d
- lea eax, [r15-0x01]
- mov dword ptr [rbp-0x34], eax
- test eax, eax
- jle SHORT G_M28188_IG07
- ;; size=17 bbWeight=1 PerfScore 3.25
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[int](byref,int):this
+ call [rax]System.Random:Shuffle[int](byref,int):this
+ nop
+ ;; size=13 bbWeight=1 PerfScore 3.50
G_M28188_IG03:
- mov rdi, qword ptr [r14]
- mov rcx, qword ptr [rdi+0x40]
- mov qword ptr [rbp-0x30], rcx
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M28188_IG04:
- mov rdi, r14
- mov esi, r12d
- mov edx, r15d
- call [rcx+0x30]System.Random:Next(int,int):int:this
- cmp eax, r12d
- je SHORT G_M28188_IG06
- ;; size=17 bbWeight=4 PerfScore 20.00
-G_M28188_IG05:
- mov ecx, r12d
- mov edx, dword ptr [rbx+4*rcx]
- cmp eax, r13d
- jae SHORT G_M28188_IG08
- mov eax, eax
- mov edi, dword ptr [rbx+4*rax]
- mov dword ptr [rbx+4*rcx], edi
- mov dword ptr [rbx+4*rax], edx
- ;; size=22 bbWeight=2 PerfScore 15.50
-G_M28188_IG06:
- inc r12d
- mov eax, dword ptr [rbp-0x34]
- cmp r12d, eax
- mov rcx, qword ptr [rbp-0x30]
- jl SHORT G_M28188_IG04
- ;; size=15 bbWeight=4 PerfScore 14.00
-G_M28188_IG07:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
+ add rsp, 8
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M28188_IG08:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 131, prolog size 19, PerfScore 67.00, instruction count 49, allocated bytes for code 131 (MethodHash=13c891e3) for method System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=13c891e3) for method System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts)
-64 (-39.752% of base) - System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this
; Assembly listing for method System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def <System.Random>
-;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
+; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Random>
+; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> rsi single-def
;* V02 arg1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.__Canon]>
-; V03 loc0 [V03,T10] ( 2, 3 ) int -> r13
-; V04 loc1 [V04,T00] ( 7, 23 ) int -> r12
-; V05 loc2 [V05,T01] ( 4, 12 ) int -> rax
-; V06 loc3 [V06,T09] ( 2, 4 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
-;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T02] ( 5, 9 ) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp2 [V09,T03] ( 4, 7 ) int -> r15 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive"
-; V11 cse1 [V11,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive"
-; V12 cse2 [V12,T06] ( 3, 6 ) long -> rdi "CSE - aggressive"
-; V13 cse3 [V13,T07] ( 3, 6 ) long -> [rbp-0x40] spill-single-def "CSE - aggressive"
+;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]>
+; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T05] ( 2, 2 ) int -> r14 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+;* V09 tmp6 [V09 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V11 tmp8 [V11,T06] ( 2, 4 ) long -> rsi "argument with side effect"
+; V12 rat0 [V12,T03] ( 3, 4 ) long -> rsi "runtime lookup"
+; V13 rat1 [V13,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 8
G_M43260_IG01:
push rbp
push r15
push r14
- push r13
- push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
- mov r14, rdi
- mov rbx, rdx
- mov r15d, ecx
- ;; size=28 bbWeight=1 PerfScore 7.50
+ push rax
+ lea rbp, [rsp+0x20]
+ mov qword ptr [rbp-0x20], rsi
+ mov rbx, rdi
+ mov r15, rdx
+ mov r14d, ecx
+ ;; size=25 bbWeight=1 PerfScore 7.25
G_M43260_IG02:
- mov r13d, r15d
- xor r12d, r12d
- lea eax, [r15-0x01]
- mov dword ptr [rbp-0x34], eax
- test eax, eax
- jle SHORT G_M43260_IG07
- ;; size=17 bbWeight=1 PerfScore 3.25
+ mov rdi, qword ptr [rsi+0x10]
+ mov rax, qword ptr [rdi+0x18]
+ test rax, rax
+ je SHORT G_M43260_IG04
+ ;; size=13 bbWeight=1 PerfScore 5.25
G_M43260_IG03:
- mov rdi, qword ptr [r14]
- mov rcx, qword ptr [rdi+0x40]
- mov qword ptr [rbp-0x30], rcx
- ;; size=11 bbWeight=0.50 PerfScore 2.50
+ mov rsi, rax
+ jmp SHORT G_M43260_IG05
+ ;; size=5 bbWeight=0.80 PerfScore 1.80
G_M43260_IG04:
- mov rdi, r14
- mov esi, r12d
- mov edx, r15d
- call [rcx+0x30]System.Random:Next(int,int):int:this
- cmp eax, r12d
- je SHORT G_M43260_IG06
- ;; size=17 bbWeight=4 PerfScore 20.00
+ mov rdi, rsi
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rsi, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
G_M43260_IG05:
- mov edi, r12d
- mov rcx, gword ptr [rbx+8*rdi]
- mov gword ptr [rbp-0x48], rcx
- lea rdi, bword ptr [rbx+8*rdi]
- cmp eax, r13d
- jae SHORT G_M43260_IG08
- mov eax, eax
- mov qword ptr [rbp-0x40], rax
- mov rsi, gword ptr [rbx+8*rax]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov rdi, qword ptr [rbp-0x40]
- lea rdi, bword ptr [rbx+8*rdi]
- mov rsi, gword ptr [rbp-0x48]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ;; size=52 bbWeight=2 PerfScore 25.50
+ mov rdi, rbx
+ mov rdx, r15
+ mov ecx, r14d
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.__Canon](byref,int):this
+ call [rax]System.Random:Shuffle[System.__Canon](byref,int):this
+ nop
+ ;; size=22 bbWeight=1 PerfScore 4.25
G_M43260_IG06:
- inc r12d
- mov eax, dword ptr [rbp-0x34]
- cmp r12d, eax
- mov rcx, qword ptr [rbp-0x30]
- jl SHORT G_M43260_IG04
- ;; size=15 bbWeight=4 PerfScore 14.00
-G_M43260_IG07:
- add rsp, 40
+ add rsp, 8
pop rbx
- pop r12
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M43260_IG08:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=1 PerfScore 3.25
-; Total bytes of code 161, prolog size 19, PerfScore 77.00, instruction count 55, allocated bytes for code 161 (MethodHash=d6715703) for method System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 97, prolog size 16, PerfScore 22.15, instruction count 32, allocated bytes for code 97 (MethodHash=d6715703) for method System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts)
-61 (-33.516% of base) - System.Random:Shuffle[System.__Canon](System.__Canon[]):this
; Assembly listing for method System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.Random>
-; V01 TypeCtx [V01,T00] ( 7, 5.40) long -> rbx single-def
-; V02 arg1 [V02,T01] ( 4, 4 ) ref -> r15 class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T03] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.Random>
+; V01 TypeCtx [V01,T01] ( 5, 4.20) long -> r15 single-def
+; V02 arg1 [V02,T00] ( 6, 6 ) ref -> rbx class-hnd single-def <System.__Canon[]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T05] ( 3, 4 ) long -> r13 "spilling helperCall"
-; V05 tmp2 [V05,T06] ( 3, 4 ) long -> r12 "spilling helperCall"
-;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]>
-; V07 tmp4 [V07,T07] ( 2, 2 ) byref -> rax "field V06._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T08] ( 2, 2 ) int -> rcx "field V06._length (fldOffset=0x8)" P-INDEP
-; V09 rat0 [V09,T02] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V10 rat1 [V10,T03] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
+;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rsi "argument with side effect"
+; V06 rat0 [V06,T04] ( 3, 4 ) long -> rsi "runtime lookup"
+; V07 rat1 [V07,T02] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
G_M57994_IG01:
push rbp
push r15
push r14
- push r13
- push r12
push rbx
push rax
- lea rbp, [rsp+0x30]
- mov qword ptr [rbp-0x30], rsi
+ lea rbp, [rsp+0x20]
+ mov qword ptr [rbp-0x20], rsi
mov r14, rdi
- mov rbx, rsi
- mov r15, rdx
- ;; size=29 bbWeight=1 PerfScore 9.25
+ mov r15, rsi
+ mov rbx, rdx
+ ;; size=25 bbWeight=1 PerfScore 7.25
G_M57994_IG02:
- mov rdi, r15
+ mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'values'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- mov rdi, qword ptr [rbx+0x10]
- mov r13, qword ptr [rdi+0x10]
- test r13, r13
+ cmp byte ptr [rbx], bl
+ mov rdi, qword ptr [r15+0x10]
+ mov rsi, qword ptr [rdi+0x10]
+ test rsi, rsi
je SHORT G_M57994_IG04
- ;; size=38 bbWeight=1 PerfScore 9.00
+ ;; size=40 bbWeight=1 PerfScore 12.00
G_M57994_IG03:
jmp SHORT G_M57994_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M57994_IG04:
- mov rdi, rbx
+ mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov r13, rax
+ mov rsi, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M57994_IG05:
- mov rdi, qword ptr [rbx+0x10]
- mov r12, qword ptr [rdi+0x18]
- test r12, r12
- je SHORT G_M57994_IG07
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M57994_IG06:
- jmp SHORT G_M57994_IG08
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M57994_IG07:
- mov rdi, rbx
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov r12, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M57994_IG08:
- mov rdi, r13
- mov rsi, r15
- mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon]
- call [rax]System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon]
- mov ecx, edx
- mov rdx, rax
+ mov ecx, dword ptr [rbx+0x08]
+ lea rdx, bword ptr [rbx+0x10]
mov rdi, r14
- mov rsi, r12
- mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this
- ;; size=39 bbWeight=1 PerfScore 5.00
-G_M57994_IG09:
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.__Canon](byref,int):this
+ ;; size=20 bbWeight=1 PerfScore 3.00
+G_M57994_IG06:
add rsp, 8
pop rbx
- pop r12
- pop r13
pop r14
pop r15
pop rbp
- tail.jmp [rax]System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this
- ;; size=17 bbWeight=1 PerfScore 5.25
+ tail.jmp [rax]System.Random:Shuffle[System.__Canon](byref,int):this
+ ;; size=13 bbWeight=1 PerfScore 4.25
-; Total bytes of code 182, prolog size 20, PerfScore 37.65, instruction count 51, allocated bytes for code 182 (MethodHash=86001d75) for method System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts)
+; Total bytes of code 121, prolog size 16, PerfScore 28.45, instruction count 34, allocated bytes for code 121 (MethodHash=86001d75) for method System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts)
-12 (-15.190% of base) - System.Random:Shuffle[double](double[]):this
; Assembly listing for method System.Random:Shuffle[double](double[]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Random>
-; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <double[]>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def <double[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[double]>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M49546_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov r15, rdi
mov rbx, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M49546_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'values'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- test rbx, rbx
- jne SHORT G_M49546_IG04
- ;; size=30 bbWeight=1 PerfScore 5.00
-G_M49546_IG03:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M49546_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M49546_IG04:
- lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M49546_IG05:
+ lea rsi, bword ptr [rbx+0x10]
mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[double](System.Span`1[double]):this
- call [rax]System.Random:Shuffle[double](System.Span`1[double]):this
- nop
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M49546_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[double](byref,int):this
+ ;; size=45 bbWeight=1 PerfScore 6.75
+G_M49546_IG03:
pop rbx
pop r15
pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ tail.jmp [rax]System.Random:Shuffle[double](byref,int):this
+ ;; size=7 bbWeight=1 PerfScore 3.50
-; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=05ec3e75) for method System.Random:Shuffle[double](double[]):this (FullOpts)
+; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=05ec3e75) for method System.Random:Shuffle[double](double[]):this (FullOpts)
-12 (-15.190% of base) - System.Random:Shuffle[int](int[]):this
; Assembly listing for method System.Random:Shuffle[int](int[]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Random>
-; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <int[]>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def <int[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M13002_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov r15, rdi
mov rbx, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M13002_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'values'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- test rbx, rbx
- jne SHORT G_M13002_IG04
- ;; size=30 bbWeight=1 PerfScore 5.00
-G_M13002_IG03:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M13002_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M13002_IG04:
- lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M13002_IG05:
+ lea rsi, bword ptr [rbx+0x10]
mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[int](System.Span`1[int]):this
- call [rax]System.Random:Shuffle[int](System.Span`1[int]):this
- nop
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M13002_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[int](byref,int):this
+ ;; size=45 bbWeight=1 PerfScore 6.75
+G_M13002_IG03:
pop rbx
pop r15
pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ tail.jmp [rax]System.Random:Shuffle[int](byref,int):this
+ ;; size=7 bbWeight=1 PerfScore 3.50
-; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=1989cd35) for method System.Random:Shuffle[int](int[]):this (FullOpts)
+; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=1989cd35) for method System.Random:Shuffle[int](int[]):this (FullOpts)
-12 (-15.190% of base) - System.Random:Shuffle[long](long[]):this
; Assembly listing for method System.Random:Shuffle[long](long[]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Random>
-; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <long[]>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def <long[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[long]>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[long]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M5770_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov r15, rdi
mov rbx, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M5770_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'values'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- test rbx, rbx
- jne SHORT G_M5770_IG04
- ;; size=30 bbWeight=1 PerfScore 5.00
-G_M5770_IG03:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M5770_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M5770_IG04:
- lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M5770_IG05:
+ lea rsi, bword ptr [rbx+0x10]
mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[long](System.Span`1[long]):this
- call [rax]System.Random:Shuffle[long](System.Span`1[long]):this
- nop
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M5770_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[long](byref,int):this
+ ;; size=45 bbWeight=1 PerfScore 6.75
+G_M5770_IG03:
pop rbx
pop r15
pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ tail.jmp [rax]System.Random:Shuffle[long](byref,int):this
+ ;; size=7 bbWeight=1 PerfScore 3.50
-; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=1048e975) for method System.Random:Shuffle[long](long[]):this (FullOpts)
+; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=1048e975) for method System.Random:Shuffle[long](long[]):this (FullOpts)
-12 (-15.190% of base) - System.Random:Shuffle[short](short[]):this
; Assembly listing for method System.Random:Shuffle[short](short[]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Random>
-; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <short[]>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def <short[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[short]>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[short]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M52650_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov r15, rdi
mov rbx, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M52650_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'values'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- test rbx, rbx
- jne SHORT G_M52650_IG04
- ;; size=30 bbWeight=1 PerfScore 5.00
-G_M52650_IG03:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M52650_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M52650_IG04:
- lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M52650_IG05:
+ lea rsi, bword ptr [rbx+0x10]
mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[short](System.Span`1[short]):this
- call [rax]System.Random:Shuffle[short](System.Span`1[short]):this
- nop
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M52650_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[short](byref,int):this
+ ;; size=45 bbWeight=1 PerfScore 6.75
+G_M52650_IG03:
pop rbx
pop r15
pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ tail.jmp [rax]System.Random:Shuffle[short](byref,int):this
+ ;; size=7 bbWeight=1 PerfScore 3.50
-; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=3d3b3255) for method System.Random:Shuffle[short](short[]):this (FullOpts)
+; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=3d3b3255) for method System.Random:Shuffle[short](short[]):this (FullOpts)
-12 (-15.190% of base) - System.Random:Shuffle[System.Nullable`1[int]](System.Nullable`1[int][]):this
; Assembly listing for method System.Random:Shuffle[System.Nullable`1[int]](System.Nullable`1[int][]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Random>
-; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Nullable`1[int][]>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def <System.Nullable`1[int][]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Nullable`1[int]]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M15882_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov r15, rdi
mov rbx, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M15882_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'values'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- test rbx, rbx
- jne SHORT G_M15882_IG04
- ;; size=30 bbWeight=1 PerfScore 5.00
-G_M15882_IG03:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M15882_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M15882_IG04:
- lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M15882_IG05:
+ lea rsi, bword ptr [rbx+0x10]
mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this
- call [rax]System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this
- nop
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M15882_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.Nullable`1[int]](byref,int):this
+ ;; size=45 bbWeight=1 PerfScore 6.75
+G_M15882_IG03:
pop rbx
pop r15
pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ tail.jmp [rax]System.Random:Shuffle[System.Nullable`1[int]](byref,int):this
+ ;; size=7 bbWeight=1 PerfScore 3.50
-; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=2535c1f5) for method System.Random:Shuffle[System.Nullable`1[int]](System.Nullable`1[int][]):this (FullOpts)
+; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=2535c1f5) for method System.Random:Shuffle[System.Nullable`1[int]](System.Nullable`1[int][]):this (FullOpts)
-12 (-15.190% of base) - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):this
; Assembly listing for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Random>
-; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Numerics.Vector`1[float][]>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def <System.Numerics.Vector`1[float][]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Numerics.Vector`1[float]]>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Numerics.Vector`1[float]]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M29770_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov r15, rdi
mov rbx, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M29770_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'values'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- test rbx, rbx
- jne SHORT G_M29770_IG04
- ;; size=30 bbWeight=1 PerfScore 5.00
-G_M29770_IG03:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M29770_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M29770_IG04:
- lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M29770_IG05:
+ lea rsi, bword ptr [rbx+0x10]
mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this
- call [rax]System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this
- nop
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M29770_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this
+ ;; size=45 bbWeight=1 PerfScore 6.75
+G_M29770_IG03:
pop rbx
pop r15
pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ tail.jmp [rax]System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this
+ ;; size=7 bbWeight=1 PerfScore 3.50
-; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=1e858bb5) for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):this (FullOpts)
+; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=1e858bb5) for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):this (FullOpts)
-12 (-15.190% of base) - System.Random:Shuffle[ubyte](ubyte[]):this
; Assembly listing for method System.Random:Shuffle[ubyte](ubyte[]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Random>
-; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <ubyte[]>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def <ubyte[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M10570_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov r15, rdi
mov rbx, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M10570_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'values'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- test rbx, rbx
- jne SHORT G_M10570_IG04
- ;; size=30 bbWeight=1 PerfScore 5.00
-G_M10570_IG03:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M10570_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M10570_IG04:
- lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M10570_IG05:
+ lea rsi, bword ptr [rbx+0x10]
mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this
- call [rax]System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this
- nop
- ;; size=16 bbWeight=1 PerfScore 3.75
-G_M10570_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[ubyte](byref,int):this
+ ;; size=45 bbWeight=1 PerfScore 6.75
+G_M10570_IG03:
pop rbx
pop r15
pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ tail.jmp [rax]System.Random:Shuffle[ubyte](byref,int):this
+ ;; size=7 bbWeight=1 PerfScore 3.50
-; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=cf61d6b5) for method System.Random:Shuffle[ubyte](ubyte[]):this (FullOpts)
+; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=cf61d6b5) for method System.Random:Shuffle[ubyte](ubyte[]):this (FullOpts)