[llvm-commits] [llvm] r91672 - in /llvm/trunk: lib/Target/X86/X86.td lib/Target/X86/X86InstrInfo.cpp lib/Target/X86/X86InstrInfo.td lib/Target/X86/X86InstrSSE.td lib/Target/X86/X86Subtarget.cpp lib/Target/X86/X86Subtarget.h test/CodeGen/X86/break-sse-dep.ll

Chris Lattner clattner at apple.com
Sun Dec 20 23:54:26 PST 2009


On Dec 17, 2009, at 11:40 PM, Evan Cheng wrote:

> Author: evancheng
> Date: Fri Dec 18 01:40:29 2009
> New Revision: 91672
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=91672&view=rev
> Log:
> On recent Intel u-arch's, folding loads into some unary SSE instructions can
> be non-optimal. To be precise, we should avoid folding loads if the instructions
> only update part of the destination register, and the non-updated part is not
> needed. e.g. cvtss2sd, sqrtss. Unfolding the load from these instructions breaks
> the partial register dependency and it can improve performance. e.g.

Very nice Evan,

> +def FeatureBreakSSEDep : SubtargetFeature<"break-sse-dep", "BreakSSEDep","true",
> +                       "Should break SSE partial update dep with load / xorps">;

Do we really need a feature for this?  Is this actually good for any SSE chip?

-Chris



More information about the llvm-commits mailing list