TryParseUInt16D

Created Diff never expires
15 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
192 lines
17 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
193 lines
; Assembly listing for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[Byte],byref,byref,ushort):bool
; Assembly listing for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[Byte],byref,byref,ushort):bool
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; optimized code
; rsp based frame
; rsp based frame
; fully interruptible
; fully interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T00] ( 6, 8 ) byref -> rcx
; V00 arg0 [V00,T00] ( 6, 8 ) byref -> rcx
; V01 arg1 [V01,T01] ( 6, 4 ) byref -> rdx
; V01 arg1 [V01,T01] ( 6, 4 ) byref -> rdx
; V02 arg2 [V02,T02] ( 6, 4 ) byref -> r8
; V02 arg2 [V02,T02] ( 6, 4 ) byref -> r8
; V03 arg3 [V03,T03] ( 4, 3.50) ushort -> r9
; V03 arg3 [V03,T03] ( 4, 3.50) ushort -> r9
; V04 loc0 [V04,T04] ( 6, 3 ) int -> rax
; V04 loc0 [V04,T04] ( 6, 3 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace"
;# V05 OutArgs [V05 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)"
;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref V08._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
;
;
; Lcl frame size = 0
; Lcl frame size = 0


G_M1013_IG01: ;; offset=0000H
G_M1013_IG01: ;; offset=0000H
;; bbWeight=1 PerfScore 0.00
;; bbWeight=1 PerfScore 0.00
G_M1013_IG02: ;; offset=0000H
G_M1013_IG02: ;; offset=0000H
410FB7C1 movzx rax, r9w
410FB7C1 movzx rax, r9w
85C0 test eax, eax
85C0 test eax, eax
7505 jne SHORT G_M1013_IG04
7505 jne SHORT G_M1013_IG04
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M1013_IG03: ;; offset=0008H
G_M1013_IG03: ;; offset=0008H
E9CBFAFFFF jmp System.Buffers.Text.Utf8Parser:TryParseUInt16D(System.ReadOnlySpan`1[Byte],byref,byref):bool
E9CBFAFFFF jmp System.Buffers.Text.Utf8Parser:TryParseUInt16D(System.ReadOnlySpan`1[Byte],byref,byref):bool
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M1013_IG04: ;; offset=000DH
G_M1013_IG04: ;; offset=000DH
410FB7C1 movzx rax, r9w
410FB7C1 movzx rax, r9w
83C820 or eax, 32
83C820 or eax, 32
83F867 cmp eax, 103
83F867 cmp eax, 103
7F0C jg SHORT G_M1013_IG05
7F0C jg SHORT G_M1013_IG05
83F864 cmp eax, 100
83F864 cmp eax, 100
74EA je SHORT G_M1013_IG03
74EA je SHORT G_M1013_IG03
83F867 cmp eax, 103
83F867 cmp eax, 103
74E5 je SHORT G_M1013_IG03
74E5 je SHORT G_M1013_IG03
EB16 jmp SHORT G_M1013_IG08
EB16 jmp SHORT G_M1013_IG08
;; bbWeight=0.50 PerfScore 3.12
;; bbWeight=0.50 PerfScore 3.12
G_M1013_IG05: ;; offset=0025H
G_M1013_IG05: ;; offset=0025H
83F86E cmp eax, 110
83F86E cmp eax, 110
7407 je SHORT G_M1013_IG06
7407 je SHORT G_M1013_IG06
83F878 cmp eax, 120
83F878 cmp eax, 120
7407 je SHORT G_M1013_IG07
7407 je SHORT G_M1013_IG07
EB0A jmp SHORT G_M1013_IG08
EB0A jmp SHORT G_M1013_IG08
;; bbWeight=0.50 PerfScore 2.25
;; bbWeight=0.50 PerfScore 2.25
G_M1013_IG06: ;; offset=0031H
G_M1013_IG06: ;; offset=0031H
E9C2FAFFFF jmp System.Buffers.Text.Utf8Parser:TryParseUInt16N(System.ReadOnlySpan`1[Byte],byref,byref):bool
E9C2FAFFFF jmp System.Buffers.Text.Utf8Parser:TryParseUInt16N(System.ReadOnlySpan`1[Byte],byref,byref):bool
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M1013_IG07: ;; offset=0036H
G_M1013_IG07: ;; offset=0036H
E9DDFAFFFF jmp System.Buffers.Text.Utf8Parser:TryParseUInt16X(System.ReadOnlySpan`1[Byte],byref,byref):bool
E9DDFAFFFF jmp System.Buffers.Text.Utf8Parser:TryParseUInt16X(System.ReadOnlySpan`1[Byte],byref,byref):bool
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M1013_IG08: ;; offset=003BH
G_M1013_IG08: ;; offset=003BH
E9F0EFFFFF jmp System.Buffers.Text.ParserHelpers:TryParseThrowFormatException(System.ReadOnlySpan`1[Byte],byref,byref):bool
E9F0EFFFFF jmp System.Buffers.Text.ParserHelpers:TryParseThrowFormatException(System.ReadOnlySpan`1[Byte],byref,byref):bool
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00


; Total bytes of code 64, prolog size 0, PerfScore 17.28, instruction count 21, allocated bytes for code 64 (MethodHash=8045fc0a) for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[Byte],byref,byref,ushort):bool
; Total bytes of code 64, prolog size 0, PerfScore 17.28, instruction count 21, allocated bytes for code 64 (MethodHash=8045fc0a) for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[Byte],byref,byref,ushort):bool
; ============================================================
; ============================================================


