GCC modified for the FreeChainXenon project
![]() This patch also moves V2HI and V4QImode vector conditional moves to SSE4.1 targets. Vector cmoves are implemented with SSE logic functions without -msse4.1, and they are hardly worthwile for narrow vector modes. More important, we would like to keep vector logic functions for GPR registers, and the current RTX description of 32-bit vector modes logic insns does not include the necessary CC reg clobber. Solve these issues by restricting vector cmove insns for these modes to -msse4.1, where logic instructions are avoided, and pblend insn is used instead. A follow-up patch will add clobbers and necessary splits to 32-bit vector mode logic insns, and in a future patch, ix86_sse_movcc will be improved to use expand_simple_{unop,binop} to emit logic insns, allowing us to re-enable 16-bit and 32-bit narrow vector cmoves for -msse2. 2022-01-11 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: PR target/103861 * config/i386/mmx.md (vcond<mode><mode>): Use VI_16_32 mode iterator. Enable for TARGET_SSE4_1. (vcondu<mode><mode>): Ditto. (vcond_mask_<mode><mode>): Ditto. (mmx_pblendvb_v8qi): Rename from mmx_pblendvb64. (mmx_pblendvb_<mode>): Rename from mmx_pblendvb32. Use VI_16_32 mode iterator. * config/i386/i386-expand.c (ix86_expand_sse_movcc): Update for rename. Handle V2QImode. (expand_vec_perm_blend): Update for rename. gcc/testsuite/ChangeLog: PR target/103861 * g++.target/i386/pr100637-1b.C (dg-options): Use -msse4 instead of -msse2. * g++.target/i386/pr100637-1w.C (dg-options): Ditto. * g++.target/i386/pr103861-1.C: New test. * gcc.target/i386/pr100637-4b.c (dg-options): Use -msse4 instead of -msse2. * gcc.target/i386/pr103861-4.c: New test. |
||
---|---|---|
c++tools | ||
config | ||
contrib | ||
fixincludes | ||
gcc | ||
gnattools | ||
gotools | ||
include | ||
INSTALL | ||
intl | ||
libada | ||
libatomic | ||
libbacktrace | ||
libcc1 | ||
libcody | ||
libcpp | ||
libdecnumber | ||
libffi | ||
libgcc | ||
libgfortran | ||
libgo | ||
libgomp | ||
libiberty | ||
libitm | ||
libobjc | ||
liboffloadmic | ||
libphobos | ||
libquadmath | ||
libsanitizer | ||
libssp | ||
libstdc++-v3 | ||
libvtv | ||
lto-plugin | ||
maintainer-scripts | ||
zlib | ||
.dir-locals.el | ||
.gitattributes | ||
.gitignore | ||
ABOUT-NLS | ||
ar-lib | ||
build.log | ||
ChangeLog | ||
ChangeLog.jit | ||
ChangeLog.tree-ssa | ||
compile | ||
config-ml.in | ||
config.guess | ||
config.rpath | ||
config.sub | ||
configure | ||
configure.ac | ||
COPYING | ||
COPYING.LIB | ||
COPYING.RUNTIME | ||
COPYING3 | ||
COPYING3.LIB | ||
depcomp | ||
install-sh | ||
libtool-ldflags | ||
libtool.m4 | ||
ltgcc.m4 | ||
ltmain.sh | ||
ltoptions.m4 | ||
ltsugar.m4 | ||
ltversion.m4 | ||
lt~obsolete.m4 | ||
MAINTAINERS | ||
Makefile.def | ||
Makefile.in | ||
Makefile.tpl | ||
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.