This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 00/10] rs6000: Carry bit improvements


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]