aboutsummaryrefslogtreecommitdiff
path: root/gcc/debug.cc
diff options
context:
space:
mode:
authorRobin Dapp <rdapp@ventanamicro.com>2023-09-13 22:19:35 +0200
committerRobin Dapp <rdapp@ventanamicro.com>2023-11-02 11:48:19 +0100
commit01c18f58d37865d5f3bbe93e666183b54ec608c7 (patch)
tree66434b35ac66c8ecc740e1559d249b701fbee6d8 /gcc/debug.cc
parentc05f748218a0d556972212d6aecfce0eb4c8a31c (diff)
downloadgcc-01c18f58d37865d5f3bbe93e666183b54ec608c7.zip
gcc-01c18f58d37865d5f3bbe93e666183b54ec608c7.tar.gz
gcc-01c18f58d37865d5f3bbe93e666183b54ec608c7.tar.bz2
ifcvt/vect: Emit COND_OP for conditional scalar reduction.
As described in PR111401 we currently emit a COND and a PLUS expression for conditional reductions. This makes it difficult to combine both into a masked reduction statement later. This patch improves that by directly emitting a COND_ADD/COND_OP during ifcvt and adjusting some vectorizer code to handle it. It also makes neutral_op_for_reduction return -0 if HONOR_SIGNED_ZEROS is true. gcc/ChangeLog: PR middle-end/111401 * internal-fn.cc (internal_fn_else_index): New function. * internal-fn.h (internal_fn_else_index): Define. * tree-if-conv.cc (convert_scalar_cond_reduction): Emit COND_OP if supported. (predicate_scalar_phi): Add whitespace. * tree-vect-loop.cc (fold_left_reduction_fn): Add IFN_COND_OP. (neutral_op_for_reduction): Return -0 for PLUS. (check_reduction_path): Don't count else operand in COND_OP. (vect_is_simple_reduction): Ditto. (vect_create_epilog_for_reduction): Fix whitespace. (vectorize_fold_left_reduction): Add COND_OP handling. (vectorizable_reduction): Don't count else operand in COND_OP. (vect_transform_reduction): Add COND_OP handling. * tree-vectorizer.h (neutral_op_for_reduction): Add default parameter. gcc/testsuite/ChangeLog: * gcc.dg/vect/vect-cond-reduc-in-order-2-signed-zero.c: New test. * gcc.target/riscv/rvv/autovec/cond/pr111401.c: New test. * gcc.target/riscv/rvv/autovec/reduc/reduc_call-2.c: Adjust. * gcc.target/riscv/rvv/autovec/reduc/reduc_call-4.c: Ditto.
Diffstat (limited to 'gcc/debug.cc')
0 files changed, 0 insertions, 0 deletions