mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
cdc4d4ada2e09f307c0bce6394352079088186a1
The following fixes a regression in AVX2 vectorization because on trunk we are now correctly determine we can shorten a shift operation but we never really bothered to check we can implement the resulting operation. With the patch we now check this. For shifts and rotates we have the choice between vector-vector and vector-scalar operations which in the end depends on whether we perform SLP or not and how the shift operand matches up. The patch heuristically assumes that constant or external shifts can be handled by vector-scalar operations. As we were not checking for target support was to allow recursive matching other patterns, the following still errors on that side in case the original operation was not supported by the target or it is binary and the 2nd operand is a constant. This helps avoiding regressions in gcc.dg/vect/vect-over-widen-13.c and gcc.dg/vect/vect-div-bitmask-1.c and gcc.target/aarch64/sve2/div-by-bitmask_1.c where the operation in question is integer division. PR tree-optimization/124068 * tree-vect-patterns.cc (target_has_vecop_for_code): Move earlier, add defaulted optab_subtype parameter. (vect_recog_over_widening_pattern): Check that the target supports the narrowed operation before committing to the pattern. * gcc.target/i386/vect-shift-1.c: New testcase.
…
…
…
…
…
…
…
…
…
…
…
…
…
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
Languages
C++
30.7%
C
30.1%
Ada
14.4%
D
6.1%
Go
5.7%
Other
12.5%