TryParseUInt16D

Created Diff never expires
15 removals
192 lines
17 additions
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
; ============================================================
; ============================================================