TryParseUInt16D
192 linhas
; 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
; ============================================================
; ============================================================