JIT: Allow more permissive forward subbing into call arguments#71161
Conversation
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
|
/azp run Fuzzlyn |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
The failures are #71193 and #71200. cc @dotnet/jit-contrib PTAL @AndyAyersMS |
|
Have you looked into some of these large percentage regressions (x64 win)? |
Spot checking the regressions they all look like the following: @@ -7,9 +7,9 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) byref -> rcx this single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> [rsp+08H] this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [rsp+00H] "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) int -> rax "impAppendStmt"
+;* V02 tmp1 [V02 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;
; Lcl frame size = 0
@@ -17,17 +17,21 @@ G_M4318_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc
;; size=0 bbWeight=1 PerfScore 0.00
G_M4318_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000002 {rcx}, byref
; byrRegs +[rcx]
- mov eax, dword ptr [rcx]
- mov edx, dword ptr [rcx+4]
- mov ecx, eax
+ mov bword ptr [rsp+08H], rcx
+ ; GC ptr vars +{V00}
+ mov ecx, dword ptr [rcx]
; byrRegs -[rcx]
- ;; size=7 bbWeight=1 PerfScore 4.25
+ mov rdx, bword ptr [rsp+08H]
+ ; byrRegs +[rdx]
+ mov edx, dword ptr [rdx+4]
+ ; byrRegs -[rdx]
+ ;; size=15 bbWeight=1 PerfScore 6.00
G_M4318_IG03: ; , epilog, nogc, extend
tail.jmp [System.HashCode:Combine(int,int):int]
; gcr arg pop 0
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 13, prolog size 0, PerfScore 7.55, instruction count 4, allocated bytes for code 13 (MethodHash=68b0ef21) for method System.Drawing.CharacterRange:GetHashCode():int:this
+; Total bytes of code 21, prolog size 0, PerfScore 10.10, instruction count 5, allocated bytes for code 21 (MethodHash=68b0ef21) for method System.Drawing.CharacterRange:GetHashCode():int:this
; ============================================================
Unwind Info:
This is one of the cases I think we have talked about before where we could make the sort better by taking into account that placing an argument may clobber a register used by a future argument. I hope to look into that in the future. |
|
Is there anything else you think I should do here @AndyAyersMS? |
No, this looks good. |
After #70893 and #70931 we should be able to allow this.
Diffs