OSDN Git Service

[SystemZ] Rein back the use of block operations
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>
Fri, 27 Sep 2013 15:29:20 +0000 (15:29 +0000)
committerRichard Sandiford <rsandifo@linux.vnet.ibm.com>
Fri, 27 Sep 2013 15:29:20 +0000 (15:29 +0000)
commit0548a5487ab8648c7c017f87c507ea1bc38bbb1f
tree81d2743d67d90b027ac4b28f872bc6f55764fad3
parent8dac19c0708c9bd0da0b832014918e00ded44d86
[SystemZ] Rein back the use of block operations

The backend tries to use block operations like MVC, NC, OC and XC for
simple scalar operations.  For correctness reasons, it rejects any case
in which the regions might partially overlap.  However, for performance
reasons, it should also reject cases where the regions might be equal,
since the instruction might then not use the fast path.

This fixes a performance regression seen in bzip2.  We may want to limit
the optimisation even more in future, or even remove it entirely, but I'll
try with this for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191525 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
lib/Target/SystemZ/SystemZInstrInfo.cpp
test/CodeGen/SystemZ/and-08.ll
test/CodeGen/SystemZ/fp-move-02.ll
test/CodeGen/SystemZ/memcpy-02.ll