Untitled Diff

Erstellt Diff läuft nie ab
108 Entfernungen
589 Zeilen
76 Hinzufügungen
559 Zeilen
; Assembly listing for method EqualityComparer_GitHub_10050:Main():int
; Assembly listing for method EqualityComparer_GitHub_10050:Main():int
; 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
; partially interruptible
; partially interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 loc0 [V00,T04] ( 2, 2 ) int -> rdi
; V00 loc0 [V00,T04] ( 2, 2 ) int -> rdi
; V01 loc1 [V01,T05] ( 2, 2 ) int -> rbx
; V01 loc1 [V01,T05] ( 2, 2 ) int -> rbx
; V02 loc2 [V02,T06] ( 2, 2 ) int -> rbp
; V02 loc2 [V02,T06] ( 2, 2 ) int -> rbp
; V03 loc3 [V03,T07] ( 2, 2 ) int -> r14
; V03 loc3 [V03,T07] ( 2, 2 ) int -> r14
; V04 loc4 [V04,T08] ( 2, 2 ) int -> r15
; V04 loc4 [V04,T08] ( 2, 2 ) int -> r15
; V05 loc5 [V05,T09] ( 2, 2 ) int -> rax
; V05 loc5 [V05,T09] ( 2, 2 ) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V07 tmp1 [V07,T01] ( 2, 4 ) int -> rsi "impAppendStmt"
; V07 tmp1 [V07,T01] ( 2, 4 ) int -> rsi "impAppendStmt"
; V08 tmp2 [V08,T00] ( 3, 6 ) int -> rsi "dup spill"
; V08 tmp2 [V08,T00] ( 3, 6 ) int -> rsi "dup spill"
; V09 tmp3 [V09 ] ( 1, 2 ) struct (16) [rsp+0x28] do-not-enreg[XS] addr-exposed "struct address for call/obj"
; V09 tmp3 [V09 ] ( 1, 2 ) struct (16) [rsp+0x28] do-not-enreg[XS] addr-exposed "struct address for call/obj"
; V10 tmp4 [V10 ] ( 1, 2 ) ushort -> [rsp+0x28] do-not-enreg[X] addr-exposed V09._keyChar(offs=0x00) P-DEP "field V09._keyChar (fldOffset=0x0)"
; V10 tmp4 [V10 ] ( 1, 2 ) ushort -> [rsp+0x28] do-not-enreg[X] addr-exposed V09._keyChar(offs=0x00) P-DEP "field V09._keyChar (fldOffset=0x0)"
; V11 tmp5 [V11 ] ( 1, 2 ) int -> [rsp+0x2C] do-not-enreg[X] addr-exposed V09._key(offs=0x04) P-DEP "field V09._key (fldOffset=0x4)"
; V11 tmp5 [V11 ] ( 1, 2 ) int -> [rsp+0x2C] do-not-enreg[X] addr-exposed V09._key(offs=0x04) P-DEP "field V09._key (fldOffset=0x4)"
; V12 tmp6 [V12 ] ( 1, 2 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V09._mods(offs=0x08) P-DEP "field V09._mods (fldOffset=0x8)"
; V12 tmp6 [V12 ] ( 1, 2 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed V09._mods(offs=0x08) P-DEP "field V09._mods (fldOffset=0x8)"
; V13 cse0 [V13,T02] ( 3, 3 ) ref -> rdx "CSE - aggressive"
; V13 cse0 [V13,T02] ( 3, 3 ) ref -> rdx "CSE - aggressive"
; V14 cse1 [V14,T03] ( 3, 3 ) ref -> rdx "CSE - aggressive"
; V14 cse1 [V14,T03] ( 3, 3 ) ref -> rdx "CSE - aggressive"
;
;
; Lcl frame size = 56
; Lcl frame size = 56


G_M28847_IG01:
G_M28847_IG01:
push r15
push r15
push r14
push r14
push rdi
push rdi
push rsi
push rsi
push rbp
push rbp
push rbx
push rbx
sub rsp, 56
sub rsp, 56
;; bbWeight=1 PerfScore 6.25
;; bbWeight=1 PerfScore 6.25
G_M28847_IG02:
G_M28847_IG02:
call EqualityComparer_GitHub_10050:Hoist():int
call EqualityComparer_GitHub_10050:Hoist():int
mov esi, eax
mov esi, eax
mov ecx, 33
mov ecx, 33
mov edx, 33
mov edx, 33
call EqualityComparer_GitHub_10050:Sink(int,int):int
call EqualityComparer_GitHub_10050:Sink(int,int):int
mov edi, eax
mov edi, eax
call EqualityComparer_GitHub_10050:Common():int
call EqualityComparer_GitHub_10050:Common():int
mov ebx, eax
mov ebx, eax
mov r8, 0xD1FFAB1E
mov r8, 0xD1FFAB1E
mov rdx, gword ptr [r8]
mov rdx, gword ptr [r8]
mov r8, rdx
mov r8, rdx
mov rcx, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E
call EqualityComparer_GitHub_10050:GeneralHoist(System.__Canon,System.__Canon):int
call EqualityComparer_GitHub_10050:GeneralHoist(System.__Canon,System.__Canon):int
mov ebp, eax
mov ebp, eax
mov ecx, 44
mov ecx, 44
mov edx, 44
mov edx, 44
call EqualityComparer_GitHub_10050:GeneralHoist(int,int):int
call EqualityComparer_GitHub_10050:GeneralHoist(int,int):int
mov r14d, eax
mov r14d, eax
mov r8, 0xD1FFAB1E
mov r8, 0xD1FFAB1E
mov rdx, gword ptr [r8]
mov rdx, gword ptr [r8]
mov r8, rdx
mov r8, rdx
mov rcx, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E
call EqualityComparer_GitHub_10050:GeneralSink(System.__Canon,System.__Canon):int
call EqualityComparer_GitHub_10050:GeneralSink(System.__Canon,System.__Canon):int
mov r15d, eax
mov r15d, eax
mov ecx, 55
mov ecx, 55
mov edx, 55
mov edx, 55
call EqualityComparer_GitHub_10050:GeneralSink(int,int):int
call EqualityComparer_GitHub_10050:GeneralSink(int,int):int
add esi, edi
add esi, edi
add esi, ebx
add esi, ebx
add esi, ebp
add esi, ebp
add esi, r14d
add esi, r14d
add esi, r15d
add esi, r15d
lea esi, [rsi+rax-600]
lea esi, [rsi+rax-600]
mov ecx, esi
mov ecx, esi
call System.Console:WriteLine(int)
call System.Console:WriteLine(int)
lea rcx, bword ptr [rsp+28H]
lea rcx, bword ptr [rsp+28H]
xor edx, edx
xor edx, edx
call System.ConsolePal:ReadKey(bool):System.ConsoleKeyInfo
call System.ConsolePal:ReadKey(bool):System.ConsoleKeyInfo
mov eax, esi
mov eax, esi
;; bbWeight=1 PerfScore 21.00
;; bbWeight=1 PerfScore 21.00
G_M28847_IG03:
G_M28847_IG03:
add rsp, 56
add rsp, 56
pop rbx
pop rbx
pop rbp
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
pop r14
pop r14
pop r15
pop r15
ret
ret
;; bbWeight=1 PerfScore 4.25
;; bbWeight=1 PerfScore 4.25


; Total bytes of code 196, prolog size 12, PerfScore 51.10, instruction count 54, allocated bytes for code 196 (MethodHash=cb2b8f50) for method EqualityComparer_GitHub_10050:Main():int
; Total bytes of code 196, prolog size 12, PerfScore 51.10, instruction count 54, allocated bytes for code 196 (MethodHash=cb2b8f50) for method EqualityComparer_GitHub_10050:Main():int
; ============================================================
; ============================================================


; Assembly listing for method EqualityComparer_GitHub_10050:Hoist():int
; Assembly listing for method EqualityComparer_GitHub_10050:Hoist():int
; 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
; partially interruptible
; partially interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 loc0 [V00,T01] ( 4, 6 ) int -> rsi
; V00 loc0 [V00,T01] ( 4, 6 ) int -> rsi
; V01 loc1 [V01,T02] ( 2, 5 ) ref -> rbx class-hnd exact
; V01 loc1 [V01,T02] ( 2, 5 ) ref -> rbx class-hnd exact
; V02 loc2 [V02,T03] ( 2, 5 ) ref -> rdi class-hnd exact
; V02 loc2 [V02,T03] ( 2, 5 ) ref -> rdi class-hnd exact
; V03 loc3 [V03,T00] ( 4, 13 ) int -> rbp
; V03 loc3 [V03,T00] ( 4, 13 ) int -> rbp
; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V05 cse0 [V05,T04] ( 3, 3 ) ref -> rdi "CSE - aggressive"
; V05 cse0 [V05,T04] ( 3, 3 ) ref -> rdi "CSE - aggressive"
;
;
; Lcl frame size = 40
; Lcl frame size = 40


G_M30509_IG01:
G_M30509_IG01:
push rdi
push rdi
push rsi
push rsi
push rbp
push rbp
push rbx
push rbx
sub rsp, 40
sub rsp, 40
;; bbWeight=1 PerfScore 4.25
;; bbWeight=1 PerfScore 4.25
G_M30509_IG02:
G_M30509_IG02:
xor esi, esi
xor esi, esi
mov rcx, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E
mov rdi, gword ptr [rcx]
mov rdi, gword ptr [rcx]
mov rbx, rdi
mov rbx, rdi
xor ebp, ebp
xor ebp, ebp
;; bbWeight=1 PerfScore 3.00
;; bbWeight=1 PerfScore 3.00
G_M30509_IG03:
G_M30509_IG03:
mov rcx, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E
mov rcx, gword ptr [rcx]
mov rcx, gword ptr [rcx]
mov rdx, rdi
mov rdx, rdi
mov r8, rbx
mov r8, rbx
call [System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this]
call [System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this]
test eax, eax
test eax, eax
je SHORT G_M30509_IG05
je SHORT G_M30509_IG05
;; bbWeight=4 PerfScore 28.00
;; bbWeight=4 PerfScore 28.00
G_M30509_IG04:
G_M30509_IG04:
inc esi
inc esi
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M30509_IG05:
G_M30509_IG05:
inc ebp
inc ebp
cmp ebp, 100
cmp ebp, 100
jl SHORT G_M30509_IG03
jl SHORT G_M30509_IG03
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M30509_IG06:
G_M30509_IG06:
mov eax, esi
mov eax, esi
;; bbWeight=1 PerfScore 0.25
;; bbWeight=1 PerfScore 0.25
G_M30509_IG07:
G_M30509_IG07:
add rsp, 40
add rsp, 40
pop rbx
pop rbx
pop rbp
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
;; bbWeight=1 PerfScore 3.25
;; bbWeight=1 PerfScore 3.25


; Total bytes of code 77, prolog size 8, PerfScore 52.95, instruction count 28, allocated bytes for code 77 (MethodHash=04b688d2) for method EqualityComparer_GitHub_10050:Hoist():int
; Total bytes of code 77, prolog size 8, PerfScore 52.95, instruction count 28, allocated bytes for code 77 (MethodHash=04b688d2) for method EqualityComparer_GitHub_10050:Hoist():int
; ============================================================
; ============================================================


; Assembly listing for method EqualityComparer_GitHub_10050:Sink(int,int):int
; Assembly listing for method EqualityComparer_GitHub_10050:Sink(int,int):int
; 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
; partially interruptible
; fully interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T01] ( 3, 6 ) int -> rsi
; V00 arg0 [V00,T01] ( 3, 6 ) int -> rcx
; V01 arg1 [V01,T02] ( 3, 6 ) int -> rdi
; V01 arg1 [V01,T02] ( 3, 6 ) int -> rdx
; V02 loc0 [V02,T03] ( 4, 6 ) int -> rbx
; V02 loc0 [V02,T05] ( 4, 6 ) int -> rax
; V03 loc1 [V03,T04] ( 2, 5 ) ref -> rbp class-hnd exact
; V03 loc1 [V03,T06] ( 2, 5 ) ref -> r8 class-hnd exact
; V04 loc2 [V04,T00] ( 4, 13 ) int -> r14
; V04 loc2 [V04,T00] ( 4, 13 ) int -> r9
; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
;# V05 OutArgs [V05 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace"
; V06 tmp1 [V06,T03] ( 2, 8 ) bool -> r10 "Inline return value spill temp"
;* V07 tmp2 [V07,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;
;
; Lcl frame size = 32
; Lcl frame size = 0


G_M49271_IG01:
G_M49271_IG01:
push r14
;; bbWeight=1 PerfScore 0.00
push rdi
push rsi
push rbp
push rbx
sub rsp, 32
mov esi, ecx
mov edi, edx
;; bbWeight=1 PerfScore 5.75
G_M49271_IG02:
G_M49271_IG02:
xor ebx, ebx
xor eax, eax
mov rcx, 0xD1FFAB1E
mov r8, 0xD1FFAB1E
mov rbp, gword ptr [rcx]
mov r8, gword ptr [r8]
xor r14d, r14d
xor r9d, r9d
;; bbWeight=1 PerfScore 2.75
align [14 bytes]
;; bbWeight=1 PerfScore 3.00
G_M49271_IG03:
G_M49271_IG03:
mov rcx, rbp
cmp dword ptr [r8], r8d
mov edx, esi
cmp ecx, edx
mov r8d, edi
sete r10b
cmp dword ptr [rcx], ecx
movzx r10, r10b
call [System.Collections.Generic.GenericEqualityComparer`1[Int32][System.Int32]:Equals(int,int):bool:this]
test r10d, r10d
test eax, eax
je SHORT G_M49271_IG05
je SHORT G_M49271_IG05
;; bbWeight=4 PerfScore 28.00
;; bbWeight=4 PerfScore 19.00
G_M49271_IG04:
G_M49271_IG04:
inc ebx
inc eax
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M49271_IG05:
G_M49271_IG05:
inc r14d
inc r9d
cmp r14d, 100
cmp r9d, 100
jl SHORT G_M49271_IG03
jl SHORT G_M49271_IG03
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M49271_IG06:
G_M49271_IG06:
mov eax, ebx
;; bbWeight=1 PerfScore 0.25
G_M49271_IG07:
add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
ret
ret
;; bbWeight=1 PerfScore 3.75
;; bbWeight=1 PerfScore 1.00


; Total bytes of code 76, prolog size 10, PerfScore 54.60, instruction count 31, allocated bytes for code 76 (MethodHash=23513f88) for method EqualityComparer_GitHub_10050:Sink(int,int):int
; Total bytes of code 62, prolog size 0, PerfScore 35.70, instruction count 16, allocated bytes for code 62 (MethodHash=23513f88) for method EqualityComparer_GitHub_10050:Sink(int,int):int
; ============================================================
; ============================================================


; Assembly listing for method EqualityComparer_GitHub_10050:Common():int
; Assembly listing for method EqualityComparer_GitHub_10050:Common():int
; 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
; partially interruptible
; partially interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 loc0 [V00,T02] ( 6, 10 ) int -> rsi
; V00 loc0 [V00,T02] ( 6, 10 ) int -> rsi
; V01 loc1 [V01,T03] ( 3, 9 ) ref -> rbx class-hnd exact
; V01 loc1 [V01,T03] ( 3, 9 ) ref -> rbx class-hnd exact
; V02 loc2 [V02,T04] ( 3, 9 ) ref -> rdi class-hnd exact
; V02 loc2 [V02,T04] ( 3, 9 ) ref -> rdi class-hnd exact
; V03 loc3 [V03,T00] ( 4, 13 ) int -> rbp
; V03 loc3 [V03,T00] ( 4, 13 ) int -> rbp
; V04 loc4 [V04,T01] ( 4, 13 ) int -> rbp
; V04 loc4 [V04,T01] ( 4, 13 ) int -> rbp
; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V06 cse0 [V06,T05] ( 3, 3 ) ref -> rdi "CSE - aggressive"
; V06 cse0 [V06,T05] ( 3, 3 ) ref -> rdi "CSE - aggressive"
;
;
; Lcl frame size = 40
; Lcl frame size = 40


G_M33033_IG01:
G_M33033_IG01:
push rdi
push rdi
push rsi
push rsi
push rbp
push rbp
push rbx
push rbx
sub rsp, 40
sub rsp, 40
;; bbWeight=1 PerfScore 4.25
;; bbWeight=1 PerfScore 4.25
G_M33033_IG02:
G_M33033_IG02:
xor esi, esi
xor esi, esi
mov rcx, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E
mov rdi, gword ptr [rcx]
mov rdi, gword ptr [rcx]
mov rbx, rdi
mov rbx, rdi
xor ebp, ebp
xor ebp, ebp
;; bbWeight=1 PerfScore 3.00
;; bbWeight=1 PerfScore 3.00
G_M33033_IG03:
G_M33033_IG03:
mov rcx, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E
mov rcx, gword ptr [rcx]
mov rcx, gword ptr [rcx]
mov rdx, rdi
mov rdx, rdi
mov r8, rbx
mov r8, rbx
call [System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this]
call [System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this]
test eax, eax
test eax, eax
je SHORT G_M33033_IG05
je SHORT G_M33033_IG05
;; bbWeight=4 PerfScore 28.00
;; bbWeight=4 PerfScore 28.00
G_M33033_IG04:
G_M33033_IG04:
inc esi
inc esi
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M33033_IG05:
G_M33033_IG05:
inc ebp
inc ebp
cmp ebp, 50
cmp ebp, 50
jl SHORT G_M33033_IG03
jl SHORT G_M33033_IG03
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M33033_IG06:
G_M33033_IG06:
xor ebp, ebp
xor ebp, ebp
;; bbWeight=1 PerfScore 0.25
;; bbWeight=1 PerfScore 0.25
G_M33033_IG07:
G_M33033_IG07:
mov rcx, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E
mov rcx, gword ptr [rcx]
mov rcx, gword ptr [rcx]
mov rdx, rdi
mov rdx, rdi
mov r8, rbx
mov r8, rbx
call [System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this]
call [System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this]
test eax, eax
test eax, eax
je SHORT G_M33033_IG09
je SHORT G_M33033_IG09
;; bbWeight=4 PerfScore 28.00
;; bbWeight=4 PerfScore 28.00
G_M33033_IG08:
G_M33033_IG08:
inc esi
inc esi
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M33033_IG09:
G_M33033_IG09:
inc ebp
inc ebp
cmp ebp, 50
cmp ebp, 50
jl SHORT G_M33033_IG07
jl SHORT G_M33033_IG07
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M33033_IG10:
G_M33033_IG10:
mov eax, esi
mov eax, esi
;; bbWeight=1 PerfScore 0.25
;; bbWeight=1 PerfScore 0.25
G_M33033_IG11:
G_M33033_IG11:
add rsp, 40
add rsp, 40
pop rbx
pop rbx
pop rbp
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
;; bbWeight=1 PerfScore 3.25
;; bbWeight=1 PerfScore 3.25


; Total bytes of code 117, prolog size 8, PerfScore 91.70, instruction count 40, allocated bytes for code 117 (MethodHash=9d6a7ef6) for method EqualityComparer_GitHub_10050:Common():int
; Total bytes of code 117, prolog size 8, PerfScore 91.70, instruction count 40, allocated bytes for code 117 (MethodHash=9d6a7ef6) for method EqualityComparer_GitHub_10050:Common():int
; ============================================================
; ============================================================


; Assembly listing for method EqualityComparer_GitHub_10050:GeneralHoist(System.__Canon,System.__Canon):int
; Assembly listing for method EqualityComparer_GitHub_10050:GeneralHoist(System.__Canon,System.__Canon):int
; 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
; partially interruptible
; partially interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 TypeCtx [V00,T06] ( 5, 5 ) long -> rbx
; V00 TypeCtx [V00,T06] ( 5, 5 ) long -> rbx
; V01 arg0 [V01,T04] ( 3, 6 ) ref -> rsi class-hnd
; V01 arg0 [V01,T04] ( 3, 6 ) ref -> rsi class-hnd
; V02 arg1 [V02,T05] ( 3, 6 ) ref -> rdi class-hnd
; V02 arg1 [V02,T05] ( 3, 6 ) ref -> rdi class-hnd
; V03 loc0 [V03,T07] ( 4, 6 ) int -> rbp
; V03 loc0 [V03,T07] ( 4, 6 ) int -> rbp
; V04 loc1 [V04,T01] ( 4, 13 ) int -> r14
; V04 loc1 [V04,T01] ( 4, 13 ) int -> r14
; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V06 tmp1 [V06,T02] ( 3, 12 ) long -> rcx "spilling Runtime Lookup tree"
; V06 tmp1 [V06,T02] ( 3, 12 ) long -> rcx "spilling Runtime Lookup tree"
; V07 tmp2 [V07,T00] ( 3, 24 ) ref -> rax "argument with side effect"
; V07 tmp2 [V07,T00] ( 3, 24 ) ref -> rax "argument with side effect"
; V08 cse0 [V08,T03] ( 3, 9 ) long -> rcx "CSE - aggressive"
; V08 cse0 [V08,T03] ( 3, 9 ) long -> rcx "CSE - aggressive"
; V09 cse1 [V09,T08] ( 2, 5 ) long -> r15 "CSE - aggressive"
; V09 cse1 [V09,T08] ( 2, 5 ) long -> r15 "CSE - aggressive"
;
;
; Lcl frame size = 40
; Lcl frame size = 40


G_M32023_IG01:
G_M32023_IG01:
push r15
push r15
push r14
push r14
push rdi
push rdi
push rsi
push rsi
push rbp
push rbp
push rbx
push rbx
sub rsp, 40
sub rsp, 40
mov qword ptr [rsp+20H], rcx
mov qword ptr [rsp+20H], rcx
mov rbx, rcx
mov rbx, rcx
mov rsi, rdx
mov rsi, rdx
mov rdi, r8
mov rdi, r8
;; bbWeight=1 PerfScore 8.00
;; bbWeight=1 PerfScore 8.00
G_M32023_IG02:
G_M32023_IG02:
xor ebp, ebp
xor ebp, ebp
xor r14d, r14d
xor r14d, r14d
mov r15, qword ptr [rbx+56]
mov r15, qword ptr [rbx+56]
;; bbWeight=1 PerfScore 2.50
;; bbWeight=1 PerfScore 2.50
G_M32023_IG03:
G_M32023_IG03:
mov rcx, qword ptr [r15+16]
mov rcx, qword ptr [r15+16]
test rcx, rcx
test rcx, rcx
je SHORT G_M32023_IG05
je SHORT G_M32023_IG05
;; bbWeight=4 PerfScore 13.00
;; bbWeight=4 PerfScore 13.00
G_M32023_IG04:
G_M32023_IG04:
jmp SHORT G_M32023_IG06
jmp SHORT G_M32023_IG06
;; bbWeight=1 PerfScore 2.00
;; bbWeight=1 PerfScore 2.00
G_M32023_IG05:
G_M32023_IG05:
mov rcx, rbx
mov rcx, rbx
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rcx, rax
mov rcx, rax
;; bbWeight=1 PerfScore 1.75
;; bbWeight=1 PerfScore 1.75
G_M32023_IG06:
G_M32023_IG06:
call System.Collections.Generic.EqualityComparer`1[__Canon][System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[__Canon]
call System.Collections.Generic.EqualityComparer`1[__Canon][System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[__Canon]
mov rcx, rax
mov rcx, rax
mov rdx, rsi
mov rdx, rsi
mov r8, rdi
mov r8, rdi
mov rax, qword ptr [rax]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+72]
mov rax, qword ptr [rax+72]
call qword ptr [rax+32]System.Collections.Generic.EqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
call qword ptr [rax+32]System.Collections.Generic.EqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
test eax, eax
test eax, eax
je SHORT G_M32023_IG08
je SHORT G_M32023_IG08
;; bbWeight=4 PerfScore 40.00
;; bbWeight=4 PerfScore 40.00
G_M32023_IG07:
G_M32023_IG07:
inc ebp
inc ebp
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M32023_IG08:
G_M32023_IG08:
inc r14d
inc r14d
cmp r14d, 100
cmp r14d, 100
jl SHORT G_M32023_IG03
jl SHORT G_M32023_IG03
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M32023_IG09:
G_M32023_IG09:
mov eax, ebp
mov eax, ebp
;; bbWeight=1 PerfScore 0.25
;; bbWeight=1 PerfScore 0.25
G_M32023_IG10:
G_M32023_IG10:
add rsp, 40
add rsp, 40
pop rbx
pop rbx
pop rbp
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
pop r14
pop r14
pop r15
pop r15
ret
ret
;; bbWeight=1 PerfScore 4.25
;; bbWeight=1 PerfScore 4.25


; Total bytes of code 121, prolog size 17, PerfScore 90.35, instruction count 44, allocated bytes for code 121 (MethodHash=f36f82e8) for method EqualityComparer_GitHub_10050:GeneralHoist(System.__Canon,System.__Canon):int
; Total bytes of code 121, prolog size 17, PerfScore 90.35, instruction count 44, allocated bytes for code 121 (MethodHash=f36f82e8) for method EqualityComparer_GitHub_10050:GeneralHoist(System.__Canon,System.__Canon):int
; ============================================================
; ============================================================


; Assembly listing for method EqualityComparer_GitHub_10050:GeneralHoist(int,int):int
; Assembly listing for method EqualityComparer_GitHub_10050:GeneralHoist(int,int):int
; 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,T01] ( 3, 6 ) int -> rcx
; V00 arg0 [V00,T01] ( 3, 6 ) int -> rcx
; V01 arg1 [V01,T02] ( 3, 6 ) int -> rdx
; V01 arg1 [V01,T02] ( 3, 6 ) int -> rdx
; V02 loc0 [V02,T05] ( 4, 6 ) int -> rax
; V02 loc0 [V02,T05] ( 4, 6 ) int -> rax
; V03 loc1 [V03,T00] ( 4, 13 ) int -> r8
; V03 loc1 [V03,T00] ( 4, 13 ) int -> r8
;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace"
;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 2, 8 ) bool -> r9 "Inline return value spill temp"
; V05 tmp1 [V05,T03] ( 2, 8 ) bool -> r9 "Inline return value spill temp"
;* V06 tmp2 [V06,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V06 tmp2 [V06,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;
;
; Lcl frame size = 0
; Lcl frame size = 0


G_M7511_IG01:
G_M7511_IG01:
;; bbWeight=1 PerfScore 0.00
;; bbWeight=1 PerfScore 0.00
G_M7511_IG02:
G_M7511_IG02:
xor eax, eax
xor eax, eax
xor r8d, r8d
xor r8d, r8d
align [0 bytes]
align [0 bytes]
;; bbWeight=1 PerfScore 0.75
;; bbWeight=1 PerfScore 0.75
G_M7511_IG03:
G_M7511_IG03:
cmp ecx, edx
cmp ecx, edx
sete r9b
sete r9b
movzx r9, r9b
movzx r9, r9b
test r9d, r9d
test r9d, r9d
je SHORT G_M7511_IG05
je SHORT G_M7511_IG05
;; bbWeight=4 PerfScore 11.00
;; bbWeight=4 PerfScore 11.00
G_M7511_IG04:
G_M7511_IG04:
inc eax
inc eax
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M7511_IG05:
G_M7511_IG05:
inc r8d
inc r8d
cmp r8d, 100
cmp r8d, 100
jl SHORT G_M7511_IG03
jl SHORT G_M7511_IG03
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M7511_IG06:
G_M7511_IG06:
ret
ret
;; bbWeight=1 PerfScore 1.00
;; bbWeight=1 PerfScore 1.00


; Total bytes of code 32, prolog size 0, PerfScore 22.45, instruction count 13, allocated bytes for code 32 (MethodHash=84b7e2a8) for method EqualityComparer_GitHub_10050:GeneralHoist(int,int):int
; Total bytes of code 32, prolog size 0, PerfScore 22.45, instruction count 13, allocated bytes for code 32 (MethodHash=84b7e2a8) for method EqualityComparer_GitHub_10050:GeneralHoist(int,int):int
; ============================================================
; ============================================================


; Assembly listing for method EqualityComparer_GitHub_10050:GeneralSink(System.__Canon,System.__Canon):int
; Assembly listing for method EqualityComparer_GitHub_10050:GeneralSink(System.__Canon,System.__Canon):int
; 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
; partially interruptible
; partially interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 TypeCtx [V00,T03] ( 5, 4.25) long -> rcx
; V00 TypeCtx [V00,T03] ( 5, 4.25) long -> rcx
; V01 arg0 [V01,T01] ( 3, 6 ) ref -> rsi class-hnd
; V01 arg0 [V01,T01] ( 3, 6 ) ref -> rsi class-hnd
; V02 arg1 [V02,T02] ( 3, 6 ) ref -> rdi class-hnd
; V02 arg1 [V02,T02] ( 3, 6 ) ref -> rdi class-hnd
; V03 loc0 [V03,T04] ( 4, 6 ) int -> rbx
; V03 loc0 [V03,T04] ( 4, 6 ) int -> rbx
; V04 loc1 [V04,T05] ( 3, 6 ) ref -> rbp class-hnd
; V04 loc1 [V04,T05] ( 3, 6 ) ref -> rbp class-hnd
; V05 loc2 [V05,T00] ( 4, 13 ) int -> r14
; V05 loc2 [V05,T00] ( 4, 13 ) int -> r14
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V07 tmp1 [V07,T07] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree"
; V07 tmp1 [V07,T07] ( 3, 3 ) long -> rdx "spilling Runtime Lookup tree"
; V08 cse0 [V08,T08] ( 3, 2.25) long -> rdx "CSE - aggressive"
; V08 cse0 [V08,T08] ( 3, 2.25) long -> rdx "CSE - aggressive"
; V09 cse1 [V09,T06] ( 2, 5 ) long -> r15 "CSE - aggressive"
; V09 cse1 [V09,T06] ( 2, 5 ) long -> r15 "CSE - aggressive"
; V10 cse2 [V10,T09] ( 2, 2 ) long -> rcx "CSE - aggressive"
; V10 cse2 [V10,T09] ( 2, 2 ) long -> rcx "CSE - aggressive"
;
;
; Lcl frame size = 40
; Lcl frame size = 40


G_M51937_IG01:
G_M51937_IG01:
push r15
push r15
push r14
push r14
push rdi
push rdi
push rsi
push rsi
push rbp
push rbp
push rbx
push rbx
sub rsp, 40
sub rsp, 40
mov qword ptr [rsp+20H], rcx
mov qword ptr [rsp+20H], rcx
mov rsi, rdx
mov rsi, rdx
mov rdi, r8
mov rdi, r8
;; bbWeight=1 PerfScore 7.75
;; bbWeight=1 PerfScore 7.75
G_M51937_IG02:
G_M51937_IG02:
xor ebx, ebx
xor ebx, ebx
mov rdx, qword ptr [rcx+56]
mov rdx, qword ptr [rcx+56]
mov rdx, qword ptr [rdx+16]
mov rdx, qword ptr [rdx+16]
test rdx, rdx
test rdx, rdx
je SHORT G_M51937_IG04
je SHORT G_M51937_IG04
;; bbWeight=1 PerfScore 5.50
;; bbWeight=1 PerfScore 5.50
G_M51937_IG03:
G_M51937_IG03:
jmp SHORT G_M51937_IG05
jmp SHORT G_M51937_IG05
;; bbWeight=0.25 PerfScore 0.50
;; bbWeight=0.25 PerfScore 0.50
G_M51937_IG04:
G_M51937_IG04:
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rdx, rax
mov rdx, rax
;; bbWeight=0.25 PerfScore 0.38
;; bbWeight=0.25 PerfScore 0.38
G_M51937_IG05:
G_M51937_IG05:
mov rcx, rdx
mov rcx, rdx
call System.Collections.Generic.EqualityComparer`1[__Canon][System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[__Canon]
call System.Collections.Generic.EqualityComparer`1[__Canon][System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[__Canon]
mov rbp, rax
mov rbp, rax
xor r14d, r14d
xor r14d, r14d
mov rcx, qword ptr [rbp]
mov rcx, qword ptr [rbp]
mov r15, qword ptr [rcx+72]
mov r15, qword ptr [rcx+72]
;; bbWeight=1 PerfScore 5.75
;; bbWeight=1 PerfScore 5.75
G_M51937_IG06:
G_M51937_IG06:
mov rcx, rbp
mov rcx, rbp
mov rdx, rsi
mov rdx, rsi
mov r8, rdi
mov r8, rdi
call qword ptr [r15+32]System.Collections.Generic.EqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
call qword ptr [r15+32]System.Collections.Generic.EqualityComparer`1[__Canon][System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
test eax, eax
test eax, eax
je SHORT G_M51937_IG08
je SHORT G_M51937_IG08
;; bbWeight=4 PerfScore 20.00
;; bbWeight=4 PerfScore 20.00
G_M51937_IG07:
G_M51937_IG07:
inc ebx
inc ebx
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M51937_IG08:
G_M51937_IG08:
inc r14d
inc r14d
cmp r14d, 100
cmp r14d, 100
jl SHORT G_M51937_IG06
jl SHORT G_M51937_IG06
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M51937_IG09:
G_M51937_IG09:
mov eax, ebx
mov eax, ebx
;; bbWeight=1 PerfScore 0.25
;; bbWeight=1 PerfScore 0.25
G_M51937_IG10:
G_M51937_IG10:
add rsp, 40
add rsp, 40
pop rbx
pop rbx
pop rbp
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
pop r14
pop r14
pop r15
pop r15
ret
ret
;; bbWeight=1 PerfScore 4.25
;; bbWeight=1 PerfScore 4.25


; Total bytes of code 123, prolog size 17, PerfScore 63.18, instruction count 44, allocated bytes for code 123 (MethodHash=baad351e) for method EqualityComparer_GitHub_10050:GeneralSink(System.__Canon,System.__Canon):int
; Total bytes of code 123, prolog size 17, PerfScore 63.18, instruction count 44, allocated bytes for code 123 (MethodHash=baad351e) for method EqualityComparer_GitHub_10050:GeneralSink(System.__Canon,System.__Canon):int
; ============================================================
; ============================================================


; Assembly listing for method EqualityComparer_GitHub_10050:GeneralSink(int,int):int
; Assembly listing for method EqualityComparer_GitHub_10050:GeneralSink(int,int):int
; 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
; partially interruptible
; fully interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T01] ( 3, 6 ) int -> rsi
; V00 arg0 [V00,T01] ( 3, 6 ) int -> rcx
; V01 arg1 [V01,T02] ( 3, 6 ) int -> rdi
; V01 arg1 [V01,T02] ( 3, 6 ) int -> rdx
; V02 loc0 [V02,T03] ( 4, 6 ) int -> rbx
; V02 loc0 [V02,T05] ( 4, 6 ) int -> rax
; V03 loc1 [V03,T04] ( 2, 5 ) ref -> rbp class-hnd exact
; V03 loc1 [V03,T06] ( 2, 5 ) ref -> r8 class-hnd exact
; V04 loc2 [V04,T00] ( 4, 13 ) int -> r14
; V04 loc2 [V04,T00] ( 4, 13 ) int -> r9
; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
;# V05 OutArgs [V05 ] ( 1, 1 ) lclBlk ( 0) [rsp+0x00] "OutgoingArgSpace"
; V06 tmp1 [V06,T03] ( 2, 8 ) bool -> r10 "Inline return value spill temp"
;* V07 tmp2 [V07,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;
;
; Lcl frame size = 32
; Lcl frame size = 0


G_M53025_IG01:
G_M53025_IG01:
push r14
;; bbWeight=1 PerfScore 0.00
push rdi
push rsi
push rbp
push rbx
sub rsp, 32
mov esi, ecx
mov edi, edx
;; bbWeight=1 PerfScore 5.75
G_M53025_IG02:
G_M53025_IG02:
xor ebx, ebx
xor eax, eax
mov rcx, 0xD1FFAB1E
mov r8, 0xD1FFAB1E
mov rbp, gword ptr [rcx]
mov r8, gword ptr [r8]
xor r14d, r14d
xor r9d, r9d
;; bbWeight=1 PerfScore 2.75
align [14 bytes]
;; bbWeight=1 PerfScore 3.00
G_M53025_IG03:
G_M53025_IG03:
mov rcx, rbp
cmp dword ptr [r8], r8d
mov edx, esi
cmp ecx, edx
mov r8d, edi
sete r10b
cmp dword ptr [rcx], ecx
movzx r10, r10b
call [System.Collections.Generic.GenericEqualityComparer`1[Int32][System.Int32]:Equals(int,int):bool:this]
test r10d, r10d
test eax, eax
je SHORT G_M53025_IG05
je SHORT G_M53025_IG05
;; bbWeight=4 PerfScore 28.00
;; bbWeight=4 PerfScore 19.00
G_M53025_IG04:
G_M53025_IG04:
inc ebx
inc eax
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M53025_IG05:
G_M53025_IG05:
inc r14d
inc r9d
cmp r14d, 100
cmp r9d, 100
jl SHORT G_M53025_IG03
jl SHORT G_M53025_IG03
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M53025_IG06:
G_M53025_IG06:
mov eax, ebx
;; bbWeight=1 PerfScore 0.25
G_M53025_IG07:
add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
ret
ret
;; bbWeight=1 PerfScore 3.75
;; bbWeight=1 PerfScore 1.00


; Total bytes of code 76, prolog size 10, PerfScore 54.60, instruction count 31, allocated bytes for code 76 (MethodHash=7ce230de) for method EqualityComparer_GitHub_10050:GeneralSink(int,int):int
; Total bytes of code 62, prolog size 0, PerfScore 35.70, instruction count 16, allocated bytes for code 62 (MethodHash=7ce230de) for method EqualityComparer_GitHub_10050:GeneralSink(int,int):int
; ============================================================
; ============================================================


100
100