[SystemZ] Implement conditional returns
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Thu, 7 Apr 2016 16:11:44 +0000 (16:11 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Thu, 7 Apr 2016 16:11:44 +0000 (16:11 +0000)
commit2eb027d21f882e03f0658cddbdfee31efbf08663
treedf88bad9a10f8b4870b77b2a2089a4a807962979
parent14e351a553ea84d864174793a0a58b7ecda36c5d
[SystemZ] Implement conditional returns

Return is now considered a predicable instruction, and is converted
to a newly-added CondReturn (which maps to BCR to %r14) instruction by
the if conversion pass.

Also, fused compare-and-branch transform knows about conditional
returns, emitting the proper fused instructions for them.

This transform triggers on a *lot* of tests, hence the huge diffstat.
The changes are mostly jX to br %r14 -> bXr %r14.

Author: koriakin

Differential Revision: http://reviews.llvm.org/D17339

llvm-svn: 265689
79 files changed:
llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp
llvm/lib/Target/SystemZ/SystemZElimCompare.cpp
llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp
llvm/lib/Target/SystemZ/SystemZInstrInfo.h
llvm/lib/Target/SystemZ/SystemZInstrInfo.td
llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
llvm/test/CodeGen/SystemZ/atomicrmw-minmax-03.ll
llvm/test/CodeGen/SystemZ/atomicrmw-minmax-04.ll
llvm/test/CodeGen/SystemZ/branch-05.ll
llvm/test/CodeGen/SystemZ/cond-store-01.ll
llvm/test/CodeGen/SystemZ/cond-store-02.ll
llvm/test/CodeGen/SystemZ/cond-store-03.ll
llvm/test/CodeGen/SystemZ/cond-store-04.ll
llvm/test/CodeGen/SystemZ/cond-store-05.ll
llvm/test/CodeGen/SystemZ/cond-store-06.ll
llvm/test/CodeGen/SystemZ/fp-cmp-01.ll
llvm/test/CodeGen/SystemZ/fp-cmp-02.ll
llvm/test/CodeGen/SystemZ/fp-cmp-03.ll
llvm/test/CodeGen/SystemZ/fp-cmp-04.ll
llvm/test/CodeGen/SystemZ/fp-cmp-05.ll
llvm/test/CodeGen/SystemZ/fp-move-09.ll
llvm/test/CodeGen/SystemZ/fp-move-10.ll
llvm/test/CodeGen/SystemZ/fp-sqrt-01.ll
llvm/test/CodeGen/SystemZ/fp-sqrt-02.ll
llvm/test/CodeGen/SystemZ/htm-intrinsics.ll
llvm/test/CodeGen/SystemZ/int-cmp-01.ll
llvm/test/CodeGen/SystemZ/int-cmp-02.ll
llvm/test/CodeGen/SystemZ/int-cmp-03.ll
llvm/test/CodeGen/SystemZ/int-cmp-04.ll
llvm/test/CodeGen/SystemZ/int-cmp-05.ll
llvm/test/CodeGen/SystemZ/int-cmp-06.ll
llvm/test/CodeGen/SystemZ/int-cmp-07.ll
llvm/test/CodeGen/SystemZ/int-cmp-08.ll
llvm/test/CodeGen/SystemZ/int-cmp-09.ll
llvm/test/CodeGen/SystemZ/int-cmp-10.ll
llvm/test/CodeGen/SystemZ/int-cmp-11.ll
llvm/test/CodeGen/SystemZ/int-cmp-12.ll
llvm/test/CodeGen/SystemZ/int-cmp-13.ll
llvm/test/CodeGen/SystemZ/int-cmp-14.ll
llvm/test/CodeGen/SystemZ/int-cmp-15.ll
llvm/test/CodeGen/SystemZ/int-cmp-16.ll
llvm/test/CodeGen/SystemZ/int-cmp-17.ll
llvm/test/CodeGen/SystemZ/int-cmp-18.ll
llvm/test/CodeGen/SystemZ/int-cmp-19.ll
llvm/test/CodeGen/SystemZ/int-cmp-20.ll
llvm/test/CodeGen/SystemZ/int-cmp-21.ll
llvm/test/CodeGen/SystemZ/int-cmp-22.ll
llvm/test/CodeGen/SystemZ/int-cmp-23.ll
llvm/test/CodeGen/SystemZ/int-cmp-24.ll
llvm/test/CodeGen/SystemZ/int-cmp-25.ll
llvm/test/CodeGen/SystemZ/int-cmp-26.ll
llvm/test/CodeGen/SystemZ/int-cmp-27.ll
llvm/test/CodeGen/SystemZ/int-cmp-28.ll
llvm/test/CodeGen/SystemZ/int-cmp-29.ll
llvm/test/CodeGen/SystemZ/int-cmp-30.ll
llvm/test/CodeGen/SystemZ/int-cmp-31.ll
llvm/test/CodeGen/SystemZ/int-cmp-32.ll
llvm/test/CodeGen/SystemZ/int-cmp-33.ll
llvm/test/CodeGen/SystemZ/int-cmp-34.ll
llvm/test/CodeGen/SystemZ/int-cmp-35.ll
llvm/test/CodeGen/SystemZ/int-cmp-36.ll
llvm/test/CodeGen/SystemZ/int-cmp-37.ll
llvm/test/CodeGen/SystemZ/int-cmp-38.ll
llvm/test/CodeGen/SystemZ/int-cmp-39.ll
llvm/test/CodeGen/SystemZ/int-cmp-40.ll
llvm/test/CodeGen/SystemZ/int-cmp-41.ll
llvm/test/CodeGen/SystemZ/int-cmp-42.ll
llvm/test/CodeGen/SystemZ/int-cmp-43.ll
llvm/test/CodeGen/SystemZ/int-cmp-44.ll
llvm/test/CodeGen/SystemZ/int-cmp-46.ll
llvm/test/CodeGen/SystemZ/int-cmp-47.ll
llvm/test/CodeGen/SystemZ/int-cmp-48.ll
llvm/test/CodeGen/SystemZ/memchr-01.ll
llvm/test/CodeGen/SystemZ/memchr-02.ll
llvm/test/CodeGen/SystemZ/memcmp-01.ll
llvm/test/CodeGen/SystemZ/memcmp-02.ll
llvm/test/CodeGen/SystemZ/strcmp-01.ll
llvm/test/CodeGen/SystemZ/strcmp-02.ll
llvm/test/CodeGen/SystemZ/vec-intrinsics.ll