aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2009-12-18 07:40:29 +0000
committerEvan Cheng <evan.cheng@apple.com>2009-12-18 07:40:29 +0000
commit400073d5467b79534d8c63b0d996a55e4252ff4b (patch)
treef7204e84da8877e7b062f05bcb1878a05108b44e /lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h
parent3a5d409f3c2eccf1d1f0a4616023760829a4db67 (diff)
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. movss (%rdi), %xmm0 cvtss2sd %xmm0, %xmm0 instead of cvtss2sd (%rdi), %xmm0 An alternative method to break dependency is to clear the register first. e.g. xorps %xmm0, %xmm0 cvtss2sd (%rdi), %xmm0 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91672 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h')
0 files changed, 0 insertions, 0 deletions