Untitled Diff
143 lines
; Assembly listing for method DiagnosticsPass:CheckArguments(ImmutableArray`1,ImmutableArray`1,Symbol):this
; Assembly listing for method DiagnosticsPass:CheckArguments(ImmutableArray`1,ImmutableArray`1,Symbol):this
; 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 this [V00,T07] ( 4, 6 ) ref -> rdi this class-hnd
; V00 this [V00,T04] ( 3, 10 ) ref -> rdi this class-hnd
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op
; V03 arg3 [V03,T08] ( 4, 6 ) ref -> rbx class-hnd
; V03 arg3 [V03,T05] ( 3, 10 ) ref -> rbx class-hnd
; V04 loc0 [V04,T00] ( 12, 40.50) int -> r14
; V04 loc0 [V04,T00] ( 7, 58.50) 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] ( 6, 18 ) ref -> rdx "CASTCLASS eval op1"
; V06 tmp1 [V06,T06] ( 3, 8 ) ref -> rdx "CASTCLASS eval op1"
; V07 tmp2 [V07,T05] ( 6, 10 ) long -> rcx "fgInsertCommaFormTemp is creating a new local variable"
; V07 tmp2 [V07,T07] ( 3, 8 ) long -> rcx "fgInsertCommaFormTemp is creating a new local variable"
; V08 tmp3 [V08,T01] ( 10, 30 ) ref -> r8 class-hnd "spilling QMark2"
; V08 tmp3 [V08,T01] ( 5, 28 ) ref -> rax class-hnd "spilling QMark2"
; V09 tmp4 [V09,T04] ( 4, 16 ) ref -> rax class-hnd "Inlining Arg"
; V09 tmp4 [V09,T08] ( 2, 8 ) ref -> rcx class-hnd "Inlining Arg"
; V10 tmp5 [V10,T03] ( 6, 14.50) ref -> rsi V01.array(offs=0x00) P-INDEP "field V01.array (fldOffset=0x0)"
; V10 tmp5 [V10,T03] ( 4, 10 ) ref -> rsi V01.array(offs=0x00) P-INDEP "field V01.array (fldOffset=0x0)"
; V11 tmp6 [V11,T09] ( 4, 5.50) ref -> rbp V02.array(offs=0x00) P-INDEP "field V02.array (fldOffset=0x0)"
; V11 tmp6 [V11,T10] ( 3, 3.50) ref -> rbp V02.array(offs=0x00) P-INDEP "field V02.array (fldOffset=0x0)"
; V12 cse0 [V12,T10] ( 3, 6 ) ref -> rdx "CSE - aggressive"
; V12 cse0 [V12,T09] ( 3, 6 ) ref -> rdx "CSE - aggressive"
; V13 cse1 [V13,T11] ( 3, 6 ) ref -> rdx "CSE - aggressive"
; V13 cse1 [V13,T02] ( 3, 17 ) int -> r15 "CSE - aggressive"
; V14 cse2 [V14,T06] ( 5, 9.50) int -> r15 "CSE - aggressive"
;
;
; Lcl frame size = 40
; Lcl frame size = 40
G_M20472_IG01:
G_M20472_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 rdi, rcx
mov rdi, rcx
mov rsi, rdx
mov rsi, rdx
mov rbp, r8
mov rbp, r8
mov rbx, r9
mov rbx, r9
;; bbWeight=1 PerfScore 7.25
;; bbWeight=1 PerfScore 7.25
G_M20472_IG02:
G_M20472_IG02:
test rsi, rsi
test rsi, rsi
je G_M20472_IG17
je SHORT G_M20472_IG08
;; bbWeight=1 PerfScore 1.25
;; bbWeight=1 PerfScore 1.25
G_M20472_IG03:
G_M20472_IG03:
xor r14d, r14d
xor r14d, r14d
mov r15d, dword ptr [rbp+8]
mov r15d, dword ptr [rbp+8]
test r15d, r15d
test r15d, r15d
jle G_M20472_IG17
jle SHORT G_M20472_IG08
cmp dword ptr [rsi+8], r15d
;; bbWeight=0.50 PerfScore 1.75
jl SHORT G_M20472_IG11
;; bbWeight=0.50 PerfScore 3.25
G_M20472_IG04:
G_M20472_IG04:
cmp r14d, dword ptr [rsi+8]
jae SHORT G_M20472_IG10
movsxd rcx, r14d
movsxd rcx, r14d
cmp byte ptr [rsi+rcx+16], 0
cmp byte ptr [rsi+rcx+16], 0
je SHORT G_M20472_IG09
je SHORT G_M20472_IG07
;; bbWeight=4 PerfScore 13.00
;; bbWeight=4 PerfScore 25.00
G_M20472_IG05:
G_M20472_IG05:
movsxd rcx, r14d
movsxd rcx, r14d
mov rdx, gword ptr [rbp+8*rcx+16]
mov rdx, gword ptr [rbp+8*rcx+16]
mov rcx, rdx
cmp byte ptr [rcx+16], 108
jne SHORT G_M20472_IG07
mov rax, rdx
mov rax, rdx
cmp byte ptr [rax+16], 108
test rax, rax
je SHORT G_M20472_IG06
mov rcx, 0xD1FFAB1E
cmp qword ptr [rax], rcx
jne SHORT G_M20472_IG09
jne SHORT G_M20472_IG09
mov r8, rdx
;; bbWeight=2 PerfScore 20.50
test r8, r8
je SHORT G_M20472_IG08
;; bbWeight=2 PerfScore 14.00
G_M20472_IG06:
G_M20472_IG06:
mov rcx, 0xD1FFAB1E
cmp qword ptr [r8], rcx
je SHORT G_M20472_IG08
;; bbWeight=1 PerfScore 3.25
G_M20472_IG07:
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r8, rax
;; bbWeight=0.50 PerfScore 0.63
G_M20472_IG08:
mov rcx, rdi
mov rcx, rdi
mov rdx, r8
mov rdx, rax
mov r8, rbx
mov r8, rbx
call DiagnosticsPass:CheckFieldAddress(BoundFieldAccess,Symbol):this
call DiagnosticsPass:CheckFieldAddress(BoundFieldAccess,Symbol):this
;; bbWeight=2 PerfScore 3.50
;; bbWeight=8 PerfScore 14.00
G_M20472_IG09:
G_M20472_IG07:
inc r14d
inc r14d
cmp r15d, r14d
cmp r15d, r14d
jg SHORT G_M20472_IG04
jg SHORT G_M20472_IG04
;; bbWeight=4 PerfScore 6.00
;; bbWeight=16 PerfScore 24.00
G_M20472_IG10:
G_M20472_IG08:
jmp SHORT G_M20472_IG17
;; bbWeight=0.50 PerfScore 1.00
G_M20472_IG11:
cmp r14d, dword ptr [rsi+8]
jae SHORT G_M20472_IG18
movsxd rcx, r14d
cmp byte ptr [rsi+rcx+16], 0
je SHORT G_M20472_IG16
;; bbWeight=4 PerfScore 25.00
G_M20472_IG12:
movsxd rcx, r14d
mov rdx, gword ptr [rbp+8*rcx+16]
mov rax, rdx
cmp byte ptr [rax+16], 108
jne SHORT G_M20472_IG16
mov r8, rdx
test r8, r8
je SHORT G_M20472_IG15
;; bbWeight=2 PerfScore 14.00
G_M20472_IG13:
mov rcx, 0xD1FFAB1E
cmp qword ptr [r8], rcx
je SHORT G_M20472_IG15
;; bbWeight=1 PerfScore 3.25
G_M20472_IG14:
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r8, rax
;; bbWeight=0.50 PerfScore 0.63
G_M20472_IG15:
mov rcx, rdi
mov rdx, r8
mov r8, rbx
call DiagnosticsPass:CheckFieldAddress(BoundFieldAccess,Symbol):this
;; bbWeight=2 PerfScore 3.50
G_M20472_IG16:
inc r14d
cmp r15d, r14d
jg SHORT G_M20472_IG11
;; bbWeight=4 PerfScore 6.00
G_M20472_IG17:
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
G_M20472_IG18:
G_M20472_IG09:
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
jmp SHORT G_M20472_IG06
;; bbWeight=0 PerfScore 0.00
G_M20472_IG10:
call CORINFO_HELP_RNGCHKFAIL
call CORINFO_HELP_RNGCHKFAIL
int3
int3
;; bbWeight=0 PerfScore 0.00
;; bbWeight=0 PerfScore 0.00
; Total bytes of code 242, prolog size 24, PerfScore 133.95, instruction count 78, allocated bytes for code 242 (MethodHash=2056b007) for method DiagnosticsPass:CheckArguments(ImmutableArray`1,ImmutableArray`1,Symbol):this
; Total bytes of code 145, prolog size 24, PerfScore 112.50, instruction count 52, allocated bytes for code 145 (MethodHash=2056b007) for method DiagnosticsPass:CheckArguments(ImmutableArray`1,ImmutableArray`1,Symbol):this
; ============================================================
; ============================================================