Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JitDiff X64] [xtqqczze] Do not ignore MemoryMarshal.TryWrite result in Guid #707

Open
MihuBot opened this issue Oct 8, 2024 · 2 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Oct 8, 2024

Job completed in 18 minutes 23 seconds.
dotnet/runtime#108661

Diffs

Found 265 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39440756
Total bytes of diff: 39440765
Total bytes of delta: 9 (0.00 % of base)
Total relative delta: 0.41
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
           9 : System.Private.CoreLib.dasm (0.00 % of base)

1 total files with Code Size differences (0 improved, 1 regressed), 258 unchanged.

Top method regressions (bytes):
           9 (40.91 % of base) : System.Private.CoreLib.dasm - System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts)

Top method regressions (percentages):
           9 (40.91 % of base) : System.Private.CoreLib.dasm - System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts)

1 total methods with Code Size differences (0 improved, 1 regressed), 232539 unchanged.

--------------------------------------------------------------------------------

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 8, 2024

Top method regressions

9 (40.91 % of base) - System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this
 ; Assembly listing for method System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  3,  2.50)   byref  ->  rdi         this single-def
 ;* V01 arg1         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;  V06 tmp4         [V06,T02] (  2,  1.50)   byref  ->  rsi         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-;  V07 tmp5         [V07,T01] (  2,  2   )     int  ->  rdx         single-def "field V01._length (fldOffset=0x8)" P-INDEP
-;* V08 tmp6         [V08    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V04._length (fldOffset=0x8)" P-INDEP
-;* V10 tmp8         [V10    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V11 tmp9         [V11    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x8)" P-INDEP
+;  V05 tmp3         [V05,T02] (  2,  1.50)   byref  ->  rsi         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+;  V06 tmp4         [V06,T01] (  2,  2   )     int  ->  rdx         single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V07 tmp5         [V07    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V08 tmp6         [V08    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x8)" P-INDEP
+;* V09 tmp7         [V09    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+;* V10 tmp8         [V10    ] (  0,  0   )     int  ->  zero-ref    "field V04._length (fldOffset=0x8)" P-INDEP
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M45208_IG01:
-						;; size=0 bbWeight=1 PerfScore 0.00
+       push     rax
+						;; size=1 bbWeight=1 PerfScore 1.00
 G_M45208_IG02:
        cmp      edx, 16
        jl       SHORT G_M45208_IG05
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M45208_IG03:
        vmovups  xmm0, xmmword ptr [rdi]
        vmovups  xmmword ptr [rsi], xmm0
        mov      eax, 1
 						;; size=13 bbWeight=0.50 PerfScore 3.12
 G_M45208_IG04:
+       add      rsp, 8
        ret      
-						;; size=1 bbWeight=0.50 PerfScore 0.50
+						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M45208_IG05:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M45208_IG06:
+       add      rsp, 8
        ret      
-						;; size=1 bbWeight=0.50 PerfScore 0.50
+						;; size=5 bbWeight=0.50 PerfScore 0.62
 
-; Total bytes of code 22, prolog size 0, PerfScore 5.50, instruction count 8, allocated bytes for code 22 (MethodHash=9a754f67) for method System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts)
+; Total bytes of code 31, prolog size 1, PerfScore 6.75, instruction count 11, allocated bytes for code 31 (MethodHash=9a754f67) for method System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts)
 ; ============================================================

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 8, 2024

@xtqqczze

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant