Hi all,

This updated patch series implements the "MEMs with address vectors" feature
that I want to use in AMD GCN.  The motivation is to use it in the SIMT
patch series that I have also posted a while back (and will be updating
shortly).

The second version of the series was here:
https://patchwork.sourceware.org/project/gcc/list/?series=63334

Compared to the second version, the new a new RTL flag,
MEM_INDEPENDENT_P, has been reworked with new semantics (based on the
reviews from Richi and Richard, thanks).  The GCN backend now requires
this flag to be set, and sets it in all the places that can generate
address vectors.  The flag is intended to allow the optimization passes
to determine if certain optimizations and transformations are safe,
although nothing actually needs that yet.

The first patch, in this series, is the middle-end enablement and
documentation changes, including the new flag.

The second patch converts the amdgcn back-end to use the new scheme,
without adding any real new features.  This has received a number of bug
fixes and tweaks since the v2 patchset.

The third and final patch demonstrates how I can use the new MEM to
extend my machine description without writing whole new insns for the
vector modes, just for them to evaluate to the same assembler code in
the end.

I'm still doing some final dejagnu/bootstrap testing, following my final
tweaks, but I don't expect anything material to the review to change
from that.

OK for mainline?

Thanks

Andrew Stubbs (3):
  rtl: Allow "(mem:<vecmode> (reg:<vecmode>))"
  amdgcn: Implement "(mem (reg:<vecmode>))"
  amdgcn: Add vector atomics

 gcc/config/gcn/constraints.md |  52 ++-
 gcc/config/gcn/gcn-protos.h   |  11 +-
 gcc/config/gcn/gcn-valu.md    | 787 +++++++++++++---------------------
 gcc/config/gcn/gcn.cc         | 511 +++++++++++-----------
 gcc/config/gcn/gcn.h          |   2 -
 gcc/config/gcn/gcn.md         | 150 ++++---
 gcc/doc/rtl.texi              |  45 ++
 gcc/doc/tm.texi               |  28 +-
 gcc/emit-rtl.cc               |  30 +-
 gcc/explow.cc                 |  12 +-
 gcc/recog.cc                  |   3 +-
 gcc/rtl.h                     |   7 +-
 gcc/rtlanal.cc                |   4 +-
 gcc/simplify-rtx.cc           |  36 +-
 gcc/target.def                |  28 +-
 gcc/targhooks.cc              |   7 +-
 gcc/targhooks.h               |   3 +-
 17 files changed, 883 insertions(+), 833 deletions(-)

-- 
2.54.0

Reply via email to