; Assembly listing for method System.Buffers.Text.Utf8Parser:TryParseUInt16D(System.ReadOnlySpan`1[Byte],byref,byref):bool
; Assembly listing for method System.Buffers.Text.Utf8Parser:TryParseUInt16D(System.ReadOnlySpan`1[Byte],byref,byref):bool
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; optimized code
; rsp based frame
; rsp based frame
; fully interruptible
; fully interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op
; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op
; V01 arg1 [V01,T06] ( 4, 3 ) byref -> rdx
; V01 arg1 [V01,T06] ( 4, 3 ) byref -> rdx
; V02 arg2 [V02,T07] ( 4, 3 ) byref -> r8
; V02 arg2 [V02,T07] ( 4, 3 ) byref -> r8
; V03 loc0 [V03,T00] ( 26, 27 ) int -> r9
; V03 loc0 [V03,T00] ( 26, 27 ) int -> r9
; V04 loc1 [V04,T01] ( 19, 16.50) int -> r10
; V04 loc1 [V04,T01] ( 19, 16.50) int -> r10
; V05 loc2 [V05,T05] ( 12, 6 ) int -> r11
; V05 loc2 [V05,T05] ( 12, 6 ) int -> r11
;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace"
;# V06 OutArgs [V06 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace"
; V07 tmp1 [V07,T08] ( 2, 2 ) int -> rax "Inlining Arg"
; V07 tmp1 [V07,T08] ( 2, 2 ) int -> rax "Inlining Arg"
; V08 tmp2 [V08,T04] ( 8, 8 ) byref -> rax V10._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)"
; V08 tmp2 [V08,T04] ( 8, 8 ) byref -> rax V10._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)"
; V09 tmp3 [V09,T03] ( 8, 8.50) int -> rcx V10._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
; V09 tmp3 [V09,T03] ( 8, 8.50) int -> rcx V10._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
;
;
; Lcl frame size = 0
; Lcl frame size = 0


