mbox series

[v2,0/8] Add maskload else operand.

Message ID 20241018142220.173482-1-rdapp@ventanamicro.com
Headers show
Series Add maskload else operand. | expand

Message

Robin Dapp Oct. 18, 2024, 2:22 p.m. UTC
Hi,

finally, after many distractions, v2 of this series.

Main changes from v1:
 - Restrict to types/modes with padding thanks to Richi's suggestion.
 - Return an array of supported else values and let the vectorizer choose.
 - Undefined else value for GCN.

Bootstrapped and regtested on Power10, x86 and aarch64.
Regtested on rv64gcv.

Testing on GCN would be much appreciated.

Robin Dapp (8):
  docs: Document maskload else operand and behavior.
  ifn: Add else-operand handling.
  tree-ifcvt: Enforce zero else value after maskload.
  vect: Add maskload else value support.
  aarch64: Add masked-load else operands.
  gcn: Add else operand to masked loads.
  i386: Add else operand to masked loads.
  RISC-V: Add else operand to masked loads [PR115336].

 .../aarch64/aarch64-sve-builtins-base.cc      |  58 +++-
 gcc/config/aarch64/aarch64-sve-builtins.cc    |   5 +
 gcc/config/aarch64/aarch64-sve-builtins.h     |   1 +
 gcc/config/aarch64/aarch64-sve.md             |  47 +++-
 gcc/config/aarch64/aarch64-sve2.md            |   3 +-
 gcc/config/aarch64/predicates.md              |   4 +
 gcc/config/gcn/gcn-valu.md                    |  12 +-
 gcc/config/gcn/predicates.md                  |   2 +
 gcc/config/i386/i386-expand.cc                |  26 +-
 gcc/config/i386/predicates.md                 |   4 +
 gcc/config/i386/sse.md                        | 124 +++++----
 gcc/config/riscv/autovec.md                   |  45 +--
 gcc/config/riscv/predicates.md                |   3 +
 gcc/config/riscv/riscv-v.cc                   |  26 +-
 gcc/doc/md.texi                               |  63 +++--
 gcc/internal-fn.cc                            | 131 +++++++--
 gcc/internal-fn.h                             |  15 +-
 gcc/optabs-query.cc                           |  59 ++--
 gcc/optabs-query.h                            |   3 +-
 gcc/optabs-tree.cc                            |  62 +++--
 gcc/optabs-tree.h                             |   8 +-
 .../gcc.target/riscv/rvv/autovec/pr115336.c   |  20 ++
 .../gcc.target/riscv/rvv/autovec/pr116059.c   |  13 +
 gcc/tree-if-conv.cc                           | 112 ++++++--
 gcc/tree-vect-data-refs.cc                    |  77 ++++--
 gcc/tree-vect-patterns.cc                     |  18 +-
 gcc/tree-vect-slp.cc                          |  22 +-
 gcc/tree-vect-stmts.cc                        | 257 ++++++++++++++----
 gcc/tree-vectorizer.h                         |  11 +-
 29 files changed, 943 insertions(+), 288 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/pr115336.c
 create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/pr116059.c