This patch adds support for the vec_cmpne altivec builtins from the Power...
authorBill Seurer <seurer@linux.vnet.ibm.com>
Wed, 25 May 2016 21:55:22 +0000 (21:55 +0000)
committerBill Seurer <seurer@gcc.gnu.org>
Wed, 25 May 2016 21:55:22 +0000 (21:55 +0000)
commitf9d6ce734db62ab7ff8ab4826a9313bf417e0a81
treecc8807a5da2fac8a9e243f796efdbc3f54a77195
parenta88a7b22c9d0df1068bdc92522ea805d0edf676f
This patch adds support for the vec_cmpne altivec builtins from the Power...

This patch adds support for the vec_cmpne altivec builtins from the Power
Architecture 64-Bit ELF V2 ABI OpenPOWER ABI for Linux Supplement (16 July
2015 Version 1.1). There are many of the builtins that are missing and this
is part of a series of patches to add them.

There aren't instructions for vec_cmpne so the output code is built from other
built-ins that do have instructions which in this case is the following.

vec_cmpneq (va, vb) == vec_nor (vec_cmpeq (va, vb), vec_cmpeq (va, vb))

The new test cases are executable tests which verify that the generated
code produces expected values. C macros were used so that the same
test case could be used for both the signed and unsigned versions of various
basic types. A separate executable test case is used for the long long versions
of vec_cmpne because of some differences in loading and storing the vectors.

[gcc]

2016-05-25  Bill Seurer  <seurer@linux.vnet.ibm.com>

* config/rs6000/altivec.h (vec_cmpne): Add #define for vec_cmpne.
* config/rs6000/rs6000-builtin.def (vec_cmpne): Add vec_cmpne as a
special case builtin.
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
code for ALTIVEC_BUILTIN_VEC_CMPNE.
* config/rs6000/rs6000.c (altivec_init_builtins): Add definition
for __builtin_vec_cmpne.

[gcc/testsuite]

2016-05-25  Bill Seurer  <seurer@linux.vnet.ibm.com>

* gcc.target/powerpc/vec-cmpne.c: New test.
* gcc.target/powerpc/vec-cmpne-long.c: New test.

From-SVN: r236753
gcc/ChangeLog
gcc/config/rs6000/altivec.h
gcc/config/rs6000/rs6000-builtin.def
gcc/config/rs6000/rs6000-c.c
gcc/config/rs6000/rs6000.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/vec-cmpne-long.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-cmpne.c [new file with mode: 0644]