Several SVE patterns need define_insn_and_splits that generate the same insn_code, but with different operands. That's probably a niche requirement, but it's cropping up often enough on the ACLE branch that I think it would be good to have a syntactic sugar for it. This patch therefore adds a new construct called define_insn_and_rewrite. It's basically a define_insn_and_split with an implicit split pattern, obtained by copying the insn pattern and replacing match_operands with match_dups and match_operators with match_op_dups. 2019-05-31 Richard Sandiford <richard.sandiford@arm.com> gcc/ * doc/md.texi: Document define_insn_and_rewrite. * rtl.def (DEFINE_INSN_AND_REWRITE): New rtx code. * gensupport.c (queue_elem): Update comment. (replace_operands_with_dups): New function. (gen_rewrite_sequence): Likewise. (process_rtx): Handle DEFINE_INSN_AND_REWRITE. * read-rtl.c (apply_subst_iterator): Likewise. (add_condition_to_rtx, named_rtx_p): Likewise. (rtx_reader::read_rtx_operand): Likewise. * config/aarch64/aarch64-sve.md (while_ult<GPI:mode><PRED_ALL:mode>_cc): Rename to... (*while_ult<GPI:mode><PRED_ALL:mode>_cc): ...this and use define_insn_and_rewrite. (*cond_<optab><mode>_any): Turn into define_insn_and_rewrites. Remove separate define_split. From-SVN: r271815
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
aarch64-arches.def | Loading commit data... | |
aarch64-bti-insert.c | Loading commit data... | |
aarch64-builtins.c | Loading commit data... | |
aarch64-c.c | Loading commit data... | |
aarch64-cores.def | Loading commit data... | |
aarch64-cost-tables.h | Loading commit data... | |
aarch64-d.c | Loading commit data... | |
aarch64-elf-raw.h | Loading commit data... | |
aarch64-elf.h | Loading commit data... | |
aarch64-freebsd.h | Loading commit data... | |
aarch64-fusion-pairs.def | Loading commit data... | |
aarch64-ldpstp.md | Loading commit data... | |
aarch64-linux.h | Loading commit data... | |
aarch64-modes.def | Loading commit data... | |
aarch64-option-extensions.def | Loading commit data... | |
aarch64-opts.h | Loading commit data... | |
aarch64-passes.def | Loading commit data... | |
aarch64-protos.h | Loading commit data... | |
aarch64-simd-builtin-types.def | Loading commit data... | |
aarch64-simd-builtins.def | Loading commit data... | |
aarch64-simd.md | Loading commit data... | |
aarch64-speculation.cc | Loading commit data... | |
aarch64-sve.md | Loading commit data... | |
aarch64-sve2.md | Loading commit data... | |
aarch64-tune.md | Loading commit data... | |
aarch64-tuning-flags.def | Loading commit data... | |
aarch64.c | Loading commit data... | |
aarch64.h | Loading commit data... | |
aarch64.md | Loading commit data... | |
aarch64.opt | Loading commit data... | |
arm_acle.h | Loading commit data... | |
arm_fp16.h | Loading commit data... | |
arm_neon.h | Loading commit data... | |
atomics.md | Loading commit data... | |
biarchilp32.h | Loading commit data... | |
biarchlp64.h | Loading commit data... | |
constraints.md | Loading commit data... | |
cortex-a57-fma-steering.c | Loading commit data... | |
driver-aarch64.c | Loading commit data... | |
falkor-tag-collision-avoidance.c | Loading commit data... | |
falkor.md | Loading commit data... | |
geniterators.sh | Loading commit data... | |
gentune.sh | Loading commit data... | |
iterators.md | Loading commit data... | |
predicates.md | Loading commit data... | |
rtems.h | Loading commit data... | |
saphira.md | Loading commit data... | |
t-aarch64 | Loading commit data... | |
t-aarch64-freebsd | Loading commit data... | |
t-aarch64-linux | Loading commit data... | |
thunderx.md | Loading commit data... | |
thunderx2t99.md | Loading commit data... | |
tsv110.md | Loading commit data... | |
x-aarch64 | Loading commit data... |