H.J. Lu 29f0e955c9 x86: Update piecewise move and store
We can use TImode/OImode/XImode integers for piecewise move and store.

1. Define MAX_MOVE_MAX to 64, which is the constant maximum number of
bytes that a single instruction can move quickly between memory and
registers or between two memory locations.
2. Define MOVE_MAX to the maximum number of bytes we can move from memory
to memory in one reasonably fast instruction.  The difference between
MAX_MOVE_MAX and MOVE_MAX is that MAX_MOVE_MAX must be a constant,
independent of compiler options, since it is used in reload.h to define
struct target_reload and MOVE_MAX can vary, depending on compiler options.
3. When vector register is used for piecewise move and store, we don't
increase stack_alignment_needed since vector register spill isn't
required for piecewise move and store.  Since stack_realign_needed is
set to true by checking stack_alignment_estimated set by pseudo vector
register usage, we also need to check stack_realign_needed to eliminate
frame pointer.

gcc/

	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Also
	check stack_realign_needed for stack realignment.
	(ix86_legitimate_constant_p): Always allow CONST_WIDE_INT smaller
	than the largest integer supported by vector register.
	* config/i386/i386.h (MAX_MOVE_MAX): New.  Set to 64.
	(MOVE_MAX): Set to bytes of the largest integer supported by
	vector register.
	(STORE_MAX_PIECES): New.

gcc/testsuite/

	* gcc.target/i386/pr90773-1.c: Adjust to expect movq for 32-bit.
	* gcc.target/i386/pr90773-4.c: Also run for 32-bit.
	* gcc.target/i386/pr90773-15.c: Likewise.
	* gcc.target/i386/pr90773-16.c: Likewise.
	* gcc.target/i386/pr90773-17.c: Likewise.
	* gcc.target/i386/pr90773-24.c: Likewise.
	* gcc.target/i386/pr90773-25.c: Likewise.
	* gcc.target/i386/pr100865-1.c: Likewise.
	* gcc.target/i386/pr100865-2.c: Likewise.
	* gcc.target/i386/pr100865-3.c: Likewise.
	* gcc.target/i386/pr90773-14.c: Also run for 32-bit and expect
	XMM movd to store 4 bytes.
	* gcc.target/i386/pr100865-4a.c: Also run for 32-bit and expect
	YMM registers.
	* gcc.target/i386/pr100865-4b.c: Likewise.
	* gcc.target/i386/pr100865-10a.c: Expect YMM registers.
	* gcc.target/i386/pr100865-10b.c: Likewise.
2021-08-02 10:38:19 -07:00
2021-07-22 00:16:46 +00:00
2021-07-10 00:16:53 +00:00
2021-07-21 00:16:54 +00:00
2021-07-07 00:17:12 +00:00
2021-08-02 10:38:19 -07:00
2021-05-08 00:16:27 +00:00
2021-02-03 00:16:23 +00:00
2021-07-25 00:16:22 +00:00
2021-06-15 00:16:37 +00:00
2021-01-04 10:26:59 +01:00
2021-07-22 00:16:46 +00:00
2021-06-29 00:16:42 +00:00
2021-06-29 00:16:42 +00:00
2021-04-07 00:16:39 +00:00
2021-07-27 00:16:27 +00:00
2021-05-04 00:16:53 +00:00
2021-07-10 00:16:53 +00:00
2021-07-16 00:16:25 +00:00
2021-07-29 00:16:43 +00:00
2021-07-01 00:16:41 +00:00
2021-06-18 00:16:58 +00:00
2021-01-06 00:16:55 +00:00
2021-05-26 00:16:41 +00:00
2021-06-12 00:16:27 +00:00
2021-06-09 00:16:30 +00:00
2021-07-29 00:16:43 +00:00
2021-01-06 00:16:55 +00:00
2021-01-06 00:16:55 +00:00
2021-06-26 00:16:39 +00:00
2021-05-15 00:16:27 +00:00
2021-01-06 00:16:55 +00:00
2021-06-24 16:51:40 +05:30
2021-07-21 00:16:54 +00:00
2021-01-05 16:04:14 -07:00
2021-07-15 01:16:51 -04:00

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.
Description
No description provided
Readme 3.1 GiB
Languages
C 48%
Ada 18.3%
C++ 14.1%
Go 7%
GCC Machine Description 4.6%
Other 7.7%