G_M49819_IG01: ;; offset=0000H
G_M49819_IG01: ;; offset=0000H
56 push rsi
56 push rsi
;; bbWeight=1 PerfScore 1.00
;; bbWeight=1 PerfScore 1.00
G_M49819_IG02: ;; offset=0001H
G_M49819_IG02: ;; offset=0001H
488B01 mov rax, bword ptr [rcx]
488B01 mov rax, bword ptr [rcx]
8B4908 mov ecx, dword ptr [rcx+8]
8B4908 mov ecx, dword ptr [rcx+8]
;; bbWeight=1 PerfScore 4.00
;; bbWeight=1 PerfScore 4.00
G_M49819_IG03: ;; offset=0007H
G_M49819_IG03: ;; offset=0007H
85C9 test ecx, ecx
85C9 test ecx, ecx
0F8EFC000000 jle G_M49819_IG08
0F8E00010000 jle G_M49819_IG08
;; bbWeight=1 PerfScore 1.25
;; bbWeight=1 PerfScore 1.25
G_M49819_IG04: ;; offset=000FH
G_M49819_IG04: ;; offset=000FH
4533C9 xor r9d, r9d
4533C9 xor r9d, r9d
440FB610 movzx r10, byte ptr [rax]
440FB610 movzx r10, byte ptr [rax]
4533DB xor r11d, r11d
4533DB xor r11d, r11d
418D72D0 lea esi, [r10-48]
418D72D0 lea esi, [r10-48]
83FE09 cmp esi, 9
83FE09 cmp esi, 9
0F87E5000000 ja G_M49819_IG08
0F87E9000000 ja G_M49819_IG08
4183FA30 cmp r10d, 48
4183FA30 cmp r10d, 48
7527 jne SHORT G_M49819_IG07
752B jne SHORT G_M49819_IG07
;; bbWeight=0.50 PerfScore 2.75
0F1F4000 align
G_M49819_IG05: ;; offset=002CH
;; bbWeight=0.50 PerfScore 2.88
G_M49819_IG05: ;; offset=0030H
41FFC1 inc r9d
41FFC1 inc r9d
443BC9 cmp r9d, ecx
443BC9 cmp r9d, ecx
0F83DF000000 jae G_M49819_IG10
0F83DF000000 jae G_M49819_IG10
4D63D1 movsxd r10, r9d
4D63D1 movsxd r10, r9d
460FB61410 movzx r10, byte ptr [rax+r10]
460FB61410 movzx r10, byte ptr [rax+r10]
4183FA30 cmp r10d, 48
4183FA30 cmp r10d, 48
74E6 je SHORT G_M49819_IG05
74E6 je SHORT G_M49819_IG05
;; bbWeight=4 PerfScore 20.00
;; bbWeight=4 PerfScore 20.00
G_M49819_IG06: ;; offset=0046H
G_M49819_IG06: ;; offset=004AH
418D72D0 lea esi, [r10-48]
418D72D0 lea esi, [r10-48]
83FE09 cmp esi, 9
83FE09 cmp esi, 9
0F87C4000000 ja G_M49819_IG10
0F87C4000000 ja G_M49819_IG10
;; bbWeight=0.50 PerfScore 0.88
;; bbWeight=0.50 PerfScore 0.88
G_M49819_IG07: ;; offset=0053H
G_M49819_IG07: ;; offset=0057H
458D5AD0 lea r11d, [r10-48]
458D5AD0 lea r11d, [r10-48]
41FFC1 inc r9d
41FFC1 inc r9d
443BC9 cmp r9d, ecx
443BC9 cmp r9d, ecx
0F83B4000000 jae G_M49819_IG10
0F83B4000000 jae G_M49819_IG10
4D63D1 movsxd r10, r9d
4D63D1 movsxd r10, r9d
460FB61410 movzx r10, byte ptr [rax+r10]
460FB61410 movzx r10, byte ptr [rax+r10]
418D72D0 lea esi, [r10-48]
418D72D0 lea esi, [r10-48]
83FE09 cmp esi, 9
83FE09 cmp esi, 9
0F879F000000 ja G_M49819_IG10
0F879F000000 ja G_M49819_IG10
41FFC1 inc r9d
41FFC1 inc r9d
478D1C9B lea r11d, [r11+4*r11]
478D1C9B lea r11d, [r11+4*r11]
478D5C5AD0 lea r11d, [r10+2*r11-48]
478D5C5AD0 lea r11d, [r10+2*r11-48]
443BC9 cmp r9d, ecx
443BC9 cmp r9d, ecx
0F838A000000 jae G_M49819_IG10
0F838A000000 jae G_M49819_IG10
4D63D1 movsxd r10, r9d
4D63D1 movsxd r10, r9d
460FB61410 movzx r10, byte ptr [rax+r10]
460FB61410 movzx r10, byte ptr [rax+r10]
418D72D0 lea esi, [r10-48]
418D72D0 lea esi, [r10-48]
83FE09 cmp esi, 9
83FE09 cmp esi, 9
7779 ja SHORT G_M49819_IG10
7779 ja SHORT G_M49819_IG10
41FFC1 inc r9d
41FFC1 inc r9d
478D1C9B lea r11d, [r11+4*r11]
478D1C9B lea r11d, [r11+4*r11]
478D5C5AD0 lea r11d, [r10+2*r11-48]
478D5C5AD0 lea r11d, [r10+2*r11-48]
443BC9 cmp r9d, ecx
443BC9 cmp r9d, ecx
7368 jae SHORT G_M49819_IG10
7368 jae SHORT G_M49819_IG10
4D63D1 movsxd r10, r9d
4D63D1 movsxd r10, r9d
460FB61410 movzx r10, byte ptr [rax+r10]
460FB61410 movzx r10, byte ptr [rax+r10]
418D72D0 lea esi, [r10-48]
418D72D0 lea esi, [r10-48]
83FE09 cmp esi, 9
83FE09 cmp esi, 9
7757 ja SHORT G_M49819_IG10
7757 ja SHORT G_M49819_IG10
41FFC1 inc r9d
41FFC1 inc r9d
478D1C9B lea r11d, [r11+4*r11]
478D1C9B lea r11d, [r11+4*r11]
478D5C5AD0 lea r11d, [r10+2*r11-48]
478D5C5AD0 lea r11d, [r10+2*r11-48]
443BC9 cmp r9d, ecx
443BC9 cmp r9d, ecx
7346 jae SHORT G_M49819_IG10
7346 jae SHORT G_M49819_IG10
4D63D1 movsxd r10, r9d
4D63D1 movsxd r10, r9d
460FB61410 movzx r10, byte ptr [rax+r10]
460FB61410 movzx r10, byte ptr [rax+r10]
418D72D0 lea esi, [r10-48]
418D72D0 lea esi, [r10-48]
83FE09 cmp esi, 9
83FE09 cmp esi, 9
7735 ja SHORT G_M49819_IG10
7735 ja SHORT G_M49819_IG10
41FFC1 inc r9d
41FFC1 inc r9d
478D1C9B lea r11d, [r11+4*r11]
478D1C9B lea r11d, [r11+4*r11]
478D5C5AD0 lea r11d, [r10+2*r11-48]
478D5C5AD0 lea r11d, [r10+2*r11-48]
4181FBFFFF0000 cmp r11d, 0xFFFF
4181FBFFFF0000 cmp r11d, 0xFFFF
7714 ja SHORT G_M49819_IG08
7714 ja SHORT G_M49819_IG08
443BC9 cmp r9d, ecx
443BC9 cmp r9d, ecx
731B jae SHORT G_M49819_IG10
731B jae SHORT G_M49819_IG10
4963C9 movsxd rcx, r9d
4963C9 movsxd rcx, r9d
0FB60408 movzx rax, byte ptr [rax+rcx]
0FB60408 movzx rax, byte ptr [rax+rcx]
83C0D0 add eax, -48
83C0D0 add eax, -48
83F809 cmp eax, 9
83F809 cmp eax, 9
770C ja SHORT G_M49819_IG10
770C ja SHORT G_M49819_IG10
;; bbWeight=0.50 PerfScore 17.50
;; bbWeight=0.50 PerfScore 17.50
G_M49819_IG08: ;; offset=010BH
G_M49819_IG08: ;; offset=010FH
33C0 xor eax, eax
33C0 xor eax, eax
418900 mov dword ptr [r8], eax
418900 mov dword ptr [r8], eax
66C7020000 mov word ptr [rdx], 0
66C7020000 mov word ptr [rdx], 0
;; bbWeight=0.50 PerfScore 1.12
;; bbWeight=0.50 PerfScore 1.12
G_M49819_IG09: ;; offset=0115H
G_M49819_IG09: ;; offset=0119H
5E pop rsi
5E pop rsi
C3 ret
C3 ret
;; bbWeight=0.50 PerfScore 0.75
;; bbWeight=0.50 PerfScore 0.75
G_M49819_IG10: ;; offset=0117H
G_M49819_IG10: ;; offset=011BH
458908 mov dword ptr [r8], r9d
458908 mov dword ptr [r8], r9d
6644891A mov word ptr [rdx], r11w
6644891A mov word ptr [rdx], r11w
B801000000 mov eax, 1
B801000000 mov eax, 1
;; bbWeight=0.50 PerfScore 1.12
;; bbWeight=0.50 PerfScore 1.12
G_M49819_IG11: ;; offset=0123H
G_M49819_IG11: ;; offset=0127H
5E pop rsi
5E pop rsi
C3 ret
C3 ret
;; bbWeight=0.50 PerfScore 0.75
;; bbWeight=0.50 PerfScore 0.75


; Total bytes of code 293, prolog size 1, PerfScore 80.43, instruction count 84, allocated bytes for code 293 (MethodHash=1aab3d64) for method System.Buffers.Text.Utf8Parser:TryParseUInt16D(System.ReadOnlySpan`1[Byte],byref,byref):bool
; Total bytes of code 297, prolog size 1, PerfScore 80.95, instruction count 85, allocated bytes for code 297 (MethodHash=1aab3d64) for method System.Buffers.Text.Utf8Parser:TryParseUInt16D(System.ReadOnlySpan`1[Byte],byref,byref):bool
; ============================================================
; ============================================================