[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

Evan Cheng evan.cheng at apple.com
Mon Dec 21 10:45:35 PST 2009


On Dec 20, 2009, at 11:54 PM, Chris Lattner wrote:

> 
> 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?

It's not clear. It's known to be an issue since CoreDuo. It's possible it will change for future u-arch so I'd leave it as a subtarget feature for now.

Evan

> 
> -Chris





More information about the llvm-commits mailing list