Go to file
Michael Meissner 456f0dfa1c rs6000.c (rs6000_hard_regno_mode_ok): If ISA 3.0...
[gcc]
2016-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If ISA 3.0,
	enable HImode and QImode to go in vector registers by default if
	the -mvsx-small-integer option is enabled.
	(rs6000_secondary_reload_simple_move): Likewise.
	(rs6000_preferred_reload_class): Don't force integer constants to
	be loaded into vector registers that we can easily make into
	memory (or being created in the GPRs and moved over with direct
	move).
	* config/rs6000/vsx.md (UNSPEC_P9_MEMORY): Delete, no longer
	used.
	(vsx_extract_<mode>): Rework V4SImode, V8HImode, and V16QImode
	vector extraction on ISA 3.0 when the scalar integer can be
	allocated in vector registers.  Generate the VEC_SELECT directy,
	and don't use UNSPEC's to avoid having the scalar type in a vector
	register.  Make the expander target registers, and let the
	combiner fold in results storing to memory, if the machine
	supports stores.
	(vsx_extract_<mode>_di): Likewise.
	(vsx_extract_<mode>_p9): Likewise.
	(vsx_extract_<mode>_di_p9): Likewise.
	(vsx_extract_<mode>_store_p9): Likewise.
	(vsx_extract_si): Likewise.
	(vsx_extract_<mode>_p8): Likewise.
	(p9_lxsi<wd>zx): Delete, no longer used.
	(p9_stxsi<wd>x): Likewise.
	* config/rs6000/rs6000.md (INT_ISA3): New mode iterator for
	integers in vector registers for ISA 3.0.
	(QHI): Update comment.
	(zero_extendqi<mode>2): Add support for ISA 3.0 scalar load or
	vector extract instructions in sign/zero extend.
	(zero_extendhi<mode>): Likewise.
	(extendqi<mode>): Likewise.
	(extendhi<mode>2): Likewise.
	(HImode splitter for load/sign extend in vector register):
	Likewise.
	(float<QHI:mode><FP_ISA3:mode>2): Eliminate old method of
	optimizing floating point conversions to/from small data types and
	rewrite it to support QImode/HImode being allowed in vector
	registers on ISA 3.0.
	(float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
	(floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
	(floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
	(fix_trunc<SFDF:mode><QHI:mode>2): Likewise.
	(fix_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
	(fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
	(fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
	VSPLITISW on ISA 2.07.
	(movhi_internal): Combine movhi_internal and movqi_internal into
	one mov<mode>_internal with an iterator.  Add support for QImode
	and HImode being allowed in vector registers.  Make large number
	of attributes and constraints easier to read.
	(movqi_internal): Likewise.
	(mov<mode>_internal): Likewise.
	(movdi_internal64): Fix constraint to allow loading -16..15 with
	VSPLITISW on ISA 2.07.
	(integer XXSPLTIB splitter): Add support for QI, HI, and SImode as
	well as DImode.

[gcc/testsuite]
2016-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc.target/powerpc/vsx-qimode.c: New test for QImode, HImode
	being allowed in vector registers.
	* gcc.target/powerpc/vsx-qimode2.c: Likewise.
	* gcc.target/powerpc/vsx-qimode3.c: Likewise.
	* gcc.target/powerpc/vsx-himode.c: Likewise.
	* gcc.target/powerpc/vsx-himode2.c: Likewise.
	* gcc.target/powerpc/vsx-himode3.c: Likewise.
	* gcc.target/powerpc/p9-extract-1.c: Change MFVSRD to just MFVSR,
	to allow matching MFVSRD or MFVSRW.

From-SVN: r242048
2016-11-10 19:38:33 +00:00
boehm-gc
config
contrib Add BZ marker to recent commit 2016-10-25 09:02:32 -06:00
fixincludes
gcc rs6000.c (rs6000_hard_regno_mode_ok): If ISA 3.0... 2016-11-10 19:38:33 +00:00
gnattools
gotools
include Implement P0012R1, Make exception specifications part of the type system. 2016-11-07 18:09:29 -05:00
INSTALL
intl
libada
libatomic
libbacktrace
libcc1
libcilkrts
libcpp [AArch64] Optimized implementation of search_line_fast for the CPP lexer 2016-11-08 13:29:32 +00:00
libdecnumber
libffi
libgcc Make direct emission of time profiler counter 2016-11-03 15:24:22 +00:00
libgfortran Default missing exponents to 0 with -fdec. 2016-11-03 18:09:44 +00:00
libgo re PR go/78172 (gen-sysinfo.go vs AIX cred.h) 2016-11-05 00:21:33 +00:00
libgomp cpp.c (cpp_define_builtins): Define _OPENMP to 201511 instead of 201307. 2016-11-10 18:05:18 +01:00
libiberty Implement P0012R1, Make exception specifications part of the type system. 2016-11-07 18:09:29 -05:00
libitm
libmpx
libobjc
liboffloadmic
libquadmath
libsanitizer asan_globals.cc (RegisterGlobal): Do not call CheckODRViolationViaPoisoning. 2016-11-09 00:09:33 +02:00
libssp
libstdc++-v3 regex.h (regex_iterator::regex_iterator()): Define end() as _M_pregex == nullptr. 2016-11-09 22:11:32 +00:00
libvtv
lto-plugin
maintainer-scripts
zlib
.dir-locals.el
.gitattributes
.gitignore
ABOUT-NLS
ChangeLog MAINTAINERS (Write After Approval): Update email address, 2016-11-02 02:10:45 +00:00
ChangeLog.jit
ChangeLog.tree-ssa
compile
config-ml.in
config.guess
config.rpath
config.sub
configure
configure.ac
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 MAINTAINERS (Write After Approval): Update email address, 2016-11-02 02:10:45 +00:00
Makefile.def
Makefile.in
Makefile.tpl
missing
mkdep
mkinstalldirs
move-if-change
README
symlink-tree
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.