Untitled Diff

생성일 비교 결과 만료 없음
89 삭제
160 행
94 추가
163 행
; Assembly listing for method System.Marvin:ComputeHash32(byref,uint,uint,uint):int
; Assembly listing for method System.Marvin:ComputeHash32(byref,uint,uint,uint):int
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; Tier-1 compilation
; Tier-1 compilation
; optimized code
; optimized code
; optimized using profile data
; optimized using profile data
; rsp based frame
; rsp based frame
; fully interruptible
; fully interruptible
; with Static PGO: edge weights are valid, and fgCalledCount is 754635
; with Static PGO: edge weights are valid, and fgCalledCount is 754635
; 0 inlinees with PGO data; 30 single block inlinees; 0 inlinees without PGO data
; 0 inlinees with PGO data; 30 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T05] ( 10, 21.18) byref -> rcx
; V00 arg0 [V00,T04] ( 10, 21.18) byref -> rcx
; V01 arg1 [V01,T09] ( 13, 8.98) int -> rdx
; V01 arg1 [V01,T10] ( 11, 6.99) int -> rdx single-def
; V02 arg2 [V02,T00] ( 19, 43.80) int -> r8 ld-addr-op
; V02 arg2 [V02,T03] ( 10, 26.08) int -> registers ld-addr-op
; V03 arg3 [V03,T07] ( 7, 12.81) int -> r9 ld-addr-op
; V03 arg3 [V03,T07] ( 7, 12.81) int -> registers ld-addr-op
; V04 loc0 [V04,T08] ( 4, 14.26) int -> rax
; V04 loc0 [V04,T08] ( 4, 14.26) int -> rax
; V05 loc1 [V05,T15] ( 16, 8.00) int -> rax
; V05 loc1 [V05,T17] ( 8, 2.00) int -> rax
; V06 loc2 [V06,T14] ( 2, 8.85) int -> r10
; V06 loc2 [V06,T11] ( 2, 8.85) int -> r10
;# V07 OutArgs [V07 ] ( 1, 1 ) lclBlk ( 0) [rsp+00H] "OutgoingArgSpace"
;# V07 OutArgs [V07 ] ( 1, 1 ) lclBlk ( 0) [rsp+00H] "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V09 tmp2 [V09,T06] ( 2, 17.70) int -> rax "dup spill"
; V09 tmp2 [V09,T06] ( 2, 17.70) int -> rax "dup spill"
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V12 tmp5 [V12,T03] ( 9, 39.82) int -> r8 "Inline stloc first use temp"
; V12 tmp5 [V12,T05] ( 5, 22.12) int -> r8 "Inline stloc first use temp"
; V13 tmp6 [V13,T01] ( 10, 44.24) int -> r9 "Inline stloc first use temp"
; V13 tmp6 [V13,T00] ( 8, 35.39) int -> r9 "Inline stloc first use temp"
; V14 tmp7 [V14,T04] ( 9, 39.82) int -> r8 "Inline stloc first use temp"
; V14 tmp7 [V14,T01] ( 8, 35.39) int -> r10 "Inline stloc first use temp"
; V15 tmp8 [V15,T02] ( 10, 44.24) int -> r9 "Inline stloc first use temp"
; V15 tmp8 [V15,T02] ( 8, 35.39) int -> r8 "Inline stloc first use temp"
; V16 tmp9 [V16,T17] ( 9, 4.33) int -> r8 "Inline stloc first use temp"
; V16 tmp9 [V16,T14] ( 8, 3.85) int -> r8 "Inline stloc first use temp"
; V17 tmp10 [V17,T16] ( 10, 4.81) int -> r9 "Inline stloc first use temp"
; V17 tmp10 [V17,T15] ( 8, 3.85) int -> r9 "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V19 tmp12 [V19,T10] ( 10, 10.00) int -> rcx "Inline stloc first use temp"
; V19 tmp12 [V19,T09] ( 9, 9.00) int -> rax "Inline stloc first use temp"
; V20 tmp13 [V20,T11] ( 10, 10.00) int -> rax "Inline stloc first use temp"
; V20 tmp13 [V20,T12] ( 8, 8.00) int -> rcx "Inline stloc first use temp"
; V21 tmp14 [V21,T13] ( 9, 9.00) int -> rdx "Inline stloc first use temp"
; V21 tmp14 [V21,T16] ( 3, 3.00) int -> rax "Inline stloc first use temp"
; V22 tmp15 [V22,T12] ( 10, 10.00) int -> rax "Inline stloc first use temp"
; V22 tmp15 [V22,T13] ( 6, 6.00) int -> rdx "Inline stloc first use temp"
;
;
; Lcl frame size = 0
; Lcl frame size = 0
G_M16234_IG01:
G_M16234_IG01:
;; size=0 bbWeight=1 PerfScore 0.00
;; size=0 bbWeight=1 PerfScore 0.00
G_M16234_IG02:
G_M16234_IG02:
cmp edx, 8
cmp edx, 8
jb G_M16234_IG10
jb G_M16234_IG10
;; size=9 bbWeight=1 PerfScore 1.25
;; size=9 bbWeight=1 PerfScore 1.25
G_M16234_IG03:
G_M16234_IG03:
mov eax, edx
mov eax, edx
shr eax, 3
shr eax, 3
align [0 bytes for IG04]
align [2 bytes for IG04]
;; size=5 bbWeight=0.99 PerfScore 0.74
;; size=7 bbWeight=0.99 PerfScore 0.99
G_M16234_IG04:
G_M16234_IG04:
add r8d, dword ptr [rcx]
add r8d, dword ptr [rcx]
mov r10d, dword ptr [rcx+04H]
mov r10d, dword ptr [rcx+04H]
xor r9d, r8d
xor r9d, r8d
rol r8d, 20
rol r8d, 20
add r8d, r9d
add r8d, r9d
rol r9d, 9
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (add: 1) 32B boundary ...............................
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (rol: 3) 32B boundary ...............................
xor r9d, r8d
rol r8d, 27
add r8d, r9d
rol r9d, 19
add r8d, r10d
xor r9d, r8d
rol r8d, 20
add r8d, r9d
rol r9d, 9
rol r9d, 9
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (rol: 2) 32B boundary ...............................
xor r9d, r8d
xor r9d, r8d
rol r8d, 27
rol r8d, 27
add r8d, r9d
add r8d, r9d
rol r9d, 19
rol r9d, 19
add r10d, r8d
mov r8d, r9d
xor r8d, r10d
rol r10d, 20
; ............................... 32B boundary ...............................
add r10d, r8d
rol r8d, 9
xor r8d, r10d
rol r10d, 27
add r10d, r8d
rol r8d, 19
mov r9d, r10d
add rcx, 8
add rcx, 8
dec eax
dec eax
xchg r8, r9
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (xchg: 1) 32B boundary ...............................
jne SHORT G_M16234_IG04
jne SHORT G_M16234_IG04
;; size=74 bbWeight=4.42 PerfScore 56.41
;; size=83 bbWeight=4.42 PerfScore 63.04
G_M16234_IG05:
G_M16234_IG05:
test dl, 4
test dl, 4
jne SHORT G_M16234_IG09
jne SHORT G_M16234_IG09
;; size=5 bbWeight=0.99 PerfScore 1.23
;; size=5 bbWeight=0.99 PerfScore 1.23
G_M16234_IG06:
G_M16234_IG06:
mov eax, edx
mov eax, edx
and rax, 7
and rax, 7
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (and: 3) 32B boundary ...............................
mov eax, dword ptr [rcx+rax-04H]
mov eax, dword ptr [rcx+rax-04H]
not edx
shl edx, 3
shr eax, 8
shr eax, 8
or eax, 0xD1FFAB1E
or eax, 0xD1FFAB1E
not edx
shl edx, 3
shrx eax, eax, edx
shrx eax, eax, edx
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (shrx: 4) 32B boundary ...............................
;; size=28 bbWeight=1.00 PerfScore 4.49
;; size=28 bbWeight=1.00 PerfScore 4.49
G_M16234_IG07:
G_M16234_IG07:
add r8d, eax
add eax, r8d
mov eax, r9d
mov ecx, r9d
xor eax, r8d
xor ecx, eax
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (xor: 2) 32B boundary ...............................
rol eax, 20
mov ecx, r8d
add eax, ecx
rol ecx, 20
rol ecx, 9
add ecx, eax
xor ecx, eax
rol eax, 9
rol eax, 27
xor eax, ecx
add eax, ecx
rol ecx, 27
rol ecx, 19
add ecx, eax
rol eax, 19
xor eax, ecx
mov edx, ecx
mov edx, ecx
rol edx, 20
add edx, eax
; ............................... 32B boundary ...............................
; ............................... 32B boundary ...............................
rol eax, 9
xor edx, eax
xor eax, edx
rol eax, 20
rol edx, 27
add eax, edx
add edx, eax
rol edx, 9
rol eax, 19
xor edx, eax
xor eax, edx
rol eax, 27
;; size=54 bbWeight=1.00 PerfScore 7.25
add eax, edx
mov r8d, edx
rol r8d, 19
xor eax, r8d
;; size=55 bbWeight=1.00 PerfScore 7.25
G_M16234_IG08:
G_M16234_IG08:
ret
ret
;; size=1 bbWeight=1.00 PerfScore 1.00
;; size=1 bbWeight=1.00 PerfScore 1.00
G_M16234_IG09:
G_M16234_IG09:
add r8d, dword ptr [rcx]
add r8d, dword ptr [rcx]
xor r9d, r8d
xor r9d, r8d
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (xor: 2) 32B boundary ...............................
rol r8d, 20
rol r8d, 20
add r8d, r9d
add r8d, r9d
rol r9d, 9
rol r9d, 9
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (rol: 1) 32B boundary ...............................
xor r9d, r8d
xor r9d, r8d
rol r8d, 27
rol r8d, 27
add r8d, r9d
add r8d, r9d
rol r9d, 19
rol r9d, 19
jmp SHORT G_M16234_IG06
jmp SHORT G_M16234_IG06
;; size=33 bbWeight=0.48 PerfScore 3.85
;; size=33 bbWeight=0.48 PerfScore 3.85
G_M16234_IG10:
G_M16234_IG10:
cmp edx, 4
cmp edx, 4
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (cmp: 0 ; jcc erratum) 32B boundary ...............................
jae SHORT G_M16234_IG09
jae SHORT G_M16234_IG09
;; size=5 bbWeight=0.01 PerfScore 0.02
;; size=5 bbWeight=0.01 PerfScore 0.02
G_M16234_IG11:
G_M16234_IG11:
mov eax, 128
mov eax, 128
test dl, 1
test dl, 1