[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