diff options
author | Robin Dapp <rdapp@ventanamicro.com> | 2023-10-25 22:19:43 +0200 |
---|---|---|
committer | Robin Dapp <rdapp@ventanamicro.com> | 2023-11-06 12:21:57 +0100 |
commit | 0c42741ad95af3a1e3ac07350da4c3a94865ed63 (patch) | |
tree | 4dd137b298c08345aded697acd25d6c43006d32a /gcc/tree-vectorizer.h | |
parent | 89abbaa5fb3823601710394683cf2e2101aba66a (diff) | |
download | gcc-0c42741ad95af3a1e3ac07350da4c3a94865ed63.zip gcc-0c42741ad95af3a1e3ac07350da4c3a94865ed63.tar.gz gcc-0c42741ad95af3a1e3ac07350da4c3a94865ed63.tar.bz2 |
internal-fn: Add VCOND_MASK_LEN.
In order to prevent simplification of a COND_OP with degenerate mask
(CONSTM1_RTX) into just an OP in the presence of length masking this
patch introduces a length-masked analog to VEC_COND_EXPR:
IFN_VCOND_MASK_LEN.
It also adds new match patterns that allow the combination of
unconditional unary, binary and ternay operations with the
VCOND_MASK_LEN into a conditional operation if the target supports it.
gcc/ChangeLog:
PR tree-optimization/111760
* config/riscv/autovec.md (vcond_mask_len_<mode><vm>): Add
expander.
* config/riscv/riscv-protos.h (enum insn_type): Add.
* config/riscv/riscv-v.cc (needs_fp_rounding): Add !pred_mov.
* doc/md.texi: Add vcond_mask_len.
* gimple-match-exports.cc (maybe_resimplify_conditional_op):
Create VCOND_MASK_LEN when length masking.
* gimple-match.h (gimple_match_op::gimple_match_op): Always
initialize len and bias.
* internal-fn.cc (vec_cond_mask_len_direct): Add.
(direct_vec_cond_mask_len_optab_supported_p): Add.
(internal_fn_len_index): Add VCOND_MASK_LEN.
(internal_fn_mask_index): Ditto.
* internal-fn.def (VCOND_MASK_LEN): New internal function.
* match.pd: Combine unconditional unary, binary and ternary
operations into the respective COND_LEN operations.
* optabs.def (OPTAB_D): Add vcond_mask_len optab.
gcc/testsuite/ChangeLog:
* gcc.dg/vect/vect-cond-arith-2.c: No vect cost model for
riscv_v.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions