Untitled Diff

Created Diff never expires
109 removals
143 lines
96 additions
134 lines
; Assembly listing for method Benchstone.BenchF.Simpsn:Test():bool:this
; Assembly listing for method Benchstone.BenchF.Simpsn:Test():bool:this
; Emitting BLENDED_CODE for X64 CPU with AVX - Unix
; Emitting BLENDED_CODE for X64 CPU with AVX - Unix
; optimized code
; optimized code
; rbp based frame
; rbp based frame
; fully interruptible
; fully interruptible
; No matching PGO data
; No matching PGO data
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; 0 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,T12] ( 0, 0 ) double -> zero-ref
;* V01 loc0 [V01,T12] ( 0, 0 ) double -> zero-ref
;* V02 loc1 [V02,T13] ( 0, 0 ) double -> zero-ref
;* V02 loc1 [V02,T13] ( 0, 0 ) double -> zero-ref
; V03 loc2 [V03,T08] ( 3, 48 ) double -> [rbp-18H] spill-single-def
; V03 loc2 [V03,T10] ( 3, 48 ) double -> [rbp-18H] spill-single-def
; V04 loc3 [V04,T05] ( 6, 84 ) double -> [rbp-20H]
; V04 loc3 [V04,T07] ( 6, 84 ) double -> [rbp-20H]
;* V05 loc4 [V05 ] ( 0, 0 ) double -> zero-ref
;* V05 loc4 [V05 ] ( 0, 0 ) double -> zero-ref
;* V06 loc5 [V06,T14] ( 0, 0 ) double -> zero-ref
;* V06 loc5 [V06,T14] ( 0, 0 ) double -> zero-ref
;* V07 loc6 [V07,T15] ( 0, 0 ) double -> zero-ref
;* V07 loc6 [V07,T15] ( 0, 0 ) double -> zero-ref
; V08 loc7 [V08,T07] ( 4, 52 ) double -> [rbp-28H]
; V08 loc7 [V08,T09] ( 4, 52 ) double -> [rbp-28H]
; V09 loc8 [V09,T09] ( 2, 32 ) double -> mm0
; V09 loc8 [V09,T11] ( 2, 32 ) double -> mm1
;* V10 loc9 [V10,T04] ( 0, 0 ) int -> zero-ref single-def
;* V10 loc9 [V10,T04] ( 0, 0 ) int -> zero-ref single-def
;* V11 loc10 [V11,T02] ( 0, 0 ) int -> zero-ref
;* V11 loc10 [V11,T02] ( 0, 0 ) int -> zero-ref
;* V12 loc11 [V12,T03] ( 0, 0 ) int -> zero-ref
;* V12 loc11 [V12,T03] ( 0, 0 ) int -> zero-ref
; V13 loc12 [V13,T01] ( 4, 13 ) int -> rbx
; V13 loc12 [V13,T01] ( 4, 13 ) int -> rbx
; V14 loc13 [V14,T00] ( 5, 68 ) int -> r14
; V14 loc13 [V14,T00] ( 5, 68 ) int -> r14
;# V15 OutArgs [V15 ] ( 1, 1 ) lclBlk ( 0) [rsp+00H] "OutgoingArgSpace"
;# V15 OutArgs [V15 ] ( 1, 1 ) lclBlk ( 0) [rsp+00H] "OutgoingArgSpace"
; V16 tmp1 [V16,T06] ( 2, 64 ) double -> mm1 "impAppendStmt"
; V16 tmp1 [V16,T08] ( 2, 64 ) double -> mm0 "impAppendStmt"
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill"
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill"
;* V18 tmp3 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper"
;* V18 tmp3 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper"
;* V19 tmp4 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper"
;* V19 tmp4 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper"
;* V20 tmp5 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper"
;* V20 tmp5 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper"
;* V21 tmp6 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper"
;* V21 tmp6 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper"
; V22 cse0 [V22,T10] ( 3, 36 ) double -> [rbp-30H] spill-single-def "CSE - aggressive"
;* V22 cse0 [V22,T16] ( 0, 0 ) double -> zero-ref "CSE - aggressive"
; V23 cse1 [V23,T11] ( 2, 17 ) double -> [rbp-38H] "CSE - aggressive"
;* V23 cse1 [V23,T17] ( 0, 0 ) double -> zero-ref "CSE - aggressive"
;* V24 cse2 [V24,T16] ( 0, 0 ) double -> zero-ref "CSE - aggressive"
;* V24 cse2 [V24,T18] ( 0, 0 ) double -> zero-ref "CSE - moderate"
; V25 rat0 [V25,T05] ( 3, 96 ) double -> mm3 "fgInsertCommaFormTemp is creating a new local variable"
; V26 rat1 [V26,T06] ( 3, 96 ) double -> mm1 "fgInsertCommaFormTemp is creating a new local variable"
;
;
; Lcl frame size = 48
; Lcl frame size = 32


