summaryrefslogtreecommitdiff
path: root/utils/TableGen
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-04-28 01:46:50 +0000
committerChris Lattner <sabre@nondot.org>2006-04-28 01:46:50 +0000
commitaddc55af6c7f8b71eedd68d48f6a93ceecff2840 (patch)
treeae3eb4453c7bf91a58959f6f0ea1256f0f8ae42d /utils/TableGen
parentf18764f25ff8075b49143b6e2d8f1b7052d5a494 (diff)
downloadllvm-addc55af6c7f8b71eedd68d48f6a93ceecff2840.tar.gz
llvm-addc55af6c7f8b71eedd68d48f6a93ceecff2840.tar.bz2
llvm-addc55af6c7f8b71eedd68d48f6a93ceecff2840.tar.xz
When we have a two-address instruction where the input cannot be clobbered
and is already available, instead of falling back to emitting a load, fall back to emitting a reg-reg copy. This generates significantly better code for some SSE testcases, as SSE has lots of two-address instructions and none of them are read/modify/write. As one example, this change does: pshufd %XMM5, XMMWORD PTR [%ESP + 84], 255 xorps %XMM2, %XMM5 cmpltps %XMM1, %XMM0 - movaps XMMWORD PTR [%ESP + 52], %XMM0 - movapd %XMM6, XMMWORD PTR [%ESP + 52] + movaps %XMM6, %XMM0 cmpltps %XMM6, XMMWORD PTR [%ESP + 68] movapd XMMWORD PTR [%ESP + 52], %XMM6 movaps %XMM6, %XMM0 cmpltps %XMM6, XMMWORD PTR [%ESP + 36] cmpltps %XMM3, %XMM0 - movaps XMMWORD PTR [%ESP + 20], %XMM0 - movapd %XMM7, XMMWORD PTR [%ESP + 20] + movaps %XMM7, %XMM0 cmpltps %XMM7, XMMWORD PTR [%ESP + 4] movapd XMMWORD PTR [%ESP + 20], %XMM7 cmpltps %XMM4, %XMM0 ... which is far better than a store followed by a load! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28001 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen')
0 files changed, 0 insertions, 0 deletions