aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKelvin Nilsen <kelvin@gcc.gnu.org>2019-04-24 15:47:06 +0000
committerKelvin Nilsen <kelvin@gcc.gnu.org>2019-04-24 15:47:06 +0000
commit41013c9171b139d1ffed59b787d0cbcdf8c1be86 (patch)
tree8a89ea5a24ff89ba505b1d8d75b6025e242a5f73
parent269a50879f591ce7dfb2a6cb4b26c69caab82f76 (diff)
preparing to commitibm/branch4pr89765
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/ibm/branch4pr89765@270549 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/config/rs6000/rs6000-c.c26
-rw-r--r--gcc/config/rs6000/rs6000.c4
-rw-r--r--gcc/match.pd5
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr89765-mc.c72
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c16
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c16
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c17
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c17
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c19
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c3
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c3
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c9
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c9
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c2
30 files changed, 139 insertions, 121 deletions
diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c
index 063d4acfafb..aec9a5e0b81 100644
--- a/gcc/config/rs6000/rs6000-c.c
+++ b/gcc/config/rs6000/rs6000-c.c
@@ -6620,6 +6620,10 @@ altivec_resolve_overloaded_builtin (location_t loc, tree fndecl,
default:
break;
+ case E_V1TImode:
+ call = rs6000_builtin_decls[VSX_BUILTIN_VEC_EXT_V1TI];
+ break;
+
case E_V2DFmode:
call = rs6000_builtin_decls[VSX_BUILTIN_VEC_EXT_V2DF];
break;
@@ -6736,11 +6740,13 @@ altivec_resolve_overloaded_builtin (location_t loc, tree fndecl,
/* If we can use the VSX xxpermdi instruction, use that for insert. */
mode = TYPE_MODE (arg1_type);
if ((mode == V2DFmode || mode == V2DImode) && VECTOR_UNIT_VSX_P (mode)
- && TREE_CODE (arg2) == INTEGER_CST
- && wi::ltu_p (wi::to_wide (arg2), 2))
+ && TREE_CODE (arg2) == INTEGER_CST)
{
+ wide_int selector = wi::to_wide (arg2);
+ selector = wi::umod_trunc (selector, 2);
tree call = NULL_TREE;
+ arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector);
if (mode == V2DFmode)
call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V2DF];
else if (mode == V2DImode)
@@ -6752,11 +6758,12 @@ altivec_resolve_overloaded_builtin (location_t loc, tree fndecl,
return build_call_expr (call, 3, arg1, arg0, arg2);
}
else if (mode == V1TImode && VECTOR_UNIT_VSX_P (mode)
- && TREE_CODE (arg2) == INTEGER_CST
- && wi::eq_p (wi::to_wide (arg2), 0))
+ && TREE_CODE (arg2) == INTEGER_CST)
{
tree call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V1TI];
+ wide_int selector = wi::zero(32);
+ arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector);
/* Note, __builtin_vec_insert_<xxx> has vector and scalar types
reversed. */
return build_call_expr (call, 3, arg1, arg0, arg2);
@@ -6764,10 +6771,13 @@ altivec_resolve_overloaded_builtin (location_t loc, tree fndecl,
/* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2) = arg0. */
arg1_inner_type = TREE_TYPE (arg1_type);
- arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2,
- build_int_cst (TREE_TYPE (arg2),
- TYPE_VECTOR_SUBPARTS (arg1_type)
- - 1), 0);
+ if (TYPE_VECTOR_SUBPARTS (arg1_type) == 1)
+ arg2 = build_int_cst (TREE_TYPE (arg2), 0);
+ else
+ arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2,
+ build_int_cst (TREE_TYPE (arg2),
+ TYPE_VECTOR_SUBPARTS (arg1_type)
+ - 1), 0);
decl = build_decl (loc, VAR_DECL, NULL_TREE, arg1_type);
DECL_EXTERNAL (decl) = 0;
TREE_PUBLIC (decl) = 0;
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index cc8dc941537..362dab1df97 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -6944,6 +6944,10 @@ rs6000_expand_vector_extract (rtx target, rtx vec, rtx elt)
switch (mode)
{
+ case E_V1TImode:
+ emit_move_insn (target, gen_lowpart (TImode, vec));
+ return;
+
case E_V2DFmode:
emit_insn (gen_vsx_extract_v2df_var (target, vec, elt));
return;
diff --git a/gcc/match.pd b/gcc/match.pd
index 0d82beab45b..3a0a03f19df 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -4963,11 +4963,6 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
(BIT_FIELD_REF @0 @1 @2))
(simplify
- (BIT_FIELD_REF @0 @1 integer_zerop)
- (if (tree_int_cst_equal (@1, TYPE_SIZE (TREE_TYPE (@0))))
- (view_convert @0)))
-
-(simplify
(BIT_FIELD_REF @0 @1 @2)
(switch
(if (TREE_CODE (TREE_TYPE (@0)) == COMPLEX_TYPE
diff --git a/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c b/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c
index 00786735941..8384536058b 100644
--- a/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c
+++ b/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c
@@ -83,6 +83,40 @@ set_auto_n_ushort (vector unsigned short a, int n, unsigned short x)
return vec_insert (x, a, n);
}
+__attribute ((noinline))
+unsigned __int128
+get_auto_n_uint128 (vector unsigned __int128 a, int n)
+{
+ return vec_extract (a, n);
+}
+
+__attribute ((noinline))
+unsigned long long int
+get_auto_n_ulong (vector unsigned long long int a, int n)
+{
+ return vec_extract (a, n);
+}
+
+__attribute ((noinline))
+unsigned int
+get_auto_n_uint (vector unsigned int a, int n)
+{
+ return vec_extract (a, n);
+}
+
+__attribute ((noinline))
+unsigned char
+get_auto_n_uchar (vector unsigned char a, int n)
+{
+ return vec_extract (a, n);
+}
+
+__attribute ((noinline))
+unsigned short
+get_auto_n_ushort (vector unsigned short a, int n)
+{
+ return vec_extract (a, n);
+}
int check_uint128_element (int i, unsigned __int128 entry)
{
@@ -92,7 +126,7 @@ int check_uint128_element (int i, unsigned __int128 entry)
| 0x0706050403020100ULL));
}
-int get_uint128_element (int i)
+unsigned __int128 get_uint128_element (int i)
{
return ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64)
| 0x0706050403020100ULL);
@@ -217,14 +251,14 @@ unsigned short get_ushort_element (int i)
{
switch (i % 8)
{
- case 0: return (entry == 0x9988);
- case 1: return (entry == 0x8877);
- case 2: return (entry == 0x7766);
- case 3: return (entry == 0x6655);
- case 4: return (entry == 0x5544);
- case 5: return (entry == 0x4433);
- case 6: return (entry == 0x3322);
- case 7: return (entry == 0x2211);
+ case 0: return 0x9988;
+ case 1: return 0x8877;
+ case 2: return 0x7766;
+ case 3: return 0x6655;
+ case 4: return 0x5544;
+ case 5: return 0x4433;
+ case 6: return 0x3322;
+ case 7: return 0x2211;
}
}
@@ -233,8 +267,8 @@ init_auto_uint128 (vector unsigned __int128 a)
{
int i;
for (i = 0; i < 32; i += 3)
- a = set_auto_n_uint128 (get_uint128_element (i), a, i);
- return a
+ a = set_auto_n_uint128 (a, i, get_uint128_element (i));
+ return a;
}
void do_auto_uint128 (vector unsigned __int128 a)
@@ -246,14 +280,14 @@ void do_auto_uint128 (vector unsigned __int128 a)
c = get_auto_n_uint128 (a, i);
if (!check_uint128_element (i, c)) abort ();
}
- }
+}
vector unsigned long long int
init_auto_ulong (vector unsigned long long int a)
{
int i;
for (i = 0; i < 32; i += 3)
- a = set_auto_n_ulong (get_ulong_element (i), a, i);
+ a = set_auto_n_ulong (a, i, get_ulong_element (i));
return a;
}
@@ -272,7 +306,7 @@ vector unsigned int init_auto_uint (vector unsigned int a)
{
int i;
for (i = 0; i < 32; i += 3)
- a = set_uint_element (get_auto_n_uint (i), a, i);
+ a = set_auto_n_uint (a, i, get_uint_element (i));
return a;
}
@@ -287,11 +321,11 @@ void do_auto_uint (vector unsigned int a)
}
}
-void init_auto_ushort ( vector unsigned short a )
+vector unsigned short init_auto_ushort ( vector unsigned short a )
{
int i;
for (i = 0; i < 32; i += 3)
- a = set_auto_n_ushort (get_ushort_element (i), a, i);
+ a = set_auto_n_ushort (a, i, get_ushort_element (i));
return a;
}
@@ -306,15 +340,15 @@ void do_auto_ushort (vector unsigned short a)
}
}
-void init_auto_uchar (vector unsigned char a)
+vector unsigned char init_auto_uchar (vector unsigned char a)
{
int i;
for (i = 0; i < 32; i += 3)
- a = set_auto_n_uchar (get_uchar_element (i), a, i);
+ a = set_auto_n_uchar (a, i, get_uchar_element (i));
return a;
}
-void do_auto_uchar ( vector unsigned char a )
+void do_auto_uchar (vector unsigned char a)
{
int i;
unsigned char c;
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c
index e4cad166460..5ed6424d64f 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c
@@ -100,7 +100,7 @@ int main (int argc, short *argv[]) {
abort ();
sv = s30 (sv, CONST2);
- if (sv [6] != CONST6)
+ if (sv [6] != CONST2)
abort ();
sv = ms3 (&sv, CONST5);
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c
index fb4990f1d4f..c9aaecad920 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c
@@ -100,7 +100,7 @@ int main (int argc, short *argv[]) {
abort ();
sv = s30 (sv, CONST2);
- if (sv [6] != CONST6)
+ if (sv [6] != CONST2)
abort ();
sv = ms3 (&sv, CONST5);
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c
index de7d52d4f56..8e514aa2b1f 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c
@@ -40,22 +40,22 @@ vector int s30 (vector int v, int x)
}
/* Test for vector residing in memory. */
-vector int ms3 (vector int *vp)
+vector int ms3 (vector int *vp, int x)
{
return vec_insert (x, *vp, 3);
}
-vector int ms1(vector int *vp)
+vector int ms1 (vector int *vp, int x)
{
return vec_insert (x, *vp, 1);
}
-vector int ms21(vector int *vp)
+vector int ms21 (vector int *vp, int x)
{
return vec_insert (x, *vp, 21);
}
-vector int ms30(vector int *vp)
+vector int ms30 (vector int *vp, int x)
{
return vec_insert (x, *vp, 30);
}
@@ -64,14 +64,14 @@ vector int ms30(vector int *vp)
/* Test for variable selector and vector residing in register. */
__attribute__((noinline))
-vector int ci (vector int v, int i)
+vector int ci (vector int v, int i, int x)
{
return vec_insert (x, v, i);
}
/* Test for variable selector and vector residing in memory. */
__attribute__((noinline))
-vector int mci(vector int *vp, int i)
+vector int mci(vector int *vp, int i, int x)
{
return vec_insert (x, *vp, i);
}
@@ -90,7 +90,7 @@ int main (int argc, int *argv[]) {
abort ();
sv = s21 (sv, CONST0);
- if (sv [1] != CONST01)
+ if (sv [1] != CONST0)
abort ();
sv = s30 (sv, CONST1);
@@ -141,7 +141,7 @@ int main (int argc, int *argv[]) {
if (sv [1] != CONST2)
abort ();
- sv = mci (&sv, 16, CONST3;
+ sv = mci (&sv, 16, CONST3);
if (sv [0] != CONST3)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c
index 5f2ad905636..116802aeece 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c
@@ -40,22 +40,22 @@ vector int s30 (vector int v, int x)
}
/* Test for vector residing in memory. */
-vector int ms3 (vector int *vp)
+vector int ms3 (vector int *vp, int x)
{
return vec_insert (x, *vp, 3);
}
-vector int ms1(vector int *vp)
+vector int ms1 (vector int *vp, int x)
{
return vec_insert (x, *vp, 1);
}
-vector int ms21(vector int *vp)
+vector int ms21 (vector int *vp, int x)
{
return vec_insert (x, *vp, 21);
}
-vector int ms30(vector int *vp)
+vector int ms30 (vector int *vp, int x)
{
return vec_insert (x, *vp, 30);
}
@@ -64,14 +64,14 @@ vector int ms30(vector int *vp)
/* Test for variable selector and vector residing in register. */
__attribute__((noinline))
-vector int ci (vector int v, int i)
+vector int ci (vector int v, int i, int x)
{
return vec_insert (x, v, i);
}
/* Test for variable selector and vector residing in memory. */
__attribute__((noinline))
-vector int mci(vector int *vp, int i)
+vector int mci(vector int *vp, int i, int x)
{
return vec_insert (x, *vp, i);
}
@@ -90,7 +90,7 @@ int main (int argc, int *argv[]) {
abort ();
sv = s21 (sv, CONST0);
- if (sv [1] != CONST01)
+ if (sv [1] != CONST0)
abort ();
sv = s30 (sv, CONST1);
@@ -141,7 +141,7 @@ int main (int argc, int *argv[]) {
if (sv [1] != CONST2)
abort ();
- sv = mci (&sv, 16, CONST3;
+ sv = mci (&sv, 16, CONST3);
if (sv [0] != CONST3)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c
index c75c1c14fb1..1e57bc46cdd 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c
@@ -30,12 +30,12 @@ vector long long int e3 (vector long long int v, long long int x)
}
/* Test for vector residing in memory. */
-vector long long int me0 (vector long long int *vp)
+vector long long int me0 (vector long long int *vp, long long int x)
{
return vec_insert (x, *vp, 0);
}
-vector long long int me3 (vector long long int *vp)
+vector long long int me3 (vector long long int *vp, long long int x)
{
return vec_insert (x, *vp, 3);
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c
index c43b8b7dd36..3bf06085fb5 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c
@@ -30,12 +30,12 @@ vector long long int e3 (vector long long int v, long long int x)
}
/* Test for vector residing in memory. */
-vector long long int me0 (vector long long int *vp)
+vector long long int me0 (vector long long int *vp, long long int x)
{
return vec_insert (x, *vp, 0);
}
-vector long long int me3 (vector long long int *vp)
+vector long long int me3 (vector long long int *vp, long long int x)
{
return vec_insert (x, *vp, 3);
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c
index 907bcce9236..7dc6bd994e4 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c
@@ -9,7 +9,7 @@
#include <altivec.h>
/* Define this after PR89424 is addressed. */
-#undef PR89424
+#define PR89424
/* Define this after PR89626 is addressed. */
#undef PR89626
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c
index e1d791ded4f..168227214fc 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c
@@ -9,7 +9,7 @@
#include <altivec.h>
/* Define this after PR89424 is addressed. */
-#undef PR89424
+#define PR89424
/* Define this after PR89626 is addressed. */
#undef PR89626
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c
index a9771c50b74..43c6bed7695 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c
@@ -8,17 +8,7 @@
#include <altivec.h>
-/* Define this after PR89424 is addressed. */
-#undef PR89424
-
-/* Define this after PR89626 is addressed. */
-#undef PR89626
-
-#ifdef PR89626
-#define SIGNED
-#else
#define SIGNED signed
-#endif
extern void abort (void);
@@ -54,7 +44,6 @@ vector SIGNED __int128 me3 (vector SIGNED __int128 *vp, SIGNED __int128 x)
/* Test the same with variable indices. */
-#ifdef PR89424
/* Test for variable selector and vector residing in register. */
__attribute__((noinline))
vector SIGNED __int128
@@ -70,7 +59,6 @@ mei (vector SIGNED __int128 *vp, int i, SIGNED __int128 x)
{
return vec_insert (x, *vp, i);
}
-#endif
int main (int argc, char *argv[]) {
vector SIGNED __int128 dv = { CONST0 };
@@ -92,7 +80,6 @@ int main (int argc, char *argv[]) {
if (dv [0] != CONST3)
abort ();
-#ifdef PR89424
dv = ei (dv, 0, CONST1);
if (dv [0] != CONST1)
abort ();
@@ -102,7 +89,7 @@ int main (int argc, char *argv[]) {
abort ();
dv = ei (dv, 2, CONST3);
- if (dv [0] != CONST0, CONST3)
+ if (dv [0] != CONST3)
abort ();
dv = ei (dv, 3, CONST1);
@@ -124,7 +111,5 @@ int main (int argc, char *argv[]) {
dv = mei (&dv, 3, CONST2);
if (dv [0] != CONST2)
abort ();
-#endif
-
return 0;
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c
index 9e206247c54..257de552e64 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c
@@ -8,17 +8,7 @@
#include <altivec.h>
-/* Define this after PR89424 is addressed. */
-#undef PR89424
-
-/* Define this after PR89626 is addressed. */
-#undef PR89626
-
-#ifdef PR89626
-#define SIGNED
-#else
#define SIGNED signed
-#endif
extern void abort (void);
@@ -54,7 +44,6 @@ vector SIGNED __int128 me3 (vector SIGNED __int128 *vp, SIGNED __int128 x)
/* Test the same with variable indices. */
-#ifdef PR89424
/* Test for variable selector and vector residing in register. */
__attribute__((noinline))
vector SIGNED __int128
@@ -70,7 +59,6 @@ mei (vector SIGNED __int128 *vp, int i, SIGNED __int128 x)
{
return vec_insert (x, *vp, i);
}
-#endif
int main (int argc, char *argv[]) {
vector SIGNED __int128 dv = { CONST0 };
@@ -92,7 +80,6 @@ int main (int argc, char *argv[]) {
if (dv [0] != CONST3)
abort ();
-#ifdef PR89424
dv = ei (dv, 0, CONST1);
if (dv [0] != CONST1)
abort ();
@@ -102,7 +89,7 @@ int main (int argc, char *argv[]) {
abort ();
dv = ei (dv, 2, CONST3);
- if (dv [0] != CONST0, CONST3)
+ if (dv [0] != CONST3)
abort ();
dv = ei (dv, 3, CONST1);
@@ -124,7 +111,5 @@ int main (int argc, char *argv[]) {
dv = mei (&dv, 3, CONST2);
if (dv [0] != CONST2)
abort ();
-#endif
-
return 0;
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c
index 3472e15241a..5ba4bd59eb3 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c
@@ -81,7 +81,7 @@ int main (int argc, char *argv[]) {
vector float dv = { CONST0, CONST1, CONST2, CONST3 };
float d;
- dv = e0 (dv, CONT3);
+ dv = e0 (dv, CONST3);
if (dv [0] != CONST3)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c
index 5335b740012..63784a2e220 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c
@@ -81,7 +81,7 @@ int main (int argc, char *argv[]) {
vector float dv = { CONST0, CONST1, CONST2, CONST3 };
float d;
- dv = e0 (dv, CONT3);
+ dv = e0 (dv, CONST3);
if (dv [0] != CONST3)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c
index eca8f52ea73..eea4d406230 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c
@@ -6,6 +6,7 @@
instructions. Intentionally not specifying cpu in order to test
all code generation paths. */
+#include <stdio.h>
#include <altivec.h>
extern void abort (void);
@@ -95,66 +96,82 @@ int main (int argc, char *argv[]) {
CONST4, CONST5, CONST6, CONST7,
CONST8, CONST9, CONSTA, CONSTB,
CONSTC, CONSTD, CONSTE, CONSTF };
+ printf ("A\n");
cv = c0 (cv, CONST3);
if (cv [0] != CONST3)
abort ();
+ printf ("B\n");
cv = c9 (cv, CONST2);
if (cv [9] != CONST2)
abort ();
+ printf ("C\n");
cv = c21 (cv, CONSTF);
if (cv [5] != CONSTF)
abort ();
+ printf ("D\n");
cv = c30 (cv, CONST3);
if (cv [14] != CONST3)
abort ();
+ printf ("E\n");
cv = mc0 (&cv, CONST4);
if (cv [0] != CONST4)
abort ();
- cv = mc9 (&cv, CONSTE);
+ printf ("F\n");
+ cv = mc9 (&cv, CONST3);
if (cv [9] != CONST3)
abort ();
+ printf ("G\n");
cv = mc21 (&cv, CONST1);
if (cv [5] != CONST1)
abort ();
+ printf ("H\n");
cv = mc30 (&cv, CONSTC);
if (cv [14] != CONSTC)
abort ();
+ printf ("I\n");
cv = ci (cv, 8, CONSTD);
if (cv [8] != CONSTD)
abort ();
+ printf ("J\n");
cv = ci (cv, 13, CONST5);
if (cv [13] != CONST5)
abort ();
+ printf ("K\n");
cv = ci (cv, 23, CONST6);
if (cv [7] != CONST6)
abort ();
+ printf ("L\n");
cv = ci (cv, 31, CONST7);
if (cv [15] != CONST7)
abort ();
+ printf ("M\n");
cv = mci (&cv, 5, CONST8);
if (cv [5] != CONST8)
abort ();
+ printf ("N\n");
cv = mci (&cv, 12, CONST9);
if (cv [12] != CONST9)
abort ();
+ printf ("O\n");
cv = mci (&cv, 25, CONSTA);
if (cv [9] != CONSTA)
abort ();
+ printf ("P\n");
cv = mci (&cv, 16, CONSTB);
if (cv [0] != CONSTB)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c
index fbe574fbc85..f899e57f2d4 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c
@@ -115,7 +115,7 @@ int main (int argc, char *argv[]) {
if (cv [0] != CONST4)
abort ();
- cv = mc9 (&cv, CONSTE);
+ cv = mc9 (&cv, CONST3);
if (cv [9] != CONST3)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c
index 342b07cf28f..b95dbcdde15 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c
@@ -118,7 +118,7 @@ int main (int argc, unsigned short *argv[]) {
if (sv [6] != CONST0)
abort ();
- sv = ci (sv, 5), CONST1;
+ sv = ci (sv, 5, CONST1);
if (sv [5] != CONST1)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c
index 1de84e5cad6..b95dbcdde15 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c
@@ -1,6 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target vmx_hw } */
-/* { dg-options "-maltivec -O3" } */
+/* { dg-options "-maltivec" } */
/* This test should run the same on any target that supports altivec/vmx
instructions. Intentionally not specifying cpu in order to test
@@ -118,7 +118,7 @@ int main (int argc, unsigned short *argv[]) {
if (sv [6] != CONST0)
abort ();
- sv = ci (sv, 5), CONST1;
+ sv = ci (sv, 5, CONST1);
if (sv [5] != CONST1)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c
index 0150e6e8542..19932629d4b 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c
@@ -63,14 +63,14 @@ vector unsigned int ms30(vector unsigned int *vp, unsigned int x)
/* Test the same with variable indices. */
/* Test for variable selector and vector residing in register. */
-__attribute__((noinline), unsigned int x)
+__attribute__((noinline))
vector unsigned int ci (vector unsigned int v, int i, unsigned int x)
{
return vec_insert (x, v, i);
}
/* Test for variable selector and vector residing in memory. */
-__attribute__((noinline), unsigned int x)
+__attribute__((noinline))
vector unsigned int mci(vector unsigned int *vp, int i, unsigned int x)
{
return vec_insert (x, *vp, i);
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c
index 8144d968092..8c643aaafd3 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c
@@ -63,14 +63,14 @@ vector unsigned int ms30(vector unsigned int *vp, unsigned int x)
/* Test the same with variable indices. */
/* Test for variable selector and vector residing in register. */
-__attribute__((noinline), unsigned int x)
+__attribute__((noinline))
vector unsigned int ci (vector unsigned int v, int i, unsigned int x)
{
return vec_insert (x, v, i);
}
/* Test for variable selector and vector residing in memory. */
-__attribute__((noinline), unsigned int x)
+__attribute__((noinline))
vector unsigned int mci(vector unsigned int *vp, int i, unsigned int x)
{
return vec_insert (x, *vp, i);
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c
index 2ce34c366a1..3ff0dfe20b0 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c
@@ -51,7 +51,7 @@ me3 (vector unsigned long long int *vp, unsigned long long int x)
/* Test the same with variable indices. */
/* Test for variable selector and vector residing in register. */
-__attribute__((noinline), unsigned long long int x)
+__attribute__((noinline))
vector unsigned long long int
ei (vector unsigned long long int v, int i, unsigned long long int x)
{
@@ -59,6 +59,7 @@ ei (vector unsigned long long int v, int i, unsigned long long int x)
}
/* Test for variable selector and vector residing in memory. */
+__attribute__((noinline))
vector unsigned long long int
mei (vector unsigned long long int *vp, int i, unsigned long long int x)
{
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c
index 3ccba8db5ca..d0236df5308 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c
@@ -51,7 +51,7 @@ me3 (vector unsigned long long int *vp, unsigned long long int x)
/* Test the same with variable indices. */
/* Test for variable selector and vector residing in register. */
-__attribute__((noinline), unsigned long long int x)
+__attribute__((noinline))
vector unsigned long long int
ei (vector unsigned long long int v, int i, unsigned long long int x)
{
@@ -59,6 +59,7 @@ ei (vector unsigned long long int v, int i, unsigned long long int x)
}
/* Test for variable selector and vector residing in memory. */
+__attribute__((noinline))
vector unsigned long long int
mei (vector unsigned long long int *vp, int i, unsigned long long int x)
{
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c
index 638f5a1c904..12350c3ed7a 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c
@@ -9,7 +9,7 @@
#include <altivec.h>
/* Define this after PR89424 is addressed. */
-#undef PR89424
+#define PR89424
extern void abort (void);
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c
index 7b127a06c77..37fb7133ba0 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c
@@ -9,7 +9,7 @@
#include <altivec.h>
/* Define this after PR89424 is addressed. */
-#undef PR89424
+#define PR89424
extern void abort (void);
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c
index 3210f3e7694..e56d500515e 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c
@@ -8,9 +8,6 @@
#include <altivec.h>
-/* Define this after PR89424 is addressed. */
-#undef PR89424
-
extern void abort (void);
#define CONST0 (((unsigned __int128) 31415926539) << 60)
@@ -24,7 +21,7 @@ extern void abort (void);
/* Test for vector residing in register. */
vector unsigned __int128 e0 (vector unsigned __int128 v, unsigned __int128 x)
{
- return __builtin_vec_extract (v, 0);
+ return vec_insert (x, v, 0);
}
vector unsigned __int128 e3 (vector unsigned __int128 v, unsigned __int128 x)
@@ -47,7 +44,6 @@ me3 (vector unsigned __int128 *vp, unsigned __int128 x)
/* Test the same with variable indices. */
-#ifdef PR89424
/* Test for variable selector and vector residing in register. */
__attribute__((noinline))
vector unsigned __int128
@@ -63,7 +59,6 @@ mei (vector unsigned __int128 *vp, int i, unsigned __int128 x)
{
return vec_insert (x, *vp, i);
}
-#endif
int main (int argc, char *argv[]) {
vector unsigned __int128 dv = { CONST0 };
@@ -84,7 +79,6 @@ int main (int argc, char *argv[]) {
if (dv [0] != CONST3)
abort ();
-#ifdef PR89424
dv = ei (dv, 0, CONST0);
if (dv [0] != CONST0)
abort ();
@@ -116,7 +110,6 @@ int main (int argc, char *argv[]) {
dv = mei (&dv, 3, CONST3);
if (dv [0] != CONST3)
abort ();
-#endif
return 0;
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c
index 3a5dcc6dcb4..17c7b0e48a9 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c
@@ -8,9 +8,6 @@
#include <altivec.h>
-/* Define this after PR89424 is addressed. */
-#undef PR89424
-
extern void abort (void);
#define CONST0 (((unsigned __int128) 31415926539) << 60)
@@ -24,7 +21,7 @@ extern void abort (void);
/* Test for vector residing in register. */
vector unsigned __int128 e0 (vector unsigned __int128 v, unsigned __int128 x)
{
- return __builtin_vec_extract (v, 0);
+ return vec_insert (x, v, 0);
}
vector unsigned __int128 e3 (vector unsigned __int128 v, unsigned __int128 x)
@@ -47,7 +44,6 @@ me3 (vector unsigned __int128 *vp, unsigned __int128 x)
/* Test the same with variable indices. */
-#ifdef PR89424
/* Test for variable selector and vector residing in register. */
__attribute__((noinline))
vector unsigned __int128
@@ -63,7 +59,6 @@ mei (vector unsigned __int128 *vp, int i, unsigned __int128 x)
{
return vec_insert (x, *vp, i);
}
-#endif
int main (int argc, char *argv[]) {
vector unsigned __int128 dv = { CONST0 };
@@ -84,7 +79,6 @@ int main (int argc, char *argv[]) {
if (dv [0] != CONST3)
abort ();
-#ifdef PR89424
dv = ei (dv, 0, CONST0);
if (dv [0] != CONST0)
abort ();
@@ -116,7 +110,6 @@ int main (int argc, char *argv[]) {
dv = mei (&dv, 3, CONST3);
if (dv [0] != CONST3)
abort ();
-#endif
return 0;
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c
index 0d16d12b575..3bec1474954 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c
@@ -121,7 +121,7 @@ int main (int argc, char *argv[]) {
abort ();
cv = mc21 (&cv, CONST7);
- if (cv [5] != CONST57)
+ if (cv [5] != CONST7)
abort ();
cv = mc30 (&cv, CONST2);
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c
index 59fb500830a..1e70c521fec 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c
@@ -121,7 +121,7 @@ int main (int argc, char *argv[]) {
abort ();
cv = mc21 (&cv, CONST7);
- if (cv [5] != CONST57)
+ if (cv [5] != CONST7)
abort ();
cv = mc30 (&cv, CONST2);