From: Robin Dapp <rd...@ventanamicro.com> Hi,
Significant changes from v2: - Decide on the else value in the vectorizer and also add the VEC_COND there (instead of during ifcvt). - Simplify aarch64 and i386 changes according to maintainers' comments. - Fixed bugs spotted by the CI. No noteworthy changes to the riscv patch. Bootstrapped and regtested on i386, aarch64 and power10. Regtested on rv64gcv and rv32gcv. 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 | 46 ++- gcc/config/aarch64/aarch64-sve-builtins.cc | 7 +- gcc/config/aarch64/aarch64-sve-builtins.h | 2 +- gcc/config/aarch64/aarch64-sve.md | 53 ++- gcc/config/aarch64/aarch64-sve2.md | 3 +- gcc/config/aarch64/iterators.md | 4 - gcc/config/aarch64/predicates.md | 4 + gcc/config/gcn/gcn-valu.md | 14 +- gcc/config/gcn/predicates.md | 2 + gcc/config/i386/i386-expand.cc | 26 +- gcc/config/i386/predicates.md | 4 + gcc/config/i386/sse.md | 112 +++--- 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 | 139 +++++++- gcc/internal-fn.h | 13 +- gcc/optabs-query.cc | 70 ++-- gcc/optabs-query.h | 3 +- gcc/optabs-tree.cc | 66 +++- gcc/optabs-tree.h | 8 +- .../gcc.target/riscv/rvv/autovec/pr115336.c | 20 ++ .../gcc.target/riscv/rvv/autovec/pr116059.c | 15 + gcc/tree-if-conv.cc | 16 +- gcc/tree-vect-data-refs.cc | 74 ++-- gcc/tree-vect-patterns.cc | 12 +- gcc/tree-vect-slp.cc | 25 +- gcc/tree-vect-stmts.cc | 323 +++++++++++++++--- gcc/tree-vectorizer.h | 10 +- 30 files changed, 925 insertions(+), 283 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 -- 2.47.0