Untitled Diff

作成日 差分は期限切れになりません
89 削除
79 行
78 追加
60 行
; Assembly listing for method C:M2():System.String:this
; Assembly listing for method C:M2():System.String: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
; partially interruptible
; partially interruptible
; No PGO data
; No PGO data
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def
; V01 loc0 [V01 ] ( 3, 3 ) struct (48) [rsp+50H] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V01 loc0 [V01 ] ( 3, 3 ) struct (48) [rsp+58H] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 4, 8 ) struct (48) [rsp+20H] do-not-enreg[XSF] must-init addr-exposed "NewObj constructor temp"
; V03 tmp1 [V03,T00] ( 3, 6 ) struct (48) [rsp+28H] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
;* V04 tmp2 [V04,T04] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "NewObj constructor temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V06 tmp4 [V06,T00] ( 4, 6 ) ref -> rcx class-hnd single-def "Inlining Arg"
; V06 tmp4 [V06,T01] ( 2, 4 ) ref -> rax class-hnd single-def "impAppendStmt"
;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp"
; V07 tmp5 [V07,T02] ( 2, 2 ) byref -> rcx V05._reference(offs=0x00) P-INDEP "field V05._reference (fldOffset=0x0)"
; V08 tmp6 [V08,T02] ( 2, 4 ) ref -> rax class-hnd single-def "impSpillLclRefs"
; V08 tmp6 [V08,T03] ( 2, 2 ) int -> rax V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)"
; V09 tmp7 [V09,T03] ( 3, 1.50) byref -> rax V05._pointer(offs=0x00) P-INDEP "field V05._pointer (fldOffset=0x0)"
; V10 tmp8 [V10,T04] ( 3, 1.50) int -> rsi V05._length(offs=0x08) P-INDEP "field V05._length (fldOffset=0x8)"
; V11 tmp9 [V11,T05] ( 2, 1 ) byref -> rax single-def V07._value(offs=0x00) P-INDEP "field V07._value (fldOffset=0x0)"
; V12 tmp10 [V12,T01] ( 3, 6 ) byref -> rcx stack-byref single-def "BlockOp address local"
;
;
; Lcl frame size = 128
; Lcl frame size = 136


G_M38085_IG01:
G_M38085_IG01:
push rsi
sub rsp, 136
sub rsp, 128
vzeroupper
vzeroupper
xor eax, eax
mov qword ptr [rsp+28H], rax
vxorps xmm4, xmm4
vxorps xmm4, xmm4
mov rax, -96
vmovdqa xmmword ptr [rsp+30H], xmm4
vmovdqa xmmword ptr [rsp+rax+80H], xmm4
vmovdqa xmmword ptr [rsp+40H], xmm4
vmovdqa xmmword ptr [rsp+rax+90H], xmm4
vmovdqa xmmword ptr [rsp+50H], xmm4
vmovdqa xmmword ptr [rsp+rax+A0H], xmm4
vmovdqa xmmword ptr [rsp+60H], xmm4
add rax, 48
vmovdqa xmmword ptr [rsp+70H], xmm4
jne SHORT -5 instr
mov qword ptr [rsp+80H], rax
;; bbWeight=0 PerfScore 0.00
;; size=59 bbWeight=1 PerfScore 13.83
G_M38085_IG02:
G_M38085_IG02:
mov rcx, gword ptr [rsp+30H]
xor rcx, rcx
test rcx, rcx
xor eax, eax
je SHORT G_M38085_IG08
mov bword ptr [rsp+48H], rcx
;; bbWeight=1 PerfScore 2.25
mov dword ptr [rsp+50H], eax
;; size=13 bbWeight=1 PerfScore 2.50
G_M38085_IG03:
G_M38085_IG03:
lea rax, bword ptr [rcx+16]
vmovdqu ymm0, ymmword ptr[rsp+28H]
mov esi, dword ptr [rcx+8]
vmovdqu ymmword ptr[rsp+58H], ymm0
;; bbWeight=0.50 PerfScore 1.25
vmovdqu xmm0, xmmword ptr [rsp+48H]
vmovdqu xmmword ptr [rsp+78H], xmm0
;; size=24 bbWeight=1 PerfScore 9.00
G_M38085_IG04:
G_M38085_IG04:
lea rcx, bword ptr [rsp+40H]
lea rcx, [rsp+78H]
mov bword ptr [rcx], rax
call [System.Span`1[ushort]:ToString():System.String:this]
mov dword ptr [rcx+8], esi
xor ecx, ecx
mov dword ptr [rsp+38H], ecx
;; bbWeight=1 PerfScore 3.75
G_M38085_IG05:
vmovdqu ymm0, ymmword ptr[rsp+20H]
vmovdqu ymmword ptr[rsp+50H], ymm0
vmovdqu xmm0, xmmword ptr [rsp+40H]
vmovdqu xmmword ptr [rsp+70H], xmm0
;; bbWeight=1 PerfScore 9.00
G_M38085_IG06:
lea rcx, bword ptr [rsp+70H]
call System.Span`1[Char][System.Char]:ToString():System.String:this
vxorps ymm0, ymm0
vxorps ymm0, ymm0
vmovdqu ymmword ptr[rsp+50H], ymm0
vmovdqu ymmword ptr[rsp+58H], ymm0
vmovdqu xmmword ptr [rsp+70H], xmm0
vmovdqu xmmword ptr [rsp+78H], xmm0
;; bbWeight=1 PerfScore 3.83
;; size=27 bbWeight=1 PerfScore 5.83
G_M38085_IG07:
G_M38085_IG05:
add rsp, 128
add rsp, 136
pop rsi
ret
ret
;; bbWeight=1 PerfScore 1.75
;; size=8 bbWeight=1 PerfScore 1.25
G_M38085_IG08:
xor rax, rax
xor esi, esi
jmp SHORT G_M38085_IG04
;; bbWeight=0 PerfScore 0.00


; Total bytes of code 157, prolog size 58, PerfScore 38.63, instruction count 35, allocated bytes for code 168 (MethodHash=fe286b3a) for method C:M2():System.String:this
; Total bytes of code 131, prolog size 59, PerfScore 46.82, instruction count 26, allocated bytes for code 144 (MethodHash=fe286b3a) for method C:M2():System.String:this
; ============================================================
; ============================================================