Go to file
Richard Sandiford f4fde1b378 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
2019-05-31 16:27:49 +00:00
config Generalize getconf _NPROCESSORS_ONLN 2019-05-30 09:06:48 +00:00
contrib contrib/mklog: Open files in text mode 2019-05-21 11:37:05 +03:00
fixincludes fixincludes - fix PR90379 2019-05-11 20:19:31 +00:00
gcc New .md construct: define_insn_and_rewrite 2019-05-31 16:27:49 +00:00
gnattools
gotools Makefile.am (check-go-tool): Only chmod check-go-dir if it exists. 2019-05-27 19:21:22 +00:00
include libiberty.h (vasprintf): Don't declare if HAVE_DECL_VASPRINTF is not defined. 2019-04-26 09:35:01 -06:00
INSTALL
intl
libada
libatomic
libbacktrace Makefile.am (BUILDTESTS): Remove test_elf, add test_elf_32 and test_elf_64. 2019-05-24 11:55:21 +00:00
libcc1 [C++ PATCH] Using decls 2019-05-21 14:33:24 +00:00
libcpp [PATCH] Fix PR 81721: ICE with PCH and Pragma warning and C++ operator 2019-05-19 23:59:06 -07:00
libdecnumber
libffi
libgcc config.gcc (rx-*-linux*): New target. 2019-05-29 12:36:06 -06:00
libgfortran fortran/89100: Default widths with -fdec-format-defaults 2019-05-22 14:56:01 +03:00
libgo re PR go/90635 (typo in libgo/configure.ac) 2019-05-27 00:14:02 +00:00
libgomp Generalize getconf _NPROCESSORS_ONLN 2019-05-30 09:06:48 +00:00
libhsail-rt
libiberty d-demangle.c (dlang_parse_assocarray): Correctly handle error result. 2019-04-30 08:39:14 -06:00
libitm Makefile.am (finclude): Remove. 2019-05-03 09:20:04 +02:00
libobjc re PR target/89093 (C++ exception handling clobbers d8 VFP register) 2019-04-23 12:03:41 +02:00
liboffloadmic
libphobos Check if Solaris ld supports -z relax=transtls 2019-05-07 10:38:45 +00:00
libquadmath
libsanitizer rs6000: Fix sanitizer build (PR90639) 2019-05-27 21:12:19 +02:00
libssp
libstdc++-v3 Add noexcept to tuple<> and simplify tuple<T1,T2> noexcept-specifiers 2019-05-31 15:58:05 +01:00
libvtv
lto-plugin lto-plugin, removed unused variable 2019-05-15 14:10:27 +00:00
maintainer-scripts crontab: Snapshots from trunk are now GCC 10 related. 2019-05-04 13:28:49 +00:00
zlib
.dir-locals.el
.gitattributes
.gitignore
ABOUT-NLS
ar-lib
ChangeLog Add myself to MAINTAINERS 2019-05-20 15:33:12 +00:00
ChangeLog.jit
ChangeLog.tree-ssa
compile
config-ml.in
config.guess
config.rpath
config.sub
configure PR d/87799 Fix D build on windows hosts 2019-04-14 09:52:22 +00:00
configure.ac PR d/87799 Fix D build on windows hosts 2019-04-14 09:52:22 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.RUNTIME
depcomp
install-sh
libtool-ldflags
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS Add myself to MAINTAINERS 2019-05-20 15:33:12 +00:00
Makefile.def
Makefile.in re PR lto/85574 (LTO bootstapped binaries differ) 2019-05-02 13:58:47 +00:00
Makefile.tpl re PR lto/85574 (LTO bootstapped binaries differ) 2019-05-02 13:58:47 +00:00
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
symlink-tree
test-driver
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.