G_M11360_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11360_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push rbp
push rbp
push r14
push r14
push rbx
push rbx
sub rsp, 48
sub rsp, 32
vzeroupper
vzeroupper
lea rbp, [rsp+40H]
lea rbp, [rsp+30H]
;; bbWeight=1 PerfScore 4.75
;; bbWeight=1 PerfScore 4.75
G_M11360_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M11360_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ebx, 1
mov ebx, 1
vmovsd xmm0, qword ptr [reloc @RWD00]
;; bbWeight=1 PerfScore 0.25
vmovsd qword ptr [rbp-38H], xmm0
;; bbWeight=1 PerfScore 2.75
G_M11360_IG03: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M11360_IG03: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
vxorps xmm1, xmm1
vxorps xmm0, xmm0
vmovsd qword ptr [rbp-20H], xmm1
vmovsd qword ptr [rbp-20H], xmm0
vmovsd xmm2, qword ptr [reloc @RWD08]
vmovsd xmm1, qword ptr [reloc @RWD00]
vmovsd qword ptr [rbp-30H], xmm2
vmovsd qword ptr [rbp-28H], xmm1
vmovsd xmm3, qword ptr [reloc @RWD16]
vmovsd qword ptr [rbp-28H], xmm3
mov r14d, 1
mov r14d, 1
;; bbWeight=4 PerfScore 24.33
;; bbWeight=4 PerfScore 14.33
G_M11360_IG04: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M11360_IG04: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
vxorps xmm4, xmm4
vxorps xmm2, xmm2
vcvtsi2sd xmm4, r14d
vcvtsi2sd xmm2, r14d
vmulsd xmm4, xmm4, qword ptr [reloc @RWD24]
vmulsd xmm2, xmm2, qword ptr [reloc @RWD08]
vxorps xmm5, xmm5
vxorps xmm3, xmm3
vaddsd xmm4, xmm4, xmm5
vaddsd xmm2, xmm2, xmm3
vmovsd qword ptr [rbp-18H], xmm4
vmovsd qword ptr [rbp-18H], xmm2
vxorps xmm5, xmm4, qword ptr [reloc @RWD32]
vxorps xmm3, xmm2, qword ptr [reloc @RWD16]
vmulsd xmm0, xmm5, xmm2
vaddsd xmm0, xmm3, xmm3
call hackishModuleName:hackishMethodName()
call hackishModuleName:hackishMethodName()
; gcr arg pop 0
; gcr arg pop 0
vaddsd xmm1, xmm0, qword ptr [rbp-20H]
vaddsd xmm0, xmm0, qword ptr [rbp-20H]
vmovsd qword ptr [rbp-20H], xmm1
vmovsd qword ptr [rbp-20H], xmm0
vmovsd xmm4, qword ptr [rbp-18H]
vmovsd xmm2, qword ptr [rbp-18H]
vaddsd xmm0, xmm4, qword ptr [reloc @RWD48]
vaddsd xmm1, xmm2, qword ptr [reloc @RWD32]
vxorps xmm0, xmm0, qword ptr [reloc @RWD32]
vxorps xmm1, xmm1, qword ptr [reloc @RWD16]
vmulsd xmm0, xmm0, qword ptr [rbp-30H]
vaddsd xmm0, xmm1, xmm1
call hackishModuleName:hackishMethodName()
call hackishModuleName:hackishMethodName()
; gcr arg pop 0
; gcr arg pop 0
vaddsd xmm3, xmm0, qword ptr [rbp-28H]
vaddsd xmm1, xmm0, qword ptr [rbp-28H]
vmovsd xmm0, qword ptr [rbp-38H]
vmovsd xmm0, qword ptr [rbp-20H]
vmulsd xmm1, xmm3, xmm0
vaddsd xmm0, xmm0, xmm0
vaddsd xmm1, xmm1, qword ptr [reloc @RWD56]
vmulsd xmm2, xmm1, qword ptr [reloc @RWD40]
vmovsd xmm2, qword ptr [rbp-20H]
vaddsd xmm2, xmm2, qword ptr [reloc @RWD48]
vaddsd xmm2, xmm2, xmm2
vaddsd xmm0, xmm0, xmm2
vaddsd xmm1, xmm1, xmm2
vaddsd xmm0, xmm0, qword ptr [reloc @RWD56]
vaddsd xmm1, xmm1, qword ptr [reloc @RWD64]
vmulsd xmm0, xmm0, qword ptr [reloc @RWD64]
vmulsd xmm2, xmm1, qword ptr [reloc @RWD72]
inc r14d
inc r14d
cmp r14d, 99
cmp r14d, 99
vmovsd qword ptr [rbp-20H], xmm2
vmovsd qword ptr [rbp-20H], xmm0
vmovsd qword ptr [rbp-28H], xmm3
vmovsd qword ptr [rbp-28H], xmm1
vmovsd qword ptr [rbp-38H], xmm0
jle G_M11360_IG04
jle SHORT G_M11360_IG08
;; bbWeight=16 PerfScore 1186.67
;; bbWeight=16 PerfScore 1226.67
G_M11360_IG05: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M11360_IG05: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
inc ebx
inc ebx
cmp ebx, 0x15F90
cmp ebx, 0x15F90
jle G_M11360_IG03
jle G_M11360_IG03
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M11360_IG06: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M11360_IG06: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 1
mov eax, 1
;; bbWeight=1 PerfScore 0.25
;; bbWeight=1 PerfScore 0.25
G_M11360_IG07: ; , epilog, nogc, extend
G_M11360_IG07: ; , epilog, nogc, extend
add rsp, 48
add rsp, 32
pop rbx
pop rbx
pop r14
pop r14
pop rbp
pop rbp
ret
ret
;; bbWeight=1 PerfScore 2.75
;; bbWeight=1 PerfScore 2.75
G_M11360_IG08: ; gcVars= {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
RWD00 dq 3FEFAE7CFD2B9CFEh ; 0.990049834
vmovsd xmm2, qword ptr [rbp-30H]
RWD08 dq 3F847AE147AE147Bh ; 0.01
jmp G_M11360_IG04
RWD16 dq 8000000000000000h ; -0
;; bbWeight=8 PerfScore 32.00
RWD00 dq 4010000000000000h ; 4
RWD08 dq 4000000000000000h ; 2
RWD16 dq 3FEFAE7CFD2B9CFEh ; 0.990049834
RWD24 dq 3F847AE147AE147Bh ; 0.01
RWD32 dq 8000000000000000h ; -0
dq 8000000000000000h ; -0
dq 8000000000000000h ; -0
RWD48 dq 3F747AE147AE147Bh ; 0.005
RWD32 dq 3F747AE147AE147Bh ; 0.005
RWD56 dq 3FF0000000000000h ; 1
RWD40 dq 4010000000000000h ; 4
RWD64 dq 3FC152AAA3BF81CCh ; 0.135335283
RWD48 dq 3FF0000000000000h ; 1
RWD72 dq 3F5B4E81B4E81B4Fh ; 0.00166666667
RWD56 dq 3FC152AAA3BF81CCh ; 0.135335283
RWD64 dq 3F5B4E81B4E81B4Fh ; 0.00166666667




; Total bytes of code 276, prolog size 16, PerfScore 1330.50, instruction count 58, allocated bytes for code 310 (MethodHash=46bbd39f) for method Benchstone.BenchF.Simpsn:Test():bool:this
; Total bytes of code 237, prolog size 16, PerfScore 1241.40, instruction count 50, allocated bytes for code 264 (MethodHash=46bbd39f) for method Benchstone.BenchF.Simpsn:Test():bool:this
; ============================================================
; ============================================================


Unwind Info:
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Version : 1
Flags : 0x00
Flags : 0x00
SizeOfProlog : 0x08
SizeOfProlog : 0x08
CountOfUnwindCodes: 4
CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)