Go to file
Michael Meissner 16370e798c rs6000.c (rs6000_split_vec_extract_var): On ISA 3.0/power9, add support to use the VEXTU{B,H,W}{L,R}X extract instructions.
[gcc]
2016-12-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (rs6000_split_vec_extract_var): On ISA
	3.0/power9, add support to use the VEXTU{B,H,W}{L,R}X extract
	instructions.
	* config/rs6000/vsx.md (VSr2): Add IEEE 128-bit floating point
	type constraint registers.
	(VSr3): Likewise.
	(FL_CONV): New mode iterator for binary floating types that have a
	direct conversion from 64-bit integer to floating point.
	(vsx_extract_<mode>_p9): Add support for the ISA 3.0/power9
	VEXTU{B,H,W}{L,R}X extract instructions.
	(vsx_extract_<mode>_p9 splitter): Add splitter to load up the
	extract byte position into the GPR if we are using the
	VEXTU{B,H,W}{L,R}X extract instructions.
	(vsx_extract_<mode>_di_p9): Support extracts to GPRs.
	(vsx_extract_<mode>_store_p9): Support extracting to GPRs so that
	we can use reg+offset address instructions.
	(vsx_extract_<mode>_var): Support extracts to GPRs.
	(vsx_extract_<VSX_EXTRACT_I:mode>_<SDI:mode>_var): New combiner
	insn to combine vector extracts with zero_extend.
	(vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Optimize
	extracting a small integer vector element and converting it to a
	floating point type.
	(vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
	(UNSPEC_XXEXTRACTUW): New unspec.
	(UNSPEC_XXINSERTW): Likewise.
	(vextract4b): Add support for the vec_vextract4b built-in
	function.
	(vextract4b_internal): Likewise.
	(vinsert4b): Add support for the vec_insert4b built-in function.
	Include both a version that inserts element 1 from a V4SI object
	and one that inserts a DI object.
	(vinsert4b_internal): Likewise.
	(vinsert4b_di): Likewise.
	(vinsert4b_di_internal): Likewise.
	* config/rs6000/predicates.md (const_0_to_11_operand): New
	predicate, match 0..11.
	* config/rs6000/rs6000-builtin.def (BU_P9V_VSX_3): Set built-in
	type to ternary, not binary.
	(BU_P9V_64BIT_VSX_3): Likewise.
	(P9V_BUILTIN_VEXTRACT4B): Add support for vec_vinsert4b and
	vec_extract4b non-overloaded built-in functions.
	(P9V_BUILTIN_VINSERT4B): Likewise.
	(P9V_BUILTIN_VINSERT4B_DI): Likewise.
	(P9V_BUILTIN_VEC_VEXTULX): Move to section that adds 2 operand ISA
	3.0 built-in functions.
	(P9V_BUILTIN_VEC_VEXTURX): Likewise.
	(P9V_BUILTIN_VEC_VEXTRACT4B): Add support for overloaded
	vec_insert4b and vec_extract4 built-in functions.
	(P9V_BUILTIN_VEC_VINSERT4B): Likewise.
	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
	overloaded support for vec_vinsert4b and vec_extract4b.
	* config/rs6000/rs6000.c (altivec_expand_builtin): Add checks for
	the vec_insert4b and vec_extract4b byte number being a constant in
	the range 0..11.
	* config/rs6000/altivec.h (vec_vinsert4b): Support vec_vinsert4b
	and vec_extract4b built-in functions.
	* doc/extend.doc (PowerPC VSX built-in functions): Document
	vec_insert4b and vec_extract4b.

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

	* gcc/testsuite/gcc.target/powerpc/vec-extract.h: If DO_TRACE is
	defined, add tracing of the various extracts to stderr.  Add
	support for tests that convert the result to another type.
	* gcc/testsuite/gcc.target/powerpc/vec-extract-v2df.c: Likewise.
	* gcc/testsuite/gcc.target/powerpc/vec-extract-v4sf.c: Likewise.
	* gcc/testsuite/gcc.target/powerpc/vec-extract-v4si-df.c: Add new
	tests that do an extract and then convert the values double.
	* gcc/testsuite/gcc.target/powerpc/vec-extract-v4siu-df.c: Likewise.
	* gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c: Likewise.
	* gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c: Likewise.
	* gcc/testsuite/gcc.target/powerpc/vec-extract-v8hiu-df.c: Likewise.
	* gcc/testsuite/gcc.target/powerpc/vec-extract-v8hi-df.c: Likewise.
	* gcc.target/powerpc/p9-extract-1.c: Update test to check for
	VEXTU{B,H,W}{L,R}X instructions being generated by default instead
	of VEXTRACTU{B,H} and XXEXTRACTUW.
	* gcc.target/powerpc/p9-extract-3.c: New test for combination of
	vec_extract and convert to floating point.
	* gcc.target/powerpc/p9-vinsert4b-1.c: New test for vec_vinsert4b
	and vec_extract4b.
	* gcc.target/powerpc/p9-vinsert4b-2.c: Likewise.

From-SVN: r243653
2016-12-14 16:08:07 +00:00
config Disable hwcaps on libgfortran 2016-12-12 13:40:21 +00:00
contrib Enhance analyze_brprob script 2016-12-14 10:30:24 +00:00
fixincludes Don't define libstdc++-internal macros in Solaris 10+ <math.h> 2016-11-21 16:09:47 +00:00
gcc rs6000.c (rs6000_split_vec_extract_var): On ISA 3.0/power9, add support to use the VEXTU{B,H,W}{L,R}X extract instructions. 2016-12-14 16:08:07 +00:00
gnattools
gotools
include libiberty: Add Rust symbol demangling. 2016-11-16 23:09:27 +00:00
INSTALL
intl config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libada config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libatomic config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libbacktrace config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libcc1 Add SET_DECL_MODE 2016-11-18 10:03:12 +00:00
libcilkrts Import libcilkrts Build 4467 (PR target/68945) 2016-12-01 14:48:49 +00:00
libcpp re PR preprocessor/78680 (ICE in get_substring_ranges_for_loc, at input.c:1398) 2016-12-12 17:37:48 +00:00
libdecnumber config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libffi config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libgcc lib1funcs.S (__ashrdi3): Fix typo from r243545. 2016-12-12 11:57:33 +00:00
libgfortran Disable hwcaps on libgfortran 2016-12-12 13:40:21 +00:00
libgo libgo: fixes for Solaris build 2016-12-13 18:03:45 +00:00
libgomp [RTEMS] Use spin lock for pool management 2016-12-02 14:13:12 +00:00
libiberty re PR c++/78761 (C++14, compiler generate mangled name that can not be demangled) 2016-12-13 07:16:05 +01:00
libitm Disable hwcaps on libgfortran 2016-12-12 13:40:21 +00:00
libmpx config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libobjc configure.ac: Don't use pkg-config to check for bdw-gc. 2016-12-01 12:31:49 +00:00
liboffloadmic config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libquadmath config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libsanitizer Add PR sanitizer/78532 patch to libsanitizer/LOCAL_PATCHES. 2016-11-30 14:32:55 +02:00
libssp config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libstdc++-v3 Make printers use singular noun for a single element 2016-12-14 16:07:29 +00:00
libvtv config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
lto-plugin config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
maintainer-scripts
zlib config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
.dir-locals.el
.gitattributes
.gitignore
ABOUT-NLS
ChangeLog acx.m4: Change "tail +16c" to "tail -c +17". 2016-12-01 16:02:51 -07:00
ChangeLog.jit
ChangeLog.tree-ssa
compile
config-ml.in config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
config.guess config.guess: Import latest version. 2016-11-25 08:38:27 +11:00
config.rpath
config.sub config.guess: Import latest version. 2016-11-25 08:38:27 +11:00
configure acx.m4: Change "tail +16c" to "tail -c +17". 2016-12-01 16:02:51 -07:00
configure.ac configure.ac: Don't use pkg-config to check for bdw-gc. 2016-12-01 12:31:49 +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 * MAINTAINERS (nvptx): Remove self. 2016-11-28 15:18:45 +00:00
Makefile.def Makefile.def: Remove reference to boehm-gc target module. 2016-11-30 00:12:45 +00:00
Makefile.in Makefile.def: Remove reference to boehm-gc target module. 2016-11-30 00:12:45 +00:00
Makefile.tpl Makefile.def: Remove references to GCJ. 2016-11-15 17:29:12 +00:00
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.