This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 00/10] rs6000: Carry bit improvements
- From: Segher Boessenkool <segher at kernel dot crashing dot org>
- To: gcc-patches at gcc dot gnu dot org
- Cc: dje dot gcc at gmail dot com, Segher Boessenkool <segher at kernel dot crashing dot org>
- Date: Mon, 8 Dec 2014 06:18:01 -0800
- Subject: [PATCH 00/10] rs6000: Carry bit improvements
- Authentication-results: sourceware.org; auth=none
This series makes the PowerPC port deal with the {add,subf}{c,ic,e,ze,me}
instructions directly, not as bigger primitives (which used to be emitted as
multiple machine instructions).
It does this by expanding multi-precision add/sub/neg as well as the unsigned
wordlength sCOND to separate machine insns, which are then simplified where
possible by the combine pass and friends. For eq/ne this series splits after
combine.
This is PR target/64180.
All patches bootstrapped and tested on powerpc64-linux, runtestflags
-m32,-m64,-m32/-mpowerpc64,-m64/-mlra; also a lot of tiny tests that
I'll submit separately.
Comments? Is this okay for mainline?
Segher
Segher Boessenkool (10):
rs6000: Clobber XER[CA] in all user asm statements
rs6000: Remove addic alternative from various lo_sum patterns
rs6000: Do not use addic in the ctr* splitters
rs6000: Remove addic from the normal add pattern
rs6000: Merge and split add and addic
rs6000: New add/subf carry insns
rs6000: The big carry insns addition
rs6000: compare->two for rld*;rld*.
rs6000: Remove the (now unused) insn type "compare"
rs6000: Get rid of the weird decimal thing in add
gcc/config/rs6000/40x.md | 2 +-
gcc/config/rs6000/440.md | 2 +-
gcc/config/rs6000/476.md | 2 +-
gcc/config/rs6000/601.md | 2 +-
gcc/config/rs6000/603.md | 2 +-
gcc/config/rs6000/6xx.md | 2 +-
gcc/config/rs6000/7450.md | 2 +-
gcc/config/rs6000/7xx.md | 2 +-
gcc/config/rs6000/8540.md | 2 +-
gcc/config/rs6000/cell.md | 10 +-
gcc/config/rs6000/darwin.md | 16 +-
gcc/config/rs6000/e300c2c3.md | 2 +-
gcc/config/rs6000/e500mc.md | 2 +-
gcc/config/rs6000/e500mc64.md | 2 +-
gcc/config/rs6000/e5500.md | 2 +-
gcc/config/rs6000/e6500.md | 2 +-
gcc/config/rs6000/mpc.md | 2 +-
gcc/config/rs6000/power4.md | 5 +-
gcc/config/rs6000/power5.md | 5 +-
gcc/config/rs6000/power6.md | 5 +-
gcc/config/rs6000/power7.md | 5 +-
gcc/config/rs6000/power8.md | 8 +-
gcc/config/rs6000/predicates.md | 14 +
gcc/config/rs6000/rs6000-protos.h | 1 +
gcc/config/rs6000/rs6000.c | 49 +-
gcc/config/rs6000/rs6000.md | 1909 ++++++++++++-------------------------
gcc/config/rs6000/rs64.md | 2 +-
gcc/config/rs6000/spe.md | 18 +-
28 files changed, 733 insertions(+), 1344 deletions(-)
--
1.8.1.4