diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-05-31 16:27:49 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-05-31 16:27:49 +0000 |
commit | f4fde1b378ad68fb2dec6719ed26c1b901488e03 (patch) | |
tree | a6089ff5ae9f140f131b42e288966eb32e0b353c /libgo/runtime/proc.c | |
parent | b1bb4869e2708c1385352e4d960833e1b258859b (diff) | |
download | gcc-f4fde1b378ad68fb2dec6719ed26c1b901488e03.zip gcc-f4fde1b378ad68fb2dec6719ed26c1b901488e03.tar.gz gcc-f4fde1b378ad68fb2dec6719ed26c1b901488e03.tar.bz2 |
New .md construct: define_insn_and_rewrite
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
Diffstat (limited to 'libgo/runtime/proc.c')
0 files changed, 0 insertions, 0 deletions