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
[X64] [tomeksowi] [x64][SysV] Classify empty structs for passing like padding #470
Comments
Top method regressions29 (80.56 % of base) - System.Buffers.Text.Base64Url:EncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int ; Assembly listing for method System.Buffers.Text.Base64Url:EncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp 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 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T00] ( 3, 3 ) byref -> r8 single-def
+; V02 arg2 [V02,T00] ( 3, 3 ) byref -> rax single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> r9 single-def
; V04 arg4 [V04,T11] ( 1, 1 ) ubyte -> [rsp+0x20] single-def
;* V05 loc0 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Buffers.Text.Base64Url+Base64UrlEncoderChar>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T10] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "impAppendStmt" <System.Buffers.Text.Base64Url+Base64UrlEncoderChar>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V13 tmp7 [V13,T08] ( 2, 2 ) int -> rcx "Inline stloc first use temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V15 tmp9 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V16 tmp10 [V16,T02] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V17 tmp11 [V17,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T04] ( 2, 2 ) int -> r8 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V18 tmp12 [V18,T03] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V19 tmp13 [V19,T05] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp15 [V21 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
; V22 tmp16 [V22,T06] ( 2, 2 ) byref -> rdx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp17 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V24 tmp18 [V24,T07] ( 2, 2 ) byref -> rdx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp19 [V25,T09] ( 2, 2 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP
+; V24 tmp18 [V24,T07] ( 2, 2 ) byref -> r10 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp19 [V25,T09] ( 2, 2 ) int -> r11 "field V14._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M58470_IG01:
sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ mov rax, r8
+ mov r8d, esi
+ ;; size=10 bbWeight=1 PerfScore 0.75
G_M58470_IG02:
- xor eax, eax
- mov dword ptr [rsp], eax
- movzx rax, byte ptr [rsp+0x20]
- mov dword ptr [rsp+0x08], eax
+ mov r10, rdx
+ mov r11d, ecx
+ mov bword ptr [rsp], r9
+ movzx rsi, byte ptr [rsp+0x20]
+ mov dword ptr [rsp+0x08], esi
+ mov rsi, rdi
+ mov edx, r8d
+ mov rcx, r10
+ mov r8d, r11d
+ xor edi, edi
+ mov r9, rax
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlEncoderChar,System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlEncoderChar,System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int
nop
- ;; size=27 bbWeight=1 PerfScore 6.75
+ ;; size=50 bbWeight=1 PerfScore 8.50
G_M58470_IG03:
add rsp, 24
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 36, prolog size 4, PerfScore 8.25, instruction count 10, allocated bytes for code 36 (MethodHash=35af1b99) for method System.Buffers.Text.Base64Url:EncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int (FullOpts)
+; Total bytes of code 65, prolog size 4, PerfScore 10.50, instruction count 19, allocated bytes for code 65 (MethodHash=35af1b99) for method System.Buffers.Text.Base64Url:EncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int (FullOpts) 25 (56.82 % of base) - System.Buffers.Text.Base64:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int ; Assembly listing for method System.Buffers.Text.Base64:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T00] ( 3, 3 ) byref -> r8 single-def
+; V02 arg2 [V02,T00] ( 3, 3 ) byref -> rax single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> r9 single-def
; V04 arg4 [V04,T06] ( 1, 1 ) ubyte -> [rsp+0x20] single-def
;* V05 loc0 [V05,T07] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Buffers.Text.Base64Helper+Base64DecoderByte>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T02] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 tmp3 [V09,T03] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T05] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp2 [V08,T04] ( 2, 2 ) int -> rdx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V09 tmp3 [V09,T03] ( 2, 2 ) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp4 [V10,T05] ( 2, 2 ) int -> r10 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M8518_IG01:
sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ mov r10d, ecx
+ mov rax, r8
+ mov r8, rdx
+ mov edx, esi
+ ;; size=15 bbWeight=1 PerfScore 1.25
G_M8518_IG02:
- xor eax, eax
- mov dword ptr [rsp], eax
- movzx rax, byte ptr [rsp+0x20]
- mov dword ptr [rsp+0x08], eax
+ mov bword ptr [rsp], r9
+ movzx rsi, byte ptr [rsp+0x20]
+ mov dword ptr [rsp+0x08], esi
mov dword ptr [rsp+0x10], 1
+ mov rsi, rdi
+ mov rcx, r8
+ mov r8d, r10d
+ xor edi, edi
+ mov r9, rax
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Helper+Base64DecoderByte,ubyte](System.Buffers.Text.Base64Helper+Base64DecoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Helper+Base64DecoderByte,ubyte](System.Buffers.Text.Base64Helper+Base64DecoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
nop
- ;; size=35 bbWeight=1 PerfScore 7.75
+ ;; size=49 bbWeight=1 PerfScore 8.75
G_M8518_IG03:
add rsp, 24
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 44, prolog size 4, PerfScore 9.25, instruction count 11, allocated bytes for code 44 (MethodHash=b7d5deb9) for method System.Buffers.Text.Base64:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 11.25, instruction count 19, allocated bytes for code 69 (MethodHash=b7d5deb9) for method System.Buffers.Text.Base64:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts) 25 (69.44 % of base) - System.Buffers.Text.Base64:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int ; Assembly listing for method System.Buffers.Text.Base64:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T00] ( 3, 3 ) byref -> r8 single-def
+; V02 arg2 [V02,T00] ( 3, 3 ) byref -> rax single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> r9 single-def
; V04 arg4 [V04,T06] ( 1, 1 ) ubyte -> [rsp+0x20] single-def
;* V05 loc0 [V05,T07] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Buffers.Text.Base64Helper+Base64EncoderByte>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T02] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 tmp3 [V09,T03] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T05] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp2 [V08,T04] ( 2, 2 ) int -> rdx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V09 tmp3 [V09,T03] ( 2, 2 ) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp4 [V10,T05] ( 2, 2 ) int -> r10 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M52705_IG01:
sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ mov r10d, ecx
+ mov rax, r8
+ mov r8, rdx
+ mov edx, esi
+ ;; size=15 bbWeight=1 PerfScore 1.25
G_M52705_IG02:
- xor eax, eax
- mov dword ptr [rsp], eax
- movzx rax, byte ptr [rsp+0x20]
- mov dword ptr [rsp+0x08], eax
+ mov bword ptr [rsp], r9
+ movzx rsi, byte ptr [rsp+0x20]
+ mov dword ptr [rsp+0x08], esi
+ mov rsi, rdi
+ mov rcx, r8
+ mov r8d, r10d
+ xor edi, edi
+ mov r9, rax
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Helper+Base64EncoderByte,ubyte](System.Buffers.Text.Base64Helper+Base64EncoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Helper+Base64EncoderByte,ubyte](System.Buffers.Text.Base64Helper+Base64EncoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int
nop
- ;; size=27 bbWeight=1 PerfScore 6.75
+ ;; size=41 bbWeight=1 PerfScore 7.75
G_M52705_IG03:
add rsp, 24
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 36, prolog size 4, PerfScore 8.25, instruction count 10, allocated bytes for code 36 (MethodHash=4c9f321e) for method System.Buffers.Text.Base64:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 10.25, instruction count 18, allocated bytes for code 61 (MethodHash=4c9f321e) for method System.Buffers.Text.Base64:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts) 25 (56.82 % of base) - System.Buffers.Text.Base64Url:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int ; Assembly listing for method System.Buffers.Text.Base64Url:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T00] ( 3, 3 ) byref -> r8 single-def
+; V02 arg2 [V02,T00] ( 3, 3 ) byref -> rax single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> r9 single-def
; V04 arg4 [V04,T06] ( 1, 1 ) ubyte -> [rsp+0x20] single-def
;* V05 loc0 [V05,T07] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Buffers.Text.Base64Url+Base64UrlDecoderByte>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T02] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 tmp3 [V09,T03] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T05] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp2 [V08,T04] ( 2, 2 ) int -> rdx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V09 tmp3 [V09,T03] ( 2, 2 ) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp4 [V10,T05] ( 2, 2 ) int -> r10 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M48173_IG01:
sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ mov r10d, ecx
+ mov rax, r8
+ mov r8, rdx
+ mov edx, esi
+ ;; size=15 bbWeight=1 PerfScore 1.25
G_M48173_IG02:
- xor eax, eax
- mov dword ptr [rsp], eax
- movzx rax, byte ptr [rsp+0x20]
- mov dword ptr [rsp+0x08], eax
+ mov bword ptr [rsp], r9
+ movzx rsi, byte ptr [rsp+0x20]
+ mov dword ptr [rsp+0x08], esi
mov dword ptr [rsp+0x10], 1
+ mov rsi, rdi
+ mov rcx, r8
+ mov r8d, r10d
+ xor edi, edi
+ mov r9, rax
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Url+Base64UrlDecoderByte,ubyte](System.Buffers.Text.Base64Url+Base64UrlDecoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Url+Base64UrlDecoderByte,ubyte](System.Buffers.Text.Base64Url+Base64UrlDecoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
nop
- ;; size=35 bbWeight=1 PerfScore 7.75
+ ;; size=49 bbWeight=1 PerfScore 8.75
G_M48173_IG03:
add rsp, 24
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 44, prolog size 4, PerfScore 9.25, instruction count 11, allocated bytes for code 44 (MethodHash=282b43d2) for method System.Buffers.Text.Base64Url:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 11.25, instruction count 19, allocated bytes for code 69 (MethodHash=282b43d2) for method System.Buffers.Text.Base64Url:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts) 25 (69.44 % of base) - System.Buffers.Text.Base64Url:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int ; Assembly listing for method System.Buffers.Text.Base64Url:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T00] ( 3, 3 ) byref -> r8 single-def
+; V02 arg2 [V02,T00] ( 3, 3 ) byref -> rax single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> r9 single-def
; V04 arg4 [V04,T06] ( 1, 1 ) ubyte -> [rsp+0x20] single-def
;* V05 loc0 [V05,T07] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Buffers.Text.Base64Url+Base64UrlEncoderByte>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T02] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 tmp3 [V09,T03] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T05] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp2 [V08,T04] ( 2, 2 ) int -> rdx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V09 tmp3 [V09,T03] ( 2, 2 ) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp4 [V10,T05] ( 2, 2 ) int -> r10 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M54922_IG01:
sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ mov r10d, ecx
+ mov rax, r8
+ mov r8, rdx
+ mov edx, esi
+ ;; size=15 bbWeight=1 PerfScore 1.25
G_M54922_IG02:
- xor eax, eax
- mov dword ptr [rsp], eax
- movzx rax, byte ptr [rsp+0x20]
- mov dword ptr [rsp+0x08], eax
+ mov bword ptr [rsp], r9
+ movzx rsi, byte ptr [rsp+0x20]
+ mov dword ptr [rsp+0x08], esi
+ mov rsi, rdi
+ mov rcx, r8
+ mov r8d, r10d
+ xor edi, edi
+ mov r9, rax
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderByte,ubyte](System.Buffers.Text.Base64Url+Base64UrlEncoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderByte,ubyte](System.Buffers.Text.Base64Url+Base64UrlEncoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int
nop
- ;; size=27 bbWeight=1 PerfScore 6.75
+ ;; size=41 bbWeight=1 PerfScore 7.75
G_M54922_IG03:
add rsp, 24
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 36, prolog size 4, PerfScore 8.25, instruction count 10, allocated bytes for code 36 (MethodHash=70502975) for method System.Buffers.Text.Base64Url:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 10.25, instruction count 18, allocated bytes for code 61 (MethodHash=70502975) for method System.Buffers.Text.Base64Url:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts) 24 (54.55 % of base) - System.Buffers.Text.Base64Url:DecodeFromChars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte):int ; Assembly listing for method System.Buffers.Text.Base64Url:DecodeFromChars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T00] ( 3, 3 ) byref -> r8 single-def
+; V02 arg2 [V02,T00] ( 3, 3 ) byref -> rax single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> r9 single-def
; V04 arg4 [V04,T11] ( 1, 1 ) ubyte -> [rsp+0x20] single-def
;* V05 loc0 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Buffers.Text.Base64Url+Base64UrlDecoderChar>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T10] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "impAppendStmt" <System.Buffers.Text.Base64Url+Base64UrlDecoderChar>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V13 tmp7 [V13,T08] ( 2, 2 ) int -> rsi "Inline stloc first use temp"
+; V13 tmp7 [V13,T08] ( 2, 2 ) int -> rdx "Inline stloc first use temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V17 tmp11 [V17,T02] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V18 tmp12 [V18,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V19 tmp13 [V19,T03] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp14 [V20,T05] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V19 tmp13 [V19,T03] ( 2, 2 ) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp14 [V20,T05] ( 2, 2 ) int -> r10 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V21 tmp15 [V21 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
; V23 tmp17 [V23,T06] ( 2, 2 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp18 [V24 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V25 tmp19 [V25,T07] ( 2, 2 ) byref -> rdi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V26 tmp20 [V26,T09] ( 2, 2 ) int -> rsi "field V14._length (fldOffset=0x8)" P-INDEP
+; V25 tmp19 [V25,T07] ( 2, 2 ) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V26 tmp20 [V26,T09] ( 2, 2 ) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP
;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M25697_IG01:
sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ mov r10d, ecx
+ mov rax, r8
+ mov r8, rdx
+ ;; size=13 bbWeight=1 PerfScore 1.00
G_M25697_IG02:
- xor eax, eax
- mov dword ptr [rsp], eax
- movzx rax, byte ptr [rsp+0x20]
- mov dword ptr [rsp+0x08], eax
+ mov edx, esi
+ mov rsi, rdi
+ mov bword ptr [rsp], r9
+ movzx rcx, byte ptr [rsp+0x20]
+ mov dword ptr [rsp+0x08], ecx
mov dword ptr [rsp+0x10], 1
+ mov rcx, r8
+ mov r8d, r10d
+ xor edi, edi
+ mov r9, rax
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Url+Base64UrlDecoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlDecoderChar,System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Url+Base64UrlDecoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlDecoderChar,System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
nop
- ;; size=35 bbWeight=1 PerfScore 7.75
+ ;; size=50 bbWeight=1 PerfScore 9.00
G_M25697_IG03:
add rsp, 24
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 44, prolog size 4, PerfScore 9.25, instruction count 11, allocated bytes for code 44 (MethodHash=37ff9b9e) for method System.Buffers.Text.Base64Url:DecodeFromChars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts)
+; Total bytes of code 68, prolog size 4, PerfScore 11.25, instruction count 19, allocated bytes for code 68 (MethodHash=37ff9b9e) for method System.Buffers.Text.Base64Url:DecodeFromChars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte):int (FullOpts) 19 (12.93 % of base) - System.Buffers.Text.Base64Url:EncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int ; Assembly listing for method System.Buffers.Text.Base64Url:EncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):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; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V02 loc0 [V02 ] ( 2, 2 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op
; V03 loc1 [V03 ] ( 1, 1 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op
; V04 OutArgs [V04 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T09] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Buffers.Text.Base64Url+Base64UrlEncoderChar>
;* V07 tmp3 [V07,T08] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "impAppendStmt" <System.Buffers.Text.Base64Url+Base64UrlEncoderChar>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V13 tmp9 [V13,T06] ( 2, 2 ) int -> rcx "Inline stloc first use temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V16 tmp12 [V16,T00] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V17 tmp13 [V17,T02] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V17 tmp13 [V17,T02] ( 2, 2 ) int -> r8 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V18 tmp14 [V18,T01] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V19 tmp15 [V19,T03] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
; V22 tmp18 [V22,T04] ( 2, 2 ) byref -> rdx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V24 tmp20 [V24,T05] ( 2, 2 ) byref -> rdx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp21 [V25,T07] ( 2, 2 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP
+; V24 tmp20 [V24,T05] ( 2, 2 ) byref -> r9 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp21 [V25,T07] ( 2, 2 ) int -> rax "field V14._length (fldOffset=0x8)" P-INDEP
; V26 tmp22 [V26,T10] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
; V27 tmp23 [V27,T11] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 32
G_M64917_IG01:
push rbp
push r15
push rbx
sub rsp, 32
lea rbp, [rsp+0x30]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ mov r8d, esi
+ ;; size=16 bbWeight=1 PerfScore 4.00
G_M64917_IG02:
- xor r9d, r9d
- mov dword ptr [rsp], r9d
+ mov r9, rdx
+ mov eax, ecx
+ lea rsi, [rbp-0x18]
+ mov qword ptr [rsp], rsi
mov dword ptr [rsp+0x08], 1
- lea r9, [rbp-0x18]
- lea r8, [rbp-0x20]
+ mov rsi, rdi
+ mov edx, r8d
+ mov rcx, r9
+ mov r8d, eax
+ lea r9, [rbp-0x20]
+ xor edi, edi
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlEncoderChar,System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlEncoderChar,System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int
test eax, eax
jne SHORT G_M64917_IG04
mov eax, dword ptr [rbp-0x18]
- ;; size=42 bbWeight=1 PerfScore 8.75
+ ;; size=58 bbWeight=1 PerfScore 10.25
G_M64917_IG03:
add rsp, 32
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
G_M64917_IG04:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_DestinationTooShort():System.String
call [rax]System.SR:get_Argument_DestinationTooShort():System.String
mov r15, rax
mov edi, 0xD61
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 147, prolog size 13, PerfScore 15.25, instruction count 37, allocated bytes for code 147 (MethodHash=2dd0026a) for method System.Buffers.Text.Base64Url:EncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
+; Total bytes of code 166, prolog size 13, PerfScore 17.00, instruction count 44, allocated bytes for code 166 (MethodHash=2dd0026a) for method System.Buffers.Text.Base64Url:EncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts) 17 (32.69 % of base) - System.Buffers.Text.Base64Url:TryEncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref):ubyte ; Assembly listing for method System.Buffers.Text.Base64Url:TryEncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
-; V02 arg2 [V02,T00] ( 3, 3 ) byref -> r9 single-def
+; V02 arg2 [V02,T00] ( 3, 3 ) byref -> r8 single-def
; V03 loc0 [V03 ] ( 1, 1 ) int -> [rsp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
; V04 OutArgs [V04 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Buffers.Text.Base64Url+Base64UrlEncoderChar>
;* V06 tmp2 [V06,T09] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "impAppendStmt" <System.Buffers.Text.Base64Url+Base64UrlEncoderChar>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V12 tmp8 [V12,T07] ( 2, 2 ) int -> rcx "Inline stloc first use temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V15 tmp11 [V15,T01] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp12 [V16,T03] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T03] ( 2, 2 ) int -> r9 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V17 tmp13 [V17,T02] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V18 tmp14 [V18,T04] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
; V21 tmp17 [V21,T05] ( 2, 2 ) byref -> rdx single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V23 tmp19 [V23,T06] ( 2, 2 ) byref -> rdx single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp20 [V24,T08] ( 2, 2 ) int -> rcx "field V13._length (fldOffset=0x8)" P-INDEP
+; V23 tmp19 [V23,T06] ( 2, 2 ) byref -> rax single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp20 [V24,T08] ( 2, 2 ) int -> r10 "field V13._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M24288_IG01:
sub rsp, 24
- mov r9, r8
+ mov r9d, esi
;; size=7 bbWeight=1 PerfScore 0.50
G_M24288_IG02:
- xor r8d, r8d
- mov dword ptr [rsp], r8d
+ mov rax, rdx
+ mov r10d, ecx
+ mov bword ptr [rsp], r8
mov dword ptr [rsp+0x08], 1
- lea r8, [rsp+0x10]
+ mov rsi, rdi
+ mov edx, r9d
+ mov rcx, rax
+ mov r8d, r10d
+ lea r9, [rsp+0x10]
+ xor edi, edi
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlEncoderChar,System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlEncoderChar,System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte):int
test eax, eax
sete al
movzx rax, al
- ;; size=40 bbWeight=1 PerfScore 7.50
+ ;; size=57 bbWeight=1 PerfScore 9.00
G_M24288_IG03:
add rsp, 24
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 52, prolog size 4, PerfScore 9.25, instruction count 13, allocated bytes for code 52 (MethodHash=64f2a11f) for method System.Buffers.Text.Base64Url:TryEncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 10.75, instruction count 19, allocated bytes for code 69 (MethodHash=64f2a11f) for method System.Buffers.Text.Base64Url:TryEncodeToChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref):ubyte (FullOpts) 16 (7.37 % of base) - System.Buffers.Text.Base64Url:DecodeFromChars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int ; Assembly listing for method System.Buffers.Text.Base64Url:DecodeFromChars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):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; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
; V02 loc0 [V02,T04] ( 3, 2 ) int -> rax
; V03 loc1 [V03 ] ( 2, 2 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op
; V04 loc2 [V04 ] ( 1, 1 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op
; V05 OutArgs [V05 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T10] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.FormatException>
; V07 tmp2 [V07,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Buffers.Text.Base64Url+Base64UrlDecoderChar>
;* V09 tmp4 [V09,T09] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "impAppendStmt" <System.Buffers.Text.Base64Url+Base64UrlDecoderChar>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V15 tmp10 [V15,T07] ( 2, 2 ) int -> rsi "Inline stloc first use temp"
+; V15 tmp10 [V15,T07] ( 2, 2 ) int -> rdx "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V19 tmp14 [V19,T00] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V20 tmp15 [V20,T02] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T01] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp17 [V22,T03] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T01] ( 2, 2 ) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp17 [V22,T03] ( 2, 2 ) int -> r9 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
; V25 tmp20 [V25,T05] ( 2, 2 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V27 tmp22 [V27,T06] ( 2, 2 ) byref -> rdi single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp23 [V28,T08] ( 2, 2 ) int -> rsi "field V16._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T06] ( 2, 2 ) byref -> rsi single-def "field V16._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp23 [V28,T08] ( 2, 2 ) int -> rdx "field V16._length (fldOffset=0x8)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
; V31 tmp26 [V31,T12] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V32 tmp27 [V32,T13] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
; V33 tmp28 [V33,T14] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23762_IG01:
push rbp
push r15
push rbx
sub rsp, 48
lea rbp, [rsp+0x40]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ mov r8, rdx
+ mov r9d, ecx
+ ;; size=19 bbWeight=1 PerfScore 4.25
G_M23762_IG02:
- xor r9d, r9d
- mov dword ptr [rsp], r9d
+ mov edx, esi
+ mov rsi, rdi
+ lea rcx, [rbp-0x18]
+ mov qword ptr [rsp], rcx
mov dword ptr [rsp+0x08], 1
mov dword ptr [rsp+0x10], 1
- lea r9, [rbp-0x18]
- lea r8, [rbp-0x20]
+ mov rcx, r8
+ mov r8d, r9d
+ lea r9, [rbp-0x20]
+ xor edi, edi
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Url+Base64UrlDecoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlDecoderChar,System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Url+Base64UrlDecoderChar,ushort](System.Buffers.Text.Base64Url+Base64UrlDecoderChar,System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
test eax, eax
jne SHORT G_M23762_IG04
mov eax, dword ptr [rbp-0x18]
- ;; size=50 bbWeight=1 PerfScore 9.75
+ ;; size=60 bbWeight=1 PerfScore 10.75
G_M23762_IG03:
add rsp, 48
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
G_M23762_IG04:
cmp eax, 1
je SHORT G_M23762_IG05
mov rdi, 0xD1FFAB1E ; System.FormatException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Format_BadBase64Char():System.String
call [rax]System.SR:get_Format_BadBase64Char():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.FormatException:.ctor(System.String):this
call [rax]System.FormatException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=62 bbWeight=0 PerfScore 0.00
G_M23762_IG05:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_DestinationTooShort():System.String
call [rax]System.SR:get_Argument_DestinationTooShort():System.String
mov r15, rax
mov edi, 0xD61
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 217, prolog size 13, PerfScore 16.25, instruction count 52, allocated bytes for code 217 (MethodHash=88c1a32d) for method System.Buffers.Text.Base64Url:DecodeFromChars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 233, prolog size 13, PerfScore 17.75, instruction count 58, allocated bytes for code 233 (MethodHash=88c1a32d) for method System.Buffers.Text.Base64Url:DecodeFromChars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int (FullOpts) 16 (7.37 % of base) - System.Buffers.Text.Base64Url:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int ; Assembly listing for method System.Buffers.Text.Base64Url:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):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; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
; V02 loc0 [V02,T04] ( 3, 2 ) int -> rax
; V03 loc1 [V03 ] ( 2, 2 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op
; V04 loc2 [V04 ] ( 1, 1 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op
; V05 OutArgs [V05 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.FormatException>
; V07 tmp2 [V07,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V08 tmp3 [V08,T05] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Buffers.Text.Base64Url+Base64UrlDecoderByte>
; V09 tmp4 [V09,T00] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp5 [V10,T02] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V11 tmp6 [V11,T01] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T03] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 tmp5 [V10,T02] ( 2, 2 ) int -> rdx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V11 tmp6 [V11,T01] ( 2, 2 ) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp7 [V12,T03] ( 2, 2 ) int -> r9 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V13 tmp8 [V13,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V14 tmp9 [V14,T09] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
; V15 tmp10 [V15,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 48
G_M57374_IG01:
push rbp
push r15
push rbx
sub rsp, 48
lea rbp, [rsp+0x40]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ mov r8, rdx
+ mov edx, esi
+ mov r9d, ecx
+ ;; size=21 bbWeight=1 PerfScore 4.50
G_M57374_IG02:
- xor r9d, r9d
- mov dword ptr [rsp], r9d
+ lea rsi, [rbp-0x18]
+ mov qword ptr [rsp], rsi
mov dword ptr [rsp+0x08], 1
mov dword ptr [rsp+0x10], 1
- lea r9, [rbp-0x18]
- lea r8, [rbp-0x20]
+ mov rsi, rdi
+ mov rcx, r8
+ mov r8d, r9d
+ lea r9, [rbp-0x20]
+ xor edi, edi
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Url+Base64UrlDecoderByte,ubyte](System.Buffers.Text.Base64Url+Base64UrlDecoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:DecodeFrom[System.Buffers.Text.Base64Url+Base64UrlDecoderByte,ubyte](System.Buffers.Text.Base64Url+Base64UrlDecoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int
test eax, eax
jne SHORT G_M57374_IG04
mov eax, dword ptr [rbp-0x18]
- ;; size=50 bbWeight=1 PerfScore 9.75
+ ;; size=58 bbWeight=1 PerfScore 10.50
G_M57374_IG03:
add rsp, 48
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
G_M57374_IG04:
cmp eax, 1
je SHORT G_M57374_IG05
mov rdi, 0xD1FFAB1E ; System.FormatException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Format_BadBase64Char():System.String
call [rax]System.SR:get_Format_BadBase64Char():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.FormatException:.ctor(System.String):this
call [rax]System.FormatException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=62 bbWeight=0 PerfScore 0.00
G_M57374_IG05:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_DestinationTooShort():System.String
call [rax]System.SR:get_Argument_DestinationTooShort():System.String
mov r15, rax
mov edi, 0xD61
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 217, prolog size 13, PerfScore 16.25, instruction count 52, allocated bytes for code 217 (MethodHash=54601fe1) for method System.Buffers.Text.Base64Url:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 233, prolog size 13, PerfScore 17.75, instruction count 58, allocated bytes for code 233 (MethodHash=54601fe1) for method System.Buffers.Text.Base64Url:DecodeFromUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts) 16 (10.88 % of base) - System.Buffers.Text.Base64Url:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int ; Assembly listing for method System.Buffers.Text.Base64Url:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):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; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
; V02 loc0 [V02 ] ( 2, 2 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op
; V03 loc1 [V03 ] ( 1, 1 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op
; V04 OutArgs [V04 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V06 tmp2 [V06,T04] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Buffers.Text.Base64Url+Base64UrlEncoderByte>
; V07 tmp3 [V07,T00] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T02] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 tmp5 [V09,T01] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp6 [V10,T03] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T02] ( 2, 2 ) int -> rdx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T01] ( 2, 2 ) byref -> r8 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T03] ( 2, 2 ) int -> r9 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V11 tmp7 [V11,T06] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
; V12 tmp8 [V12,T07] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 32
G_M40505_IG01:
push rbp
push r15
push rbx
sub rsp, 32
lea rbp, [rsp+0x30]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ mov r8, rdx
+ mov edx, esi
+ mov r9d, ecx
+ ;; size=21 bbWeight=1 PerfScore 4.50
G_M40505_IG02:
- xor r9d, r9d
- mov dword ptr [rsp], r9d
+ lea rsi, [rbp-0x18]
+ mov qword ptr [rsp], rsi
mov dword ptr [rsp+0x08], 1
- lea r9, [rbp-0x18]
- lea r8, [rbp-0x20]
+ mov rsi, rdi
+ mov rcx, r8
+ mov r8d, r9d
+ lea r9, [rbp-0x20]
+ xor edi, edi
mov rax, 0xD1FFAB1E ; code for System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderByte,ubyte](System.Buffers.Text.Base64Url+Base64UrlEncoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int
call [rax]System.Buffers.Text.Base64Helper:EncodeTo[System.Buffers.Text.Base64Url+Base64UrlEncoderByte,ubyte](System.Buffers.Text.Base64Url+Base64UrlEncoderByte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int
test eax, eax
jne SHORT G_M40505_IG04
mov eax, dword ptr [rbp-0x18]
- ;; size=42 bbWeight=1 PerfScore 8.75
+ ;; size=50 bbWeight=1 PerfScore 9.50
G_M40505_IG03:
add rsp, 32
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
G_M40505_IG04:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_DestinationTooShort():System.String
call [rax]System.SR:get_Argument_DestinationTooShort():System.String
mov r15, rax
mov edi, 0xD61
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 147, prolog size 13, PerfScore 15.25, instruction count 37, allocated bytes for code 147 (MethodHash=6c7261c6) for method System.Buffers.Text.Base64Url:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 163, prolog size 13, PerfScore 16.75, instruction count 43, allocated bytes for code 163 (MethodHash=6c7261c6) for method System.Buffers.Text.Base64Url:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/e01adf1e5af6e0558c74ca9541438fb4 |
Top method improvements-54 (-2.16 % of base) - Microsoft.Extensions.Hosting.Internal.Host+d__17`1[System.__Canon]:MoveNext():this ; Assembly listing for method Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__17`1[System.__Canon]:MoveNext():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; 15 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 46, 76 ) byref -> [rbp-0x58] this EH-live single-def
; V01 TypeCtx [V01,T14] ( 15, 22.52) long -> [rbp-0x38] EH-live single-def
; V02 loc0 [V02,T23] ( 12, 21 ) int -> [rbp-0x3C] do-not-enreg[Z] EH-live
; V03 loc1 [V03,T01] ( 11, 63 ) ref -> [rbp-0x60] do-not-enreg[Z] class-hnd EH-live <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
; V04 loc2 [V04,T24] ( 6, 17 ) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
; V05 loc3 [V05,T25] ( 2, 16 ) ref -> rsi class-hnd <System.__Canon>
; V06 loc4 [V06,T02] ( 8, 60 ) ref -> r15 class-hnd <System.Threading.Tasks.Task>
;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
; V08 loc6 [V08 ] ( 20, 49 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
;* V09 loc7 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
; V11 loc9 [V11,T29] ( 2, 8 ) ref -> rbx must-init class-hnd <System.__Canon>
;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V13 loc11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
-; V14 OutArgs [V14 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V15 tmp1 [V15 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V16 tmp2 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V17 tmp3 [V17,T74] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
;* V18 tmp4 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Collections.Generic.List`1[System.Exception]>
;* V19 tmp5 [V19 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V21 tmp7 [V21,T15] ( 4, 24 ) long -> r11 "VirtualCall with runtime lookup"
;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V23 tmp9 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V24 tmp10 [V24,T75] ( 3, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" <System.Exception>
;* V25 tmp11 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp12 [V26,T31] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
;* V27 tmp13 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V28 tmp14 [V28,T32] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
;* V29 tmp15 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V30 tmp16 [V30,T03] ( 4, 48 ) long -> r11 "VirtualCall with runtime lookup"
; V31 tmp17 [V31,T16] ( 3, 24 ) ref -> r12 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
; V32 tmp18 [V32,T09] ( 2, 32 ) ref -> rbx class-hnd "impAppendStmt" <System.Collections.Generic.List`1[System.Exception]>
; V33 tmp19 [V33,T76] ( 3, 0 ) ref -> rdx class-hnd "impSpillSpecialSideEff" <System.Exception>
; V34 tmp20 [V34,T80] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V35 tmp21 [V35,T68] ( 7, 0 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Exception]>
; V36 tmp22 [V36,T77] ( 3, 0 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Exception[]>
; V37 tmp23 [V37,T71] ( 4, 0 ) int -> rbx "Inline stloc first use temp"
;* V38 tmp24 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V39 tmp25 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
; V40 tmp26 [V40,T17] ( 2, 16 ) ref -> rax class-hnd "Inline stloc first use temp" <System.AggregateException>
;* V41 tmp27 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
; V42 tmp28 [V42,T12] ( 5, 28 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.AggregateException>
;* V43 tmp29 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
; V44 tmp30 [V44,T10] ( 2, 32 ) ref -> rsi class-hnd "dup spill" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
; V45 tmp31 [V45,T13] ( 4, 28 ) ref -> rsi
; V46 tmp32 [V46,T07] ( 4, 32 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
;* V47 tmp33 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
; V48 tmp34 [V48,T18] ( 3, 24 ) ref -> rsi class-hnd "Inlining Arg" <System.Exception[]>
; V49 tmp35 [V49,T19] ( 3, 24 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task[]>
; V50 tmp36 [V50,T08] ( 4, 32 ) int -> rsi "Inline stloc first use temp"
; V51 tmp37 [V51,T33] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V52 tmp38 [V52 ] ( 0, 0 ) ref -> zero-ref
;* V53 tmp39 [V53 ] ( 0, 0 ) ref -> zero-ref single-def
;* V54 tmp40 [V54 ] ( 0, 0 ) int -> zero-ref single-def
;* V55 tmp41 [V55 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
;* V56 tmp42 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
;* V57 tmp43 [V57,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V58 tmp44 [V58,T51] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V59 tmp45 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V60 tmp46 [V60,T52] ( 2, 4 ) byref -> r12 single-def "Inlining Arg"
; V61 tmp47 [V61,T45] ( 4, 4.40) long -> rdi "Inlining Arg"
;* V62 tmp48 [V62 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V63 tmp49 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
; V64 tmp50 [V64,T46] ( 4, 4.40) long -> rsi "Inlining Arg"
;* V65 tmp51 [V65 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V66 tmp52 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
; V67 tmp53 [V67,T34] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V68 tmp54 [V68,T57] ( 2, 4 ) int -> rax "Inlining Arg"
; V69 tmp55 [V69,T69] ( 7, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Exception]>
; V70 tmp56 [V70,T78] ( 3, 0 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Exception[]>
; V71 tmp57 [V71,T72] ( 4, 0 ) int -> r14 single-def "Inline stloc first use temp"
; V72 tmp58 [V72,T20] ( 3, 24 ) ref -> rax class-hnd "Inlining Arg" <System.__Canon>
;* V73 tmp59 [V73 ] ( 0, 0 ) ref -> zero-ref
;* V74 tmp60 [V74 ] ( 0, 0 ) ref -> zero-ref
;* V75 tmp61 [V75 ] ( 0, 0 ) int -> zero-ref
;* V76 tmp62 [V76 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
;* V77 tmp63 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
;* V78 tmp64 [V78,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V79 tmp65 [V79,T26] ( 2, 16 ) ref -> rdi class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
;* V80 tmp66 [V80 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V81 tmp67 [V81,T53] ( 2, 4 ) byref -> rbx "Inlining Arg"
; V82 tmp68 [V82,T47] ( 4, 4.40) long -> rdi "Inlining Arg"
;* V83 tmp69 [V83 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V84 tmp70 [V84 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V85 tmp71 [V85,T48] ( 4, 4.40) long -> rsi "Inlining Arg"
;* V86 tmp72 [V86 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V87 tmp73 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
; V88 tmp74 [V88,T04] ( 3, 48 ) ref -> registers class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
; V89 tmp75 [V89,T11] ( 2, 32 ) int -> rsi "Inlining Arg"
; V90 tmp76 [V90,T70] ( 7, 0 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Exception]>
; V91 tmp77 [V91,T79] ( 3, 0 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Exception[]>
; V92 tmp78 [V92,T73] ( 4, 0 ) int -> rbx "Inline stloc first use temp"
; V93 tmp79 [V93,T28] ( 4, 8 ) byref -> rdi single-def "Inlining Arg"
;* V94 tmp80 [V94,T65] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
; V95 tmp81 [V95,T54] ( 2, 4 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
; V96 tmp82 [V96 ] ( 12, 28 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V08.m_task (fldOffset=0x0)" P-DEP
; V97 tmp83 [V97 ] ( 12, 28 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V08.m_options (fldOffset=0x8)" P-DEP
; V98 tmp84 [V98,T63] ( 2, 2 ) ref -> rsi single-def "field V56.m_task (fldOffset=0x0)" P-INDEP
;* V99 tmp85 [V99,T66] ( 0, 0 ) int -> zero-ref single-def "field V56.m_options (fldOffset=0x8)" P-INDEP
; V100 tmp86 [V100,T30] ( 2, 8 ) ref -> rax "field V77.m_task (fldOffset=0x0)" P-INDEP
;* V101 tmp87 [V101,T61] ( 0, 0 ) int -> zero-ref "field V77.m_options (fldOffset=0x8)" P-INDEP
; V102 tmp88 [V102,T58] ( 2, 4 ) long -> rdi "argument with side effect"
; V103 tmp89 [V103,T55] ( 2, 4 ) ref -> rsi "argument with side effect"
; V104 tmp90 [V104,T59] ( 2, 4 ) long -> rdi "argument with side effect"
; V105 tmp91 [V105,T56] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
; V106 tmp92 [V106,T81] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V107 tmp93 [V107,T82] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
-; V108 PSPSym [V108,T67] ( 1, 1 ) long -> [rbp-0x78] do-not-enreg[V] "PSPSym"
+; V108 PSPSym [V108,T67] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
; V109 cse0 [V109,T62] ( 3, 3 ) ref -> rdi "CSE #13: conservative"
; V110 cse1 [V110,T27] ( 6, 15 ) byref -> rbx multi-def "CSE #02: moderate"
; V111 rat0 [V111,T35] ( 3, 5.60) long -> r11 "spilling expr"
; V112 rat1 [V112,T43] ( 3, 4.48) long -> r11 "fgMakeTemp is creating a new local variable"
; V113 rat2 [V113,T06] ( 3, 44.80) long -> r11 "fgMakeTemp is creating a new local variable"
; V114 rat3 [V114,T36] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
; V115 rat4 [V115,T37] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
; V116 rat5 [V116,T49] ( 3, 4 ) long -> rdi "runtime lookup"
; V117 rat6 [V117,T38] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
; V118 rat7 [V118,T39] ( 3, 5.60) long -> rsi "spilling expr"
; V119 rat8 [V119,T44] ( 3, 4.48) long -> r11 "fgMakeTemp is creating a new local variable"
; V120 rat9 [V120,T22] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
; V121 rat10 [V121,T40] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
; V122 rat11 [V122,T41] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
; V123 rat12 [V123,T50] ( 3, 4 ) long -> rdi "runtime lookup"
; V124 rat13 [V124,T42] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
; V125 rat14 [V125,T05] ( 3, 48 ) ref -> rax "delegate invoke call"
; V126 rat15 [V126,T21] ( 3, 24 ) ref -> rax "delegate invoke call"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M60193_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
xor ebx, ebx
mov qword ptr [rbp-0x50], rbx
mov qword ptr [rbp-0x48], rbx
- mov qword ptr [rbp-0x78], rsp
+ mov qword ptr [rbp-0x70], rsp
mov qword ptr [rbp-0x30], rsi
mov bword ptr [rbp-0x58], rdi
mov qword ptr [rbp-0x38], rsi
mov rax, rsi
- ;; size=51 bbWeight=1 PerfScore 13.25
+ ;; size=48 bbWeight=1 PerfScore 13.25
G_M60193_IG02:
mov r11d, dword ptr [rdi+0x28]
mov dword ptr [rbp-0x3C], r11d
;; size=8 bbWeight=1 PerfScore 3.00
G_M60193_IG03:
cmp dword ptr [rbp-0x3C], 0
je G_M60193_IG29
cmp dword ptr [rbp-0x3C], 1
je G_M60193_IG42
cmp byte ptr [rdi+0x2C], 0
je SHORT G_M60193_IG06
xor r11, r11
mov gword ptr [rbp-0x60], r11
mov r11, qword ptr [rax+0x30]
mov r11, qword ptr [r11]
cmp qword ptr [r11+0x08], 32
jle G_M60193_IG65
;; size=51 bbWeight=1 PerfScore 19.25
G_M60193_IG04:
mov r11, qword ptr [r11+0x20]
test r11, r11
je G_M60193_IG65
;; size=13 bbWeight=0.80 PerfScore 2.60
G_M60193_IG05:
mov rdi, gword ptr [rdi]
call [r11]
mov gword ptr [rbp-0x68], rax
jmp SHORT G_M60193_IG10
;; size=12 bbWeight=1 PerfScore 8.00
G_M60193_IG06:
mov rsi, qword ptr [rax+0x30]
mov rsi, qword ptr [rsi]
cmp qword ptr [rsi+0x08], 32
jle SHORT G_M60193_IG09
;; size=14 bbWeight=1 PerfScore 8.00
G_M60193_IG07:
mov r11, qword ptr [rsi+0x20]
test r11, r11
je SHORT G_M60193_IG09
;; size=9 bbWeight=0.80 PerfScore 2.60
G_M60193_IG08:
mov rdi, gword ptr [rdi]
call [r11]
mov rsi, bword ptr [rbp-0x58]
lea rdi, bword ptr [rsi+0x20]
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov rax, qword ptr [rbp-0x38]
mov rdi, bword ptr [rbp-0x58]
jmp G_M60193_IG42
;; size=35 bbWeight=1 PerfScore 11.75
G_M60193_IG09:
mov rdi, rax
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
mov rdi, bword ptr [rbp-0x58]
jmp SHORT G_M60193_IG08
;; size=27 bbWeight=0.36 PerfScore 1.71
G_M60193_IG10:
mov rdi, gword ptr [rbp-0x68]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
je G_M60193_IG27
mov rax, qword ptr [rbp-0x38]
mov rdi, qword ptr [rax+0x30]
mov rdi, qword ptr [rdi]
mov r11, qword ptr [rdi+0x18]
test r11, r11
je SHORT G_M60193_IG12
;; size=45 bbWeight=8 PerfScore 110.00
G_M60193_IG11:
mov rdi, gword ptr [rbp-0x68]
call [r11]
mov rsi, rax
jmp SHORT G_M60193_IG13
;; size=12 bbWeight=8 PerfScore 50.00
G_M60193_IG12:
mov rdi, rax
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
jmp SHORT G_M60193_IG11
;; size=23 bbWeight=1.60 PerfScore 6.00
G_M60193_IG13:
mov rdi, bword ptr [rbp-0x58]
mov rax, gword ptr [rdi+0x08]
mov rdx, gword ptr [rdi+0x38]
mov rdi, gword ptr [rax+0x08]
call [rax+0x18]System.Func`3[System.__Canon,System.Threading.CancellationToken,System.__Canon]:Invoke(System.__Canon,System.Threading.CancellationToken):System.__Canon:this
mov r15, rax
;; size=22 bbWeight=8 PerfScore 82.00
G_M60193_IG14:
test dword ptr [r15+0x34], 0xD1FFAB1E
je G_M60193_IG18
test dword ptr [r15+0x34], 0xD1FFAB1E
je SHORT G_M60193_IG10
mov rdi, r15
xor esi, esi
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this
call [rcx]System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this
test rax, rax
je G_M60193_IG10
mov rax, gword ptr [rbp-0x68]
mov rdi, bword ptr [rbp-0x58]
mov rbx, gword ptr [rdi+0x10]
xor r14, r14
test dword ptr [r15+0x34], 0xD1FFAB1E
je SHORT G_M60193_IG16
;; size=75 bbWeight=8 PerfScore 170.00
G_M60193_IG15:
mov rdi, r15
xor esi, esi
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this
call [rcx]System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this
mov r14, rax
mov rax, gword ptr [rbp-0x68]
;; size=24 bbWeight=4 PerfScore 20.00
G_M60193_IG16:
mov rsi, gword ptr [r14+0x80]
test rsi, rsi
jne G_M60193_IG24
;; size=16 bbWeight=8 PerfScore 26.00
G_M60193_IG17:
mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rsi, gword ptr [r14+0x78]
test rsi, rsi
jne G_M60193_IG23
jmp G_M60193_IG26
;; size=36 bbWeight=4 PerfScore 27.00
G_M60193_IG18:
cmp gword ptr [rbp-0x60], 0
jne SHORT G_M60193_IG21
;; size=7 bbWeight=8 PerfScore 24.00
G_M60193_IG19:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Threading.Tasks.Task]
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M60193_IG25
;; size=37 bbWeight=4 PerfScore 23.00
G_M60193_IG20:
mov rdi, 0xD1FFAB1E ; data for System.Collections.Generic.List`1[System.Threading.Tasks.Task]:s_emptyArray
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r12+0x08]
call CORINFO_HELP_ASSIGN_REF
mov gword ptr [rbp-0x60], r12
;; size=27 bbWeight=4 PerfScore 19.00
G_M60193_IG21:
mov rsi, gword ptr [rbp-0x60]
inc dword ptr [rsi+0x14]
mov rsi, gword ptr [rbp-0x60]
mov rdi, gword ptr [rsi+0x08]
mov rsi, gword ptr [rbp-0x60]
mov esi, dword ptr [rsi+0x10]
cmp dword ptr [rdi+0x08], esi
jbe SHORT G_M60193_IG22
lea edx, [rsi+0x01]
mov rax, gword ptr [rbp-0x60]
mov dword ptr [rax+0x10], edx
movsxd rsi, esi
mov rdx, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
jmp G_M60193_IG10
;; size=60 bbWeight=8 PerfScore 178.00
G_M60193_IG22:
mov rdi, gword ptr [rbp-0x60]
mov rsi, r15
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
jmp G_M60193_IG10
;; size=24 bbWeight=8 PerfScore 52.00
G_M60193_IG23:
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r14+0x80]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rsi, r13
;; size=27 bbWeight=4 PerfScore 14.00
G_M60193_IG24:
mov rdi, rbx
mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
cmp dword ptr [rdi], edi
call [rcx]System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
jmp G_M60193_IG10
;; size=22 bbWeight=8 PerfScore 68.00
G_M60193_IG25:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Threading.Tasks.Task]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M60193_IG20
;; size=20 bbWeight=0 PerfScore 0.00
G_M60193_IG26:
mov edi, 20
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M60193_IG27:
cmp dword ptr [rbp-0x3C], 0
jge SHORT G_M60193_IG28
mov rdi, gword ptr [rbp-0x68]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=23 bbWeight=1 PerfScore 7.25
G_M60193_IG28:
cmp gword ptr [rbp-0x60], 0
je G_M60193_IG68
mov rdi, gword ptr [rbp-0x60]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:WhenAll(System.Collections.Generic.IEnumerable`1[System.Threading.Tasks.Task]):System.Threading.Tasks.Task
call [rax]System.Threading.Tasks.Task:WhenAll(System.Collections.Generic.IEnumerable`1[System.Threading.Tasks.Task]):System.Threading.Tasks.Task
mov rdi, bword ptr [rbp-0x58]
lea rdi, bword ptr [rdi+0x18]
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov rax, qword ptr [rbp-0x38]
mov rdi, bword ptr [rbp-0x58]
;; size=51 bbWeight=1 PerfScore 12.00
G_M60193_IG29:
cmp dword ptr [rbp-0x3C], 0
je G_M60193_IG34
mov rsi, gword ptr [rdi+0x18]
cmp byte ptr [rsi], sil
mov gword ptr [rbp-0x50], rsi
xor esi, esi
mov dword ptr [rbp-0x48], esi
test byte ptr [rbp-0x48], 4
jne SHORT G_M60193_IG30
mov rsi, gword ptr [rbp-0x50]
test dword ptr [rsi+0x34], 0xD1FFAB1E
jne G_M60193_IG37
;; size=49 bbWeight=1 PerfScore 18.25
G_M60193_IG30:
xor esi, esi
mov dword ptr [rdi+0x28], esi
lea rdi, bword ptr [rdi+0x40]
mov rsi, gword ptr [rbp-0x50]
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov edi, dword ptr [rbp-0x48]
mov r15, bword ptr [rbp-0x58]
mov dword ptr [r15+0x48], edi
mov rax, qword ptr [rbp-0x38]
mov rdi, qword ptr [rax+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x10]
test rdi, rdi
je G_M60193_IG38
;; size=53 bbWeight=1 PerfScore 15.00
G_M60193_IG31:
lea r12, bword ptr [r15+0x30]
mov rsi, qword ptr [rdi+0x18]
mov rsi, qword ptr [rsi+0x18]
test rsi, rsi
je G_M60193_IG39
;; size=21 bbWeight=1 PerfScore 5.75
G_M60193_IG32:
mov rdi, qword ptr [rsi+0x18]
mov rdi, qword ptr [rdi+0x18]
test rdi, rdi
je G_M60193_IG40
;; size=17 bbWeight=1 PerfScore 5.25
G_M60193_IG33:
mov rsi, r15
mov rdx, r12
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__17`1[System.__Canon]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__17`1[System.__Canon]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x50]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M60193_IG70
;; size=42 bbWeight=1 PerfScore 9.75
G_M60193_IG34:
lea rbx, bword ptr [rdi+0x40]
;; size=4 bbWeight=1 PerfScore 0.50
G_M60193_IG35:
vmovdqu xmm0, xmmword ptr [rbx]
vmovdqu xmmword ptr [rbp-0x50], xmm0
;; size=9 bbWeight=1 PerfScore 5.00
G_M60193_IG36:
xor esi, esi
mov qword ptr [rbx], rsi
mov qword ptr [rbx+0x08], rsi
mov dword ptr [rdi+0x28], -1
mov rdi, bword ptr [rbp-0x58]
;; size=20 bbWeight=1 PerfScore 4.25
G_M60193_IG37:
mov rsi, gword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x48]
mov ecx, dword ptr [rsi+0x34]
and ecx, 0xD1FFAB1E
cmp ecx, 0xD1FFAB1E
je SHORT G_M60193_IG41
mov rdi, rsi
mov esi, eax
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
call [rax]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
jmp SHORT G_M60193_IG41
;; size=43 bbWeight=1 PerfScore 11.25
G_M60193_IG38:
mov rdi, rax
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
jmp G_M60193_IG31
;; size=26 bbWeight=0.20 PerfScore 0.75
G_M60193_IG39:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rsi, rax
jmp G_M60193_IG32
;; size=23 bbWeight=0.20 PerfScore 0.70
G_M60193_IG40:
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rdi, rax
jmp G_M60193_IG33
;; size=26 bbWeight=0.20 PerfScore 0.75
G_M60193_IG41:
xor rdi, rdi
mov r15, bword ptr [rbp-0x58]
mov gword ptr [r15+0x18], rdi
jmp G_M60193_IG68
;; size=15 bbWeight=1 PerfScore 4.25
G_M60193_IG42:
cmp dword ptr [rbp-0x3C], 1
je SHORT G_M60193_IG46
;; size=6 bbWeight=1 PerfScore 3.00
G_M60193_IG43:
mov r15, bword ptr [rbp-0x58]
mov rdi, gword ptr [r15+0x20]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
je G_M60193_IG63
mov rax, qword ptr [rbp-0x38]
mov rdi, qword ptr [rax+0x30]
mov rdi, qword ptr [rdi]
mov r11, qword ptr [rdi+0x18]
test r11, r11
je SHORT G_M60193_IG45
;; size=49 bbWeight=4 PerfScore 63.00
G_M60193_IG44:
mov rdi, gword ptr [r15+0x20]
call [r11]
mov rbx, rax
jmp SHORT G_M60193_IG46
;; size=12 bbWeight=4 PerfScore 29.00
G_M60193_IG45:
mov rdi, rax
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
jmp SHORT G_M60193_IG44
;; size=23 bbWeight=0.80 PerfScore 3.00
G_M60193_IG46:
mov r15, bword ptr [rbp-0x58]
cmp dword ptr [rbp-0x3C], 1
je G_M60193_IG53
;; size=14 bbWeight=8 PerfScore 32.00
G_M60193_IG47:
mov rax, gword ptr [r15+0x08]
mov rdx, gword ptr [r15+0x38]
mov rsi, rbx
mov rdi, gword ptr [rax+0x08]
call [rax+0x18]System.Func`3[System.__Canon,System.Threading.CancellationToken,System.__Canon]:Invoke(System.__Canon,System.Threading.CancellationToken):System.__Canon:this
cmp byte ptr [rax], al
mov gword ptr [rbp-0x50], rax
xor edi, edi
mov dword ptr [rbp-0x48], edi
test byte ptr [rbp-0x48], 4
jne SHORT G_M60193_IG48
mov rdi, gword ptr [rbp-0x50]
test dword ptr [rdi+0x34], 0xD1FFAB1E
jne G_M60193_IG56
;; size=52 bbWeight=4 PerfScore 90.00
G_M60193_IG48:
mov dword ptr [rbp-0x3C], 1
mov dword ptr [r15+0x28], 1
lea rdi, bword ptr [r15+0x40]
mov rsi, gword ptr [rbp-0x50]
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov edi, dword ptr [rbp-0x48]
mov dword ptr [r15+0x48], edi
mov rax, qword ptr [rbp-0x38]
mov rdi, qword ptr [rax+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x10]
test rdi, rdi
je G_M60193_IG57
;; size=59 bbWeight=1 PerfScore 14.75
G_M60193_IG49:
mov rax, qword ptr [rbp-0x38]
;; size=4 bbWeight=0.80 PerfScore 0.80
G_M60193_IG50:
lea rbx, bword ptr [r15+0x30]
mov rsi, qword ptr [rdi+0x18]
mov rsi, qword ptr [rsi+0x18]
test rsi, rsi
je G_M60193_IG58
;; size=21 bbWeight=1 PerfScore 5.75
G_M60193_IG51:
mov rdi, qword ptr [rsi+0x18]
mov rdi, qword ptr [rdi+0x18]
test rdi, rdi
je G_M60193_IG59
;; size=17 bbWeight=1 PerfScore 5.25
G_M60193_IG52:
mov rsi, r15
mov rdx, rbx
mov rcx, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__17`1[System.__Canon]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rcx]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__17`1[System.__Canon]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x50]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M60193_IG61
;; size=42 bbWeight=1 PerfScore 9.75
G_M60193_IG53:
lea rbx, bword ptr [r15+0x40]
;; size=4 bbWeight=4 PerfScore 2.00
G_M60193_IG54:
vmovdqu xmm0, xmmword ptr [rbx]
vmovdqu xmmword ptr [rbp-0x50], xmm0
;; size=9 bbWeight=4 PerfScore 20.00
G_M60193_IG55:
xor edi, edi
mov qword ptr [rbx], rdi
mov qword ptr [rbx+0x08], rdi
mov dword ptr [rbp-0x3C], -1
mov dword ptr [r15+0x28], -1
mov r15, bword ptr [rbp-0x58]
;; size=28 bbWeight=4 PerfScore 21.00
G_M60193_IG56:
mov rdi, gword ptr [rbp-0x50]
mov esi, dword ptr [rbp-0x48]
mov eax, dword ptr [rdi+0x34]
and eax, 0xD1FFAB1E
cmp eax, 0xD1FFAB1E
je G_M60193_IG43
mov rcx, rdi
mov rdi, rcx
mov rcx, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
call [rcx]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
jmp G_M60193_IG43
;; size=49 bbWeight=8 PerfScore 90.00
G_M60193_IG57:
mov rax, qword ptr [rbp-0x38]
mov rdi, rax
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
mov rax, qword ptr [rbp-0x38]
jmp G_M60193_IG50
;; size=34 bbWeight=0.20 PerfScore 1.15
G_M60193_IG58:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rsi, rax
mov rax, qword ptr [rbp-0x38]
jmp G_M60193_IG51
;; size=27 bbWeight=0.20 PerfScore 0.90
G_M60193_IG59:
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rdi, rax
jmp G_M60193_IG52
;; size=26 bbWeight=0.20 PerfScore 0.75
G_M60193_IG60:
nop
jmp SHORT G_M60193_IG66
;; size=3 bbWeight=0 PerfScore 0.00
G_M60193_IG61:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M60193_IG62:
call G_M60193_IG94
jmp G_M60193_IG70
;; size=10 bbWeight=1 PerfScore 3.00
G_M60193_IG63:
cmp dword ptr [rbp-0x3C], 0
jge SHORT G_M60193_IG64
cmp gword ptr [r15+0x20], 0
je SHORT G_M60193_IG64
mov rdi, gword ptr [r15+0x20]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=30 bbWeight=1 PerfScore 12.25
G_M60193_IG64:
xor rdi, rdi
mov gword ptr [r15+0x20], rdi
jmp SHORT G_M60193_IG68
;; size=8 bbWeight=1 PerfScore 3.25
G_M60193_IG65:
mov rax, qword ptr [rbp-0x38]
mov rdi, rax
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
mov rdi, bword ptr [rbp-0x58]
jmp G_M60193_IG05
;; size=34 bbWeight=0.36 PerfScore 2.07
G_M60193_IG66:
mov rdi, rsp
;; size=3 bbWeight=0 PerfScore 0.00
G_M60193_IG67:
call G_M60193_IG94
nop
;; size=6 bbWeight=0 PerfScore 0.00
G_M60193_IG68:
mov r15, bword ptr [rbp-0x58]
mov dword ptr [r15+0x28], -2
lea rdi, bword ptr [r15+0x30]
cmp gword ptr [rdi], 0
jne SHORT G_M60193_IG69
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
jmp SHORT G_M60193_IG70
;; size=42 bbWeight=1 PerfScore 11.75
G_M60193_IG69:
mov rdi, gword ptr [rdi]
- xor eax, eax
- mov dword ptr [rsp], eax
+ xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:SetExistingTaskResult(System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult],System.Threading.Tasks.VoidTaskResult)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:SetExistingTaskResult(System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult],System.Threading.Tasks.VoidTaskResult)
- ;; size=20 bbWeight=1 PerfScore 6.50
+ ;; size=17 bbWeight=1 PerfScore 5.50
G_M60193_IG70:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M60193_IG71:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M60193_IG72:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- mov rbp, qword ptr [rdi+0x08]
- mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0x80]
- ;; size=30 bbWeight=0 PerfScore 0.00
+ push rax
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x70]
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M60193_IG73:
mov rdx, rsi
mov r15, bword ptr [rbp-0x58]
mov rdi, gword ptr [r15+0x10]
inc dword ptr [rdi+0x14]
mov rax, gword ptr [rdi+0x08]
mov ebx, dword ptr [rdi+0x10]
cmp dword ptr [rax+0x08], ebx
ja SHORT G_M60193_IG74
mov rsi, rdx
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
jmp SHORT G_M60193_IG75
;; size=43 bbWeight=0 PerfScore 0.00
G_M60193_IG74:
lea esi, [rbx+0x01]
mov dword ptr [rdi+0x10], esi
movsxd rsi, ebx
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
;; size=24 bbWeight=0 PerfScore 0.00
G_M60193_IG75:
lea rax, G_M60193_IG10
;; size=7 bbWeight=0 PerfScore 0.00
G_M60193_IG76:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
G_M60193_IG77:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- mov rbp, qword ptr [rdi+0x08]
- mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0x80]
- ;; size=30 bbWeight=0 PerfScore 0.00
+ push rax
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x70]
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M60193_IG78:
cmp dword ptr [rbp-0x3C], 0
jge SHORT G_M60193_IG79
cmp gword ptr [rbp-0x68], 0
je SHORT G_M60193_IG79
mov rdi, gword ptr [rbp-0x68]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=30 bbWeight=0 PerfScore 0.00
G_M60193_IG79:
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M60193_IG80:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
G_M60193_IG81:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- mov rbp, qword ptr [rdi+0x08]
- mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0x80]
- ;; size=30 bbWeight=0 PerfScore 0.00
+ push rax
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x70]
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M60193_IG82:
mov rbx, rsi
mov r15, bword ptr [rbp-0x58]
mov rdi, gword ptr [r15+0x18]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_IsFaulted():ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.Task:get_IsFaulted():ubyte:this
test eax, eax
jne SHORT G_M60193_IG84
mov rdi, gword ptr [r15+0x10]
inc dword ptr [rdi+0x14]
mov rax, gword ptr [rdi+0x08]
mov r14d, dword ptr [rdi+0x10]
cmp dword ptr [rax+0x08], r14d
ja SHORT G_M60193_IG83
mov rsi, rbx
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
jmp SHORT G_M60193_IG85
;; size=67 bbWeight=0 PerfScore 0.00
G_M60193_IG83:
lea esi, [r14+0x01]
mov dword ptr [rdi+0x10], esi
movsxd rsi, r14d
mov rdi, rax
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
jmp SHORT G_M60193_IG85
;; size=30 bbWeight=0 PerfScore 0.00
G_M60193_IG84:
mov rbx, gword ptr [r15+0x10]
mov rdi, gword ptr [r15+0x18]
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Exception():System.AggregateException:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.Task:get_Exception():System.AggregateException:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.AggregateException:get_InnerExceptions():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]:this
cmp dword ptr [rdi], edi
call [rax]System.AggregateException:get_InnerExceptions():System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]:this
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
;; size=59 bbWeight=0 PerfScore 0.00
G_M60193_IG85:
lea rax, G_M60193_IG41
;; size=7 bbWeight=0 PerfScore 0.00
G_M60193_IG86:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
G_M60193_IG87:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- mov rbp, qword ptr [rdi+0x08]
- mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0x80]
- ;; size=30 bbWeight=0 PerfScore 0.00
+ push rax
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x70]
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M60193_IG88:
mov rdx, rsi
mov r15, bword ptr [rbp-0x58]
mov rdi, gword ptr [r15+0x10]
inc dword ptr [rdi+0x14]
mov rax, gword ptr [rdi+0x08]
mov ebx, dword ptr [rdi+0x10]
cmp dword ptr [rax+0x08], ebx
ja SHORT G_M60193_IG89
mov rsi, rdx
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
jmp SHORT G_M60193_IG90
;; size=43 bbWeight=0 PerfScore 0.00
G_M60193_IG89:
lea esi, [rbx+0x01]
mov dword ptr [rdi+0x10], esi
movsxd rsi, ebx
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
;; size=24 bbWeight=0 PerfScore 0.00
G_M60193_IG90:
cmp byte ptr [r15+0x2D], 0
jne SHORT G_M60193_IG92
lea rax, G_M60193_IG43
;; size=14 bbWeight=0 PerfScore 0.00
G_M60193_IG91:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
G_M60193_IG92:
lea rax, G_M60193_IG60
;; size=7 bbWeight=0 PerfScore 0.00
G_M60193_IG93:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
G_M60193_IG94:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- mov rbp, qword ptr [rdi+0x08]
- mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0x80]
- ;; size=30 bbWeight=1 PerfScore 9.75
+ push rax
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x70]
+ ;; size=22 bbWeight=1 PerfScore 10.50
G_M60193_IG95:
cmp dword ptr [rbp-0x3C], 0
jge SHORT G_M60193_IG96
mov r15, bword ptr [rbp-0x58]
mov rdi, gword ptr [r15+0x20]
test rdi, rdi
je SHORT G_M60193_IG96
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
nop
;; size=33 bbWeight=1 PerfScore 10.75
G_M60193_IG96:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M60193_IG97:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- mov rbp, qword ptr [rdi+0x08]
- mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0x80]
- ;; size=30 bbWeight=0 PerfScore 0.00
+ push rax
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x70]
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M60193_IG98:
mov r15, bword ptr [rbp-0x58]
mov dword ptr [r15+0x28], -2
lea rdi, bword ptr [r15+0x30]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetException(System.Exception):this
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetException(System.Exception):this
lea rax, G_M60193_IG70
;; size=35 bbWeight=0 PerfScore 0.00
G_M60193_IG99:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2497, prolog size 51, PerfScore 1500.28, instruction count 644, allocated bytes for code 2497 (MethodHash=36b514de) for method Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__17`1[System.__Canon]:MoveNext():this (FullOpts)
+; Total bytes of code 2443, prolog size 48, PerfScore 1500.03, instruction count 643, allocated bytes for code 2443 (MethodHash=36b514de) for method Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__17`1[System.__Canon]:MoveNext():this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/fb1d884076b0aa4a2b1518631c762c8c |
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#103799
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: