[PATCH] D28744: [X86][AVX] Remove "OptForSize" condition from some memory foldings.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 30 07:29:25 PST 2017

craig.topper added inline comments.

Comment at: test/CodeGen/X86/avx-arith.ll:353
 ; CHECK:       ## BB#0:
-; CHECK-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
-; CHECK-NEXT:    vsqrtss %xmm0, %xmm0, %xmm0
+; CHECK-NEXT:    vsqrtss (%rax), %xmm0, %xmm0
 ; CHECK-NEXT:    retq
craig.topper wrote:
> aymanmus wrote:
> > craig.topper wrote:
> > > This now has a register read dependency on xmm0 which I believe is what the OptForSize was originally protecting against.  I know work has gone into ExeDepFix for UndefRegClearance. Do we believe that is sufficient to allow this folding now?
> > The OptForSize was incorrectly copied from the SSE version multiclass, where the memory form instructions performed a partial register updates (optimization guide states that partial updates come with a penalty and thus should be avoided).
> > I'm afraid I didn't understand how the memory folding adds read dependency on xmm0 in this case, the read dependency was already there.
> Yes there was a read of xmm0 on the dart but it was from the movss instruction which wrote all bits. After this patch the xmm0 read is dependent on an unknown instruction.
Oops. Autocorrect turned sqrt into dart.


More information about the llvm-commits mailing list