aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/powerpc')
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-4.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-5.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-4.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-5.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-10.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-11.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-4.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-5.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-8.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-11.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-6.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-3.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-5.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-3.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-3.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-3.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-6.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-3.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c35
-rw-r--r--gcc/testsuite/gcc.target/powerpc/builtins-3.c32
-rw-r--r--gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c321
-rw-r--r--gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/cmpb-3.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c14
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-11.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-16.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-21.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-26.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-31.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-36.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-41.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-46.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-51.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-56.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-6.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-61.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-66.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-71.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-76.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-char.c22
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-int.c22
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-longlong.c22
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-short.c22
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-madd-double.c17
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-madd-float.c17
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-madd-short.c38
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-msum-char.c25
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-msum-short.c25
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-pack-double.c18
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-pack-int.c28
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-pack-longlong.c28
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-pack-short.c28
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr81622.c13
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c12
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c11
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vec-setup-double.c11
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vec-setup-long.c9
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vec-setup.h366
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-12.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-13.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c25
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c25
93 files changed, 1214 insertions, 108 deletions
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
index 45f0df89894..e19ad0b349a 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
@@ -12,5 +12,5 @@ compare_exponents_eq (double *exponent1_p, double *exponent2_p)
double exponent1 = *exponent1_p;
double exponent2 = *exponent2_p;
- return __builtin_vec_scalar_cmp_exp_eq (exponent1, exponent2); /* { dg-error "Builtin function __builtin_vsx_scalar_cmp_exp_dp_eq requires" } */
+ return __builtin_vec_scalar_cmp_exp_eq (exponent1, exponent2); /* { dg-error "builtin function __builtin_vsx_scalar_cmp_exp_dp_eq requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c
index 0ccf1ceea2a..cf0fafb5aad 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c
@@ -12,5 +12,5 @@ compare_exponents_gt (double *exponent1_p, double *exponent2_p)
double exponent1 = *exponent1_p;
double exponent2 = *exponent2_p;
- return __builtin_vec_scalar_cmp_exp_gt (exponent1, exponent2); /* { dg-error "Builtin function __builtin_vsx_scalar_cmp_exp_dp_gt requires" } */
+ return __builtin_vec_scalar_cmp_exp_gt (exponent1, exponent2); /* { dg-error "builtin function __builtin_vsx_scalar_cmp_exp_dp_gt requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c
index e453f236c66..592e320eb70 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c
@@ -12,5 +12,5 @@ compare_exponents_lt (double *exponent1_p, double *exponent2_p)
double exponent1 = *exponent1_p;
double exponent2 = *exponent2_p;
- return __builtin_vec_scalar_cmp_exp_lt (exponent1, exponent2); /* { dg-error "Builtin function __builtin_vsx_scalar_cmp_exp_dp_lt requires" } */
+ return __builtin_vec_scalar_cmp_exp_lt (exponent1, exponent2); /* { dg-error "builtin function __builtin_vsx_scalar_cmp_exp_dp_lt requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c
index dcedf0de887..e9a474e8e1b 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c
@@ -12,5 +12,5 @@ compare_exponents_unordered (double *exponent1_p, double *exponent2_p)
double exponent1 = *exponent1_p;
double exponent2 = *exponent2_p;
- return __builtin_vec_scalar_cmp_exp_unordered (exponent1, exponent2); /* { dg-error "Builtin function __builtin_vsx_scalar_cmp_exp_dp_unordered requires" } */
+ return __builtin_vec_scalar_cmp_exp_unordered (exponent1, exponent2); /* { dg-error "builtin function __builtin_vsx_scalar_cmp_exp_dp_unordered requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-1.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-1.c
index e2f045cdce8..0b805221d1b 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-1.c
@@ -12,7 +12,7 @@ get_exponent (double *p)
{
double source = *p;
- return __builtin_vec_scalar_extract_exp (source); /* { dg-error "Builtin function __builtin_vsx_scalar_extract_exp requires" } */
+ return __builtin_vec_scalar_extract_exp (source); /* { dg-error "builtin function __builtin_vsx_scalar_extract_exp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-2.c
index a60b54a6089..594d92cad99 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-2.c
@@ -15,7 +15,7 @@ get_exponent (double *p)
{
double source = *p;
- return scalar_extract_exp (source); /* { dg-error "Builtin function __builtin_vec_scalar_extract_exp not supported in this compiler configuration" } */
+ return scalar_extract_exp (source); /* { dg-error "builtin function __builtin_vec_scalar_extract_exp not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-4.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-4.c
index 502241581d9..d4dd43f5371 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-4.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-4.c
@@ -12,7 +12,7 @@ get_exponent (__ieee128 *p)
{
__ieee128 source = *p;
- return __builtin_vec_scalar_extract_exp (source); /* { dg-error "Builtin function __builtin_vsx_scalar_extract_expq requires" } */
+ return __builtin_vec_scalar_extract_exp (source); /* { dg-error "builtin function __builtin_vsx_scalar_extract_expq requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-5.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-5.c
index 07e0c1de7e3..569de683df0 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-5.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-5.c
@@ -15,7 +15,7 @@ get_exponent (__ieee128 *p)
{
__ieee128 source = *p;
- return scalar_extract_exp (source); /* { dg-error "Builtin function __builtin_vec_scalar_extract_exp not supported in this compiler configuration" } */
+ return scalar_extract_exp (source); /* { dg-error "builtin function __builtin_vec_scalar_extract_exp not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-1.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-1.c
index b2e5647673d..a856028a1aa 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-1.c
@@ -12,5 +12,5 @@ get_significand (double *p)
{
double source = *p;
- return __builtin_vec_scalar_extract_sig (source); /* { dg-error "Builtin function __builtin_vsx_scalar_extract_sig requires" } */
+ return __builtin_vec_scalar_extract_sig (source); /* { dg-error "builtin function __builtin_vsx_scalar_extract_sig requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-2.c
index 237bd027cab..cdf163d9f9c 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-2.c
@@ -13,5 +13,5 @@ get_significand (double *p)
{
double source = *p;
- return __builtin_vec_scalar_extract_sig (source); /* { dg-error "Builtin function __builtin_vec_scalar_extract_sig not supported in this compiler configuration" } */
+ return __builtin_vec_scalar_extract_sig (source); /* { dg-error "builtin function __builtin_vec_scalar_extract_sig not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-4.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-4.c
index 0c2ec4739f5..8b33c788db2 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-4.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-4.c
@@ -12,5 +12,5 @@ get_significand (__ieee128 *p)
{
__ieee128 source = *p;
- return __builtin_vec_scalar_extract_sig (source); /* { dg-error "Builtin function __builtin_vsx_scalar_extract_sigq requires" } */
+ return __builtin_vec_scalar_extract_sig (source); /* { dg-error "builtin function __builtin_vsx_scalar_extract_sigq requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-5.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-5.c
index 19ca4c4a09a..17ac4852984 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-5.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-5.c
@@ -13,5 +13,5 @@ get_significand (__ieee128 *p)
{
__ieee128 source = *p;
- return __builtin_vec_scalar_extract_sig (source); /* { dg-error "Builtin function __builtin_vec_scalar_extract_sig not supported in this compiler configuration" } */
+ return __builtin_vec_scalar_extract_sig (source); /* { dg-error "builtin function __builtin_vec_scalar_extract_sig not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-1.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-1.c
index f2b720f444b..37c8796f040 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-1.c
@@ -14,5 +14,5 @@ insert_exponent (unsigned long long int *significand_p,
unsigned long long int significand = *significand_p;
unsigned long long int exponent = *exponent_p;
- return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vsx_scalar_insert_exp requires" } */
+ return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "builtin function __builtin_vsx_scalar_insert_exp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-10.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-10.c
index e730556c5c9..096761fc2db 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-10.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-10.c
@@ -14,5 +14,5 @@ insert_exponent (__ieee128 *significand_p,
__ieee128 significand = *significand_p;
unsigned long long int exponent = *exponent_p;
- return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vsx_scalar_insert_exp_qp requires" } */
+ return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "builtin function __builtin_vsx_scalar_insert_exp_qp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-11.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-11.c
index d44e6ccec5b..188bdfeac62 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-11.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-11.c
@@ -17,5 +17,5 @@ insert_exponent (__ieee128 *significand_p,
__ieee128 significand = *significand_p;
unsigned long long int exponent = *exponent_p;
- return scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
+ return scalar_insert_exp (significand, exponent); /* { dg-error "builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-2.c
index 5044c81f069..c48d4e6885c 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-2.c
@@ -17,5 +17,5 @@ insert_exponent (unsigned long long int *significand_p,
unsigned long long int significand = *significand_p;
unsigned long long int exponent = *exponent_p;
- return scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
+ return scalar_insert_exp (significand, exponent); /* { dg-error "builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-4.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-4.c
index 8b72cec88d9..2d17691e263 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-4.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-4.c
@@ -14,5 +14,5 @@ insert_exponent (double *significand_p,
double significand = *significand_p;
unsigned long long int exponent = *exponent_p;
- return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vsx_scalar_insert_exp_dp requires" } */
+ return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "builtin function __builtin_vsx_scalar_insert_exp_dp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-5.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-5.c
index e831f20e589..f662fa86ced 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-5.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-5.c
@@ -17,5 +17,5 @@ insert_exponent (double *significand_p,
double significand = *significand_p;
unsigned long long int exponent = *exponent_p;
- return scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
+ return scalar_insert_exp (significand, exponent); /* { dg-error "builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-7.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-7.c
index fe565c8f416..08e95207794 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-7.c
@@ -14,5 +14,5 @@ insert_exponent (unsigned __int128 *significand_p,
unsigned __int128 significand = *significand_p;
unsigned long long int exponent = *exponent_p;
- return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vsx_scalar_insert_exp_q requires" } */
+ return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "builtin function __builtin_vsx_scalar_insert_exp_q requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-8.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-8.c
index 3a3f1c4aa82..ce6dd548727 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-8.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-8.c
@@ -17,5 +17,5 @@ insert_exponent (unsigned __int128 *significand_p, /* { dg-error "'__int128' is
unsigned __int128 significand = *significand_p; /* { dg-error "'__int128' is not supported on this target" } */
unsigned long long int exponent = *exponent_p;
- return scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
+ return scalar_insert_exp (significand, exponent); /* { dg-error "builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-11.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-11.c
index 0065b77746a..7562cc3027e 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-11.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-11.c
@@ -11,5 +11,5 @@ test_data_class (__ieee128 *p)
{
__ieee128 source = *p;
- return __builtin_vec_scalar_test_data_class (source, 3); /* { dg-error "Builtin function __builtin_vsx_scalar_test_data_class_qp requires" } */
+ return __builtin_vec_scalar_test_data_class (source, 3); /* { dg-error "builtin function __builtin_vsx_scalar_test_data_class_qp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-6.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-6.c
index 10405a386c0..81dbe392c9d 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-6.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-6.c
@@ -11,5 +11,5 @@ test_data_class (double *p)
{
double source = *p;
- return __builtin_vec_scalar_test_data_class (source, 3); /* { dg-error "Builtin function __builtin_vsx_scalar_test_data_class_dp requires" } */
+ return __builtin_vec_scalar_test_data_class (source, 3); /* { dg-error "builtin function __builtin_vsx_scalar_test_data_class_dp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-7.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-7.c
index a7482eff559..8d4716b191c 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-7.c
@@ -11,5 +11,5 @@ test_data_class (float *p)
{
float source = *p;
- return __builtin_vec_scalar_test_data_class (source, 3); /* { dg-error "Builtin function __builtin_vsx_scalar_test_data_class_sp requires" } */
+ return __builtin_vec_scalar_test_data_class (source, 3); /* { dg-error "builtin function __builtin_vsx_scalar_test_data_class_sp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-2.c
index 3d93376e4bd..236a895fc3b 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-2.c
@@ -11,5 +11,5 @@ test_neg (float *p)
{
float source = *p;
- return __builtin_vec_scalar_test_neg_sp (source); /* { dg-error "Builtin function __builtin_vsx_scalar_test_neg_sp requires" } */
+ return __builtin_vec_scalar_test_neg_sp (source); /* { dg-error "builtin function __builtin_vsx_scalar_test_neg_sp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-3.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-3.c
index 33971f6574c..af5eb8c633f 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-3.c
@@ -11,5 +11,5 @@ test_neg (double *p)
{
double source = *p;
- return __builtin_vec_scalar_test_neg_dp (source); /* { dg-error "Builtin function __builtin_vsx_scalar_test_neg_dp requires" } */
+ return __builtin_vec_scalar_test_neg_dp (source); /* { dg-error "builtin function __builtin_vsx_scalar_test_neg_dp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-5.c b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-5.c
index 041a4a1c820..1018296cb4d 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-5.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-5.c
@@ -11,5 +11,5 @@ test_neg (__ieee128 *p)
{
__ieee128 source = *p;
- return __builtin_vec_scalar_test_neg_qp (source); /* { dg-error "Builtin function __builtin_vsx_scalar_test_neg_qp requires" } */
+ return __builtin_vec_scalar_test_neg_qp (source); /* { dg-error "builtin function __builtin_vsx_scalar_test_neg_qp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c
index 1462e4797bf..4b8ad56e21b 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c
@@ -10,5 +10,5 @@ get_exponents (__vector double *p)
{
__vector double source = *p;
- return __builtin_vec_extract_exp (source); /* { dg-error "Builtin function __builtin_vsx_extract_exp_dp requires" } */
+ return __builtin_vec_extract_exp (source); /* { dg-error "builtin function __builtin_vsx_extract_exp_dp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-3.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-3.c
index 15dc0dde7ad..5b1637bce0c 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-3.c
@@ -10,5 +10,5 @@ get_exponents (__vector float *p)
{
__vector float source = *p;
- return __builtin_vec_extract_exp (source); /* { dg-error "Builtin function __builtin_vsx_extract_exp_sp requires" } */
+ return __builtin_vec_extract_exp (source); /* { dg-error "builtin function __builtin_vsx_extract_exp_sp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-2.c
index c4088cfc67e..c26739c5931 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-2.c
@@ -10,5 +10,5 @@ get_significands (__vector double *p)
{
__vector double source = *p;
- return __builtin_vec_extract_sig (source); /* { dg-error "Builtin function __builtin_vsx_extract_sig_dp requires" } */
+ return __builtin_vec_extract_sig (source); /* { dg-error "builtin function __builtin_vsx_extract_sig_dp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-3.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-3.c
index 0adbbc25ee2..f01300fae64 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-3.c
@@ -10,5 +10,5 @@ get_significands (__vector float *p)
{
__vector float source = *p;
- return __builtin_vec_extract_sig (source); /* { dg-error "Builtin function __builtin_vsx_extract_sig_sp requires" } */
+ return __builtin_vec_extract_sig (source); /* { dg-error "builtin function __builtin_vsx_extract_sig_sp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-2.c
index 1a02bf2d81d..afb7b930eb4 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-2.c
@@ -12,5 +12,5 @@ make_floats (__vector unsigned int *significands_p,
__vector unsigned int significands = *significands_p;
__vector unsigned int exponents = *exponents_p;
- return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "Builtin function __builtin_vsx_insert_exp_sp requires" } */
+ return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "builtin function __builtin_vsx_insert_exp_sp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-3.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-3.c
index 97d44719943..c612b250205 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-3.c
@@ -12,5 +12,5 @@ make_doubles (__vector unsigned long long int *significands_p,
__vector unsigned long long int significands = *significands_p;
__vector unsigned long long int exponents = *exponents_p;
- return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "Builtin function __builtin_vsx_insert_exp_dp requires" } */
+ return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "builtin function __builtin_vsx_insert_exp_dp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-6.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-6.c
index 5a76af7ed67..f5790cd9c8d 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-6.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-6.c
@@ -12,5 +12,5 @@ make_floats (__vector float *significands_p,
__vector float significands = *significands_p;
__vector unsigned int exponents = *exponents_p;
- return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "Builtin function __builtin_vsx_insert_exp_sp requires" } */
+ return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "builtin function __builtin_vsx_insert_exp_sp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-7.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-7.c
index 8655818fc40..90de306500a 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-7.c
@@ -12,5 +12,5 @@ make_doubles (__vector double *significands_p,
__vector double significands = *significands_p;
__vector unsigned long long int exponents = *exponents_p;
- return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "Builtin function __builtin_vsx_insert_exp_dp requires" } */
+ return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "builtin function __builtin_vsx_insert_exp_dp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-2.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-2.c
index c7e236fdb82..f60a148cdb1 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-2.c
@@ -10,5 +10,5 @@ get_data_class_flags (__vector double *p)
{
__vector double source = *p;
- return __builtin_vec_test_data_class (source, 0x37); /* { dg-error "Builtin function __builtin_vsx_test_data_class_dp requires" } */
+ return __builtin_vec_test_data_class (source, 0x37); /* { dg-error "builtin function __builtin_vsx_test_data_class_dp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-3.c b/gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-3.c
index 9a6c069ac11..2e2a99a6904 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-3.c
@@ -10,5 +10,5 @@ get_data_class_flags (__vector float *p)
{
__vector float source = *p;
- return __builtin_vec_test_data_class (source, 0x37); /* { dg-error "Builtin function __builtin_vsx_test_data_class_sp requires" } */
+ return __builtin_vec_test_data_class (source, 0x37); /* { dg-error "builtin function __builtin_vsx_test_data_class_sp requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c b/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
index 3baa1d85442..bc1c8508203 100644
--- a/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
+++ b/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
@@ -85,6 +85,30 @@ test_vss_mradds_vss_vss (vector signed short x, vector signed short y,
return vec_mradds (x, y, z);
}
+vector signed long long
+test_vsll_mule_vsi_vsi (vector signed int x, vector signed int y)
+{
+ return vec_mule (x, y);
+}
+
+vector unsigned long long
+test_vull_mule_vui_vui (vector unsigned int x, vector unsigned int y)
+{
+ return vec_mule (x, y);
+}
+
+vector signed long long
+test_vsll_mulo_vsi_vsi (vector signed int x, vector signed int y)
+{
+ return vec_mulo (x, y);
+}
+
+vector unsigned long long
+test_vull_mulo_vui_vui (vector unsigned int x, vector unsigned int y)
+{
+ return vec_mulo (x, y);
+}
+
/* Expected test results:
test_eq_long_long 1 vcmpequd inst
@@ -98,7 +122,12 @@ test_vss_mradds_vss_vss (vector signed short x, vector signed short y,
test_unsigned_int_popcnt_signed_int 2 vpopcntw
test_unsigned_int_popcnt_unsigned_int 1 vpopcntd
test_unsigned_long_long_popcnt_unsigned_long 1 vpopcntd
- test_vss_mradds_vss_vsss 1 vmhraddshs */
+ test_vss_mradds_vss_vsss 1 vmhraddshs
+ test_vsll_mulo_vsi_vsi 1 vmulosw
+ test_vull_mulo_vui_vui 1 vmulouw
+ test_vsll_mule_vsi_vsi 1 vmulesw
+ test_vull_mule_vui_vui 1 vmuleuw
+ */
/* { dg-final { scan-assembler-times "vcmpequd" 1 } } */
/* { dg-final { scan-assembler-times "vpkudum" 1 } } */
@@ -109,3 +138,7 @@ test_vss_mradds_vss_vss (vector signed short x, vector signed short y,
/* { dg-final { scan-assembler-times "vpopcntw" 2 } } */
/* { dg-final { scan-assembler-times "vpopcntd" 2 } } */
/* { dg-final { scan-assembler-times "vmhraddshs" 1 } } */
+/* { dg-final { scan-assembler-times "vmulosw" 1 } } */
+/* { dg-final { scan-assembler-times "vmulouw" 1 } } */
+/* { dg-final { scan-assembler-times "vmulesw" 1 } } */
+/* { dg-final { scan-assembler-times "vmuleuw" 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3.c b/gcc/testsuite/gcc.target/powerpc/builtins-3.c
index 00fa6ec0274..42153da63b4 100644
--- a/gcc/testsuite/gcc.target/powerpc/builtins-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/builtins-3.c
@@ -112,30 +112,6 @@ test_vull_slo_vull_vuc (vector unsigned long long x, vector unsigned char y)
return vec_slo (x, y);
}
-vector signed long long
-test_vsll_mule_vsi_vsi (vector signed int x, vector signed int y)
-{
- return vec_mule (x, y);
-}
-
-vector unsigned long long
-test_vull_mule_vui_vui (vector unsigned int x, vector unsigned int y)
-{
- return vec_mule (x, y);
-}
-
-vector signed long long
-test_vsll_mulo_vsi_vsi (vector signed int x, vector signed int y)
-{
- return vec_mulo (x, y);
-}
-
-vector unsigned long long
-test_vull_mulo_vui_vui (vector unsigned int x, vector unsigned int y)
-{
- return vec_mulo (x, y);
-}
-
vector signed char
test_vsc_sldw_vsc_vsc (vector signed char x, vector signed char y)
{
@@ -207,10 +183,6 @@ test_vul_sldw_vul_vul (vector unsigned long long x,
test_vsll_slo_vsll_vuc 1 vslo
test_vull_slo_vsll_vsc 1 vslo
test_vull_slo_vsll_vuc 1 vslo
- test_vsll_mulo_vsi_vsi 1 vmulosw
- test_vull_mulo_vui_vui 1 vmulouw
- test_vsll_mule_vsi_vsi 1 vmulesw
- test_vull_mule_vui_vui 1 vmuleuw
test_vsc_mulo_vsc_vsc 1 xxsldwi
test_vuc_mulo_vuc_vuc 1 xxsldwi
test_vssi_mulo_vssi_vssi 1 xxsldwi
@@ -236,8 +208,4 @@ test_vul_sldw_vul_vul (vector unsigned long long x,
/* { dg-final { scan-assembler-times "xvnegsp" 1 } } */
/* { dg-final { scan-assembler-times "xvnegdp" 1 } } */
/* { dg-final { scan-assembler-times "vslo" 4 } } */
-/* { dg-final { scan-assembler-times "vmulosw" 1 } } */
-/* { dg-final { scan-assembler-times "vmulouw" 1 } } */
-/* { dg-final { scan-assembler-times "vmulesw" 1 } } */
-/* { dg-final { scan-assembler-times "vmuleuw" 1 } } */
/* { dg-final { scan-assembler-times "xxsldwi" 8 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c
new file mode 100644
index 00000000000..ed37424ca86
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c
@@ -0,0 +1,321 @@
+/* { dg-do run } */
+/* { dg-require-effective-target vsx_hw } */
+/* { dg-options "-maltivec -mvsx" } */
+
+#include <inttypes.h>
+#include <altivec.h> // vector
+#include <stdio.h>
+
+void abort (void);
+
+int main() {
+ int i;
+ signed char data_c[100];
+ unsigned char data_uc[100];
+
+ signed short int data_ssi[100];
+ unsigned short int data_usi[100];
+
+ signed int data_si[100];
+ unsigned int data_ui[100];
+
+ signed long long data_sll[100];
+ unsigned long long data_ull[100];
+
+ float data_f[100];
+ double data_d[100];
+
+ signed long long disp;
+
+ vector signed char vec_c_expected1, vec_c_expected2, vec_c_result1, vec_c_result2;
+ vector unsigned char vec_uc_expected1, vec_uc_expected2,
+ vec_uc_result1, vec_uc_result2;
+ vector signed short int vec_ssi_expected1, vec_ssi_expected2,
+ vec_ssi_result1, vec_ssi_result2;
+ vector unsigned short int vec_usi_expected1, vec_usi_expected2,
+ vec_usi_result1, vec_usi_result2;
+ vector signed int vec_si_expected1, vec_si_expected2, vec_si_result1,
+ vec_si_result2;
+ vector unsigned int vec_ui_expected1, vec_ui_expected2, vec_ui_result1,
+ vec_ui_result2;
+ vector signed long long vec_sll_expected1, vec_sll_expected2,
+ vec_sll_result1, vec_sll_result2;
+ vector unsigned long long vec_ull_expected1, vec_ull_expected2,
+ vec_ull_result1, vec_ull_result2;
+ vector float vec_f_expected1, vec_f_expected2, vec_f_result1, vec_f_result2;
+ vector double vec_d_expected1, vec_d_expected2, vec_d_result1, vec_d_result2;
+ char buf[20];
+ signed long long zero = (signed long long) 0;
+
+ for (i = 0; i < 100; i++)
+ {
+ data_c[i] = i;
+ data_uc[i] = i+1;
+ data_ssi[i] = i+10;
+ data_usi[i] = i+11;
+ data_si[i] = i+100;
+ data_ui[i] = i+101;
+ data_sll[i] = i+1000;
+ data_ull[i] = i+1001;
+ data_f[i] = i+100000.0;
+ data_d[i] = i+1000000.0;
+ }
+
+ disp = 0;
+#ifdef __BIG_ENDIAN__
+ printf("BIG ENDIAN\n");
+ vec_c_expected1 = (vector signed char){0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15};
+#else
+ printf("LITTLE ENDIAN\n");
+ vec_c_expected1 = (vector signed char){15, 14, 13, 12, 11, 10, 9, 8,
+ 7, 6, 5, 4, 3, 2, 1, 0};
+#endif
+ vec_c_result1 = vec_xl_be (0, data_c);
+
+ disp = 1;
+
+#ifdef __BIG_ENDIAN__
+ vec_c_expected2 = (vector signed char){1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16};
+#else
+ vec_c_expected2 = (vector signed char){16, 15, 14, 13, 12, 11, 10, 9,
+ 8, 7, 6, 5, 4, 3, 2, 1};
+#endif
+
+ vec_c_result2 = vec_xl_be (disp, data_c);
+
+#ifdef __BIG_ENDIAN__
+ vec_uc_expected1 = (vector unsigned char){1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16};
+#else
+ vec_uc_expected1 = (vector unsigned char){16, 15, 14, 13, 12, 11, 10, 9,
+ 8, 7, 6, 5, 4, 3, 2, 1};
+#endif
+
+ vec_uc_result1 = vec_xl_be (0, data_uc);
+
+#ifdef __BIG_ENDIAN__
+ vec_uc_expected2 = (vector unsigned char){2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17};
+#else
+ vec_uc_expected2 = (vector unsigned char){17, 16, 15, 14, 13, 12, 11, 10,
+ 9, 8, 7, 6, 5, 4, 3, 2};
+#endif
+
+ vec_uc_result2 = vec_xl_be (disp, data_uc);
+
+ for (i = 0; i < 16; i++)
+ {
+ if (vec_c_result1[i] != vec_c_expected1[i])
+ abort ();
+
+ if (vec_c_result2[i] != vec_c_expected2[i])
+ abort ();
+
+ if (vec_uc_result1[i] != vec_uc_expected1[i])
+ abort ();
+
+ if (vec_uc_result2[i] != vec_uc_expected2[i])
+ abort ();
+ }
+
+ vec_ssi_result1 = vec_xl_be (zero, data_ssi);
+
+#ifdef __BIG_ENDIAN__
+ vec_ssi_expected1 = (vector signed short){10, 11, 12, 13, 14, 15, 16, 17};
+#else
+ vec_ssi_expected1 = (vector signed short){17, 16, 15, 14, 13, 12, 11, 10};
+#endif
+
+ disp = 2;
+ vec_ssi_result2 = vec_xl_be (disp, data_ssi);
+
+#ifdef __BIG_ENDIAN__
+ vec_ssi_expected2 = (vector signed short){11, 12, 13, 14, 15, 16, 17, 18};
+#else
+ vec_ssi_expected2 = (vector signed short){18, 17, 16, 15, 14, 13, 12, 11};
+#endif
+
+ vec_usi_result1 = vec_xl_be (zero, data_usi);
+
+#ifdef __BIG_ENDIAN__
+ vec_usi_expected1 = (vector unsigned short){11, 12, 13, 14, 15, 16, 17, 18};
+#else
+ vec_usi_expected1 = (vector unsigned short){18, 17, 16, 15, 14, 13, 12, 11};
+#endif
+
+ disp = 2;
+ vec_usi_result2 = vec_xl_be (disp, data_usi);
+
+#ifdef __BIG_ENDIAN__
+ vec_usi_expected2 = (vector unsigned short){12, 13, 14, 15, 16, 17, 18, 19};
+#else
+ vec_usi_expected2 = (vector unsigned short){19, 18, 17, 16, 15, 14, 13, 12};
+#endif
+
+ for (i = 0; i < 8; i++)
+ {
+ if (vec_ssi_result1[i] != vec_ssi_expected1[i])
+ abort ();
+
+ if (vec_ssi_result2[i] != vec_ssi_expected2[i])
+ abort ();
+
+ if (vec_usi_result1[i] != vec_usi_expected1[i])
+ abort ();
+
+ if (vec_usi_result2[i] != vec_usi_expected2[i])
+ abort ();
+ }
+
+ vec_si_result1 = vec_xl_be (zero, data_si);
+
+#ifdef __BIG_ENDIAN__
+ vec_si_expected1 = (vector int){100, 101, 102, 103};
+#else
+ vec_si_expected1 = (vector int){103, 102, 101, 100};
+#endif
+
+ disp = 4;
+ vec_si_result2 = vec_xl_be (disp, data_si);
+
+#ifdef __BIG_ENDIAN__
+ vec_si_expected2 = (vector int){101, 102, 103, 104};
+#else
+ vec_si_expected2 = (vector int){104, 103, 102, 101};
+#endif
+
+ vec_ui_result1 = vec_xl_be (zero, data_ui);
+
+#ifdef __BIG_ENDIAN__
+ vec_ui_expected1 = (vector unsigned int){101, 102, 103, 104};
+#else
+ vec_ui_expected1 = (vector unsigned int){104, 103, 102, 101};
+#endif
+
+ disp = 4;
+ vec_ui_result2 = vec_xl_be (disp, data_ui);
+
+#ifdef __BIG_ENDIAN__
+ vec_ui_expected2 = (vector unsigned int){102, 103, 104, 105};
+#else
+ vec_ui_expected2 = (vector unsigned int){105, 104, 103, 102};
+#endif
+
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_si_result1[i] != vec_si_expected1[i])
+ abort ();
+
+ if (vec_si_result2[i] != vec_si_expected2[i])
+ abort ();
+
+ if (vec_ui_result1[i] != vec_ui_expected1[i])
+ abort ();
+
+ if (vec_ui_result2[i] != vec_ui_expected2[i])
+ abort ();
+ }
+
+ vec_sll_result1 = vec_xl_be (zero, data_sll);
+
+#ifdef __BIG_ENDIAN__
+ vec_sll_expected1 = (vector signed long long){1000, 1001};
+#else
+ vec_sll_expected1 = (vector signed long long){1001, 1000};
+#endif
+
+ disp = 8;
+ vec_sll_result2 = vec_xl_be (disp, data_sll);
+
+#ifdef __BIG_ENDIAN__
+ vec_sll_expected2 = (vector signed long long){1001, 1002};
+#else
+ vec_sll_expected2 = (vector signed long long){1002, 1001};
+#endif
+
+ vec_ull_result1 = vec_xl_be (zero, data_ull);
+
+#ifdef __BIG_ENDIAN__
+ vec_ull_expected1 = (vector unsigned long long){1001, 1002};
+#else
+ vec_ull_expected1 = (vector unsigned long long){1002, 1001};
+#endif
+
+ disp = 8;
+ vec_ull_result2 = vec_xl_be (disp, data_ull);
+
+#ifdef __BIG_ENDIAN__
+ vec_ull_expected2 = (vector unsigned long long){1002, 1003};
+#else
+ vec_ull_expected2 = (vector unsigned long long){1003, 1002};
+#endif
+
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_sll_result1[i] != vec_sll_expected1[i])
+ abort ();
+
+ if (vec_sll_result2[i] != vec_sll_expected2[i])
+ abort ();
+
+ if (vec_ull_result1[i] != vec_ull_expected1[i])
+ abort ();
+
+ if (vec_ull_result2[i] != vec_ull_expected2[i])
+ abort ();
+ }
+
+ vec_f_result1 = vec_xl_be (zero, data_f);
+
+#ifdef __BIG_ENDIAN__
+ vec_f_expected1 = (vector float){100000.0, 100001.0, 100002.0, 100003.0};
+#else
+ vec_f_expected1 = (vector float){100003.0, 100002.0, 100001.0, 100000.0};
+#endif
+
+ disp = 4;
+ vec_f_result2 = vec_xl_be (disp, data_f);
+
+#ifdef __BIG_ENDIAN__
+ vec_f_expected2 = (vector float){100001.0, 100002.0, 100003.0, 100004.0};
+#else
+ vec_f_expected2 = (vector float){100004.0, 100003.0, 100002.0, 100001.0};
+#endif
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_f_result1[i] != vec_f_expected1[i])
+ abort ();
+ if (vec_f_result2[i] != vec_f_expected2[i])
+ abort ();
+ }
+
+ vec_d_result1 = vec_xl_be (zero, data_d);
+
+#ifdef __BIG_ENDIAN__
+ vec_d_expected1 = (vector double){1000000.0, 1000001.0};
+#else
+ vec_d_expected1 = (vector double){1000001.0, 1000000.0};
+#endif
+
+ disp = 8;
+ vec_d_result2 = vec_xl_be (disp, data_d);
+
+#ifdef __BIG_ENDIAN__
+ vec_d_expected2 = (vector double){1000001.0, 1000002.0};
+#else
+ vec_d_expected2 = (vector double){1000002.0, 1000001.0};
+#endif
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_d_result1[i] != vec_d_expected1[i])
+ abort ();
+ if (vec_d_result2[i] != vec_d_expected2[i])
+ abort ();
+ }
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c b/gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
index 52107c716c5..28b19820e57 100644
--- a/gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
@@ -18,5 +18,5 @@ test_byte_in_either_range (unsigned char b,
range_encoding = ((first_hi_bound << 24) | (first_lo_bound << 16)
| (second_hi_bound << 8) | second_lo_bound);
- return __builtin_byte_in_either_range (b, range_encoding); /* { dg-error "Builtin function __builtin_scalar_byte_in_either_range requires" } */
+ return __builtin_byte_in_either_range (b, range_encoding); /* { dg-error "builtin function __builtin_scalar_byte_in_either_range requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c b/gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c
index aaf46d0f8f3..e002c44dd8f 100644
--- a/gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c
@@ -11,6 +11,6 @@ test_byte_in_range (unsigned char b,
unsigned char low_range, unsigned char high_range)
{
unsigned int range_encoding = (high_range << 8) | low_range;
- return __builtin_byte_in_range (b, range_encoding); /* { dg-error "Builtin function __builtin_scalar_byte_in_range requires" } */
+ return __builtin_byte_in_range (b, range_encoding); /* { dg-error "builtin function __builtin_scalar_byte_in_range requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c b/gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c
index 80c3a7d1a4d..bd5b50366e3 100644
--- a/gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c
@@ -10,5 +10,5 @@
int
test_byte_in_set (unsigned char b, unsigned long long set_members)
{
- return __builtin_byte_in_set (b, set_members); /* { dg-error "Builtin function __builtin_scalar_byte_in_set requires" } */
+ return __builtin_byte_in_set (b, set_members); /* { dg-error "builtin function __builtin_scalar_byte_in_set requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c b/gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c
index 1915c707162..b2a6a98c8e3 100644
--- a/gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c
@@ -12,5 +12,5 @@
int
test_byte_in_set (unsigned char b, unsigned long long set_members)
{
- return __builtin_byte_in_set (b, set_members); /* { dg-error "Builtin function __builtin_byte_in_set not supported in this compiler configuration" } */
+ return __builtin_byte_in_set (b, set_members); /* { dg-error "builtin function __builtin_byte_in_set not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/cmpb-3.c b/gcc/testsuite/gcc.target/powerpc/cmpb-3.c
index edb62f19b83..a3b72581434 100644
--- a/gcc/testsuite/gcc.target/powerpc/cmpb-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/cmpb-3.c
@@ -9,7 +9,7 @@ void abort ();
long long int
do_compare (long long int a, long long int b)
{
- return __builtin_cmpb (a, b); /* { dg-error "Builtin function __builtin_cmpb not supported in this compiler configuration" } */
+ return __builtin_cmpb (a, b); /* { dg-error "builtin function __builtin_cmpb not supported in this compiler configuration" } */
}
void expect (long long int pattern, long long int value)
diff --git a/gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c b/gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c
index f3d58b0c80b..4df13c7cf3c 100644
--- a/gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c
@@ -6,21 +6,21 @@
void use_builtins_d (__vector unsigned long long *p, __vector unsigned long long *q, __vector unsigned long long *r, __vector unsigned long long *s)
{
- p[0] = __builtin_crypto_vcipher (q[0], r[0]); /* { dg-error "Builtin function __builtin_crypto_vcipher is not supported with the current options" } */
- p[1] = __builtin_crypto_vcipherlast (q[1], r[1]); /* { dg-error "Builtin function __builtin_crypto_vcipherlast is not supported with the current options" } */
- p[2] = __builtin_crypto_vncipher (q[2], r[2]); /* { dg-error "Builtin function __builtin_crypto_vncipher is not supported with the current options" } */
- p[3] = __builtin_crypto_vncipherlast (q[3], r[3]); /* { dg-error "Builtin function __builtin_crypto_vncipherlast is not supported with the current options" } */
+ p[0] = __builtin_crypto_vcipher (q[0], r[0]); /* { dg-error "builtin function __builtin_crypto_vcipher is not supported with the current options" } */
+ p[1] = __builtin_crypto_vcipherlast (q[1], r[1]); /* { dg-error "builtin function __builtin_crypto_vcipherlast is not supported with the current options" } */
+ p[2] = __builtin_crypto_vncipher (q[2], r[2]); /* { dg-error "builtin function __builtin_crypto_vncipher is not supported with the current options" } */
+ p[3] = __builtin_crypto_vncipherlast (q[3], r[3]); /* { dg-error "builtin function __builtin_crypto_vncipherlast is not supported with the current options" } */
p[4] = __builtin_crypto_vpermxor (q[4], r[4], s[4]);
p[5] = __builtin_crypto_vpmsumd (q[5], r[5]);
- p[6] = __builtin_crypto_vshasigmad (q[6], 1, 15); /* { dg-error "Builtin function __builtin_crypto_vshasigmad is not supported with the current options" } */
- p[7] = __builtin_crypto_vsbox (q[7]); /* { dg-error "Builtin function __builtin_crypto_vsbox is not supported with the current options" } */
+ p[6] = __builtin_crypto_vshasigmad (q[6], 1, 15); /* { dg-error "builtin function __builtin_crypto_vshasigmad is not supported with the current options" } */
+ p[7] = __builtin_crypto_vsbox (q[7]); /* { dg-error "builtin function __builtin_crypto_vsbox is not supported with the current options" } */
}
void use_builtins_w (__vector unsigned int *p, __vector unsigned int *q, __vector unsigned int *r, __vector unsigned int *s)
{
p[0] = __builtin_crypto_vpermxor (q[0], r[0], s[0]);
p[1] = __builtin_crypto_vpmsumw (q[1], r[1]);
- p[2] = __builtin_crypto_vshasigmaw (q[2], 1, 15); /* { dg-error "Builtin function __builtin_crypto_vshasigmaw is not supported with the current options" } */
+ p[2] = __builtin_crypto_vshasigmaw (q[2], 1, 15); /* { dg-error "builtin function __builtin_crypto_vshasigmaw is not supported with the current options" } */
}
void use_builtins_h (__vector unsigned short *p, __vector unsigned short *q, __vector unsigned short *r, __vector unsigned short *s)
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
index d634a2acd04..7a791af07f8 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
@@ -10,6 +10,6 @@ int doTestBCDSignificance (_Decimal64 *p)
{
_Decimal64 source = *p;
- return __builtin_dfp_dtstsfi_lt (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_lt_dd requires" } */
+ return __builtin_dfp_dtstsfi_lt (5, source); /* { dg-error "builtin function __builtin_dtstsfi_lt_dd requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-11.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-11.c
index 523facea156..4a57a208b1f 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-11.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-11.c
@@ -10,6 +10,6 @@ int doTestBCDSignificance (_Decimal64 *p)
{
_Decimal64 source = *p;
- return __builtin_dfp_dtstsfi_lt_dd (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_lt_dd requires" } */
+ return __builtin_dfp_dtstsfi_lt_dd (5, source); /* { dg-error "builtin function __builtin_dtstsfi_lt_dd requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-16.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-16.c
index dcd4a16635f..b6998f2025a 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-16.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-16.c
@@ -10,7 +10,7 @@ int doTestBCDSignificance (_Decimal128 *p)
{
_Decimal128 source = *p;
- return __builtin_dfp_dtstsfi_lt_td (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_lt_td requires" } */
+ return __builtin_dfp_dtstsfi_lt_td (5, source); /* { dg-error "builtin function __builtin_dtstsfi_lt_td requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-21.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-21.c
index 975843c6a02..0f6d70e7e60 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-21.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-21.c
@@ -10,6 +10,6 @@ int doTestBCDSignificance (_Decimal64 *p)
{
_Decimal64 source = *p;
- return __builtin_dfp_dtstsfi_gt (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_gt_dd requires" } */
+ return __builtin_dfp_dtstsfi_gt (5, source); /* { dg-error "builtin function __builtin_dtstsfi_gt_dd requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-26.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-26.c
index e30c2f4ac79..f47cbcee383 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-26.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-26.c
@@ -10,7 +10,7 @@ int doTestBCDSignificance (_Decimal128 *p)
{
_Decimal128 source = *p;
- return __builtin_dfp_dtstsfi_gt (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_gt_td requires" } */
+ return __builtin_dfp_dtstsfi_gt (5, source); /* { dg-error "builtin function __builtin_dtstsfi_gt_td requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-31.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-31.c
index a95dcb8dbb6..bce88ca5d30 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-31.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-31.c
@@ -10,6 +10,6 @@ int doTestBCDSignificance (_Decimal64 *p)
{
_Decimal64 source = *p;
- return __builtin_dfp_dtstsfi_gt_dd (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_gt_dd requires" } */
+ return __builtin_dfp_dtstsfi_gt_dd (5, source); /* { dg-error "builtin function __builtin_dtstsfi_gt_dd requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-36.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-36.c
index 00be5389310..5cdfa1be7e2 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-36.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-36.c
@@ -10,7 +10,7 @@ int doTestBCDSignificance (_Decimal128 *p)
{
_Decimal128 source = *p;
- return __builtin_dfp_dtstsfi_gt_td (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_gt_td requires" } */
+ return __builtin_dfp_dtstsfi_gt_td (5, source); /* { dg-error "builtin function __builtin_dtstsfi_gt_td requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-41.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-41.c
index c84387dc38b..c3b84332316 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-41.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-41.c
@@ -10,6 +10,6 @@ int doTestBCDSignificance (_Decimal64 *p)
{
_Decimal64 source = *p;
- return __builtin_dfp_dtstsfi_eq (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_eq_dd requires" } */
+ return __builtin_dfp_dtstsfi_eq (5, source); /* { dg-error "builtin function __builtin_dtstsfi_eq_dd requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-46.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-46.c
index f1d6e2de80f..fbcbbdb0abc 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-46.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-46.c
@@ -10,7 +10,7 @@ int doTestBCDSignificance (_Decimal128 *p)
{
_Decimal128 source = *p;
- return __builtin_dfp_dtstsfi_eq (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_eq_td requires" } */
+ return __builtin_dfp_dtstsfi_eq (5, source); /* { dg-error "builtin function __builtin_dtstsfi_eq_td requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-51.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-51.c
index 58f542673de..71839922eec 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-51.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-51.c
@@ -10,6 +10,6 @@ int doTestBCDSignificance (_Decimal64 *p)
{
_Decimal64 source = *p;
- return __builtin_dfp_dtstsfi_eq_dd (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_eq_dd requires" } */
+ return __builtin_dfp_dtstsfi_eq_dd (5, source); /* { dg-error "builtin function __builtin_dtstsfi_eq_dd requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-56.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-56.c
index 7efb1a3d0f1..1b894ff669c 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-56.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-56.c
@@ -10,7 +10,7 @@ int doTestBCDSignificance (_Decimal128 *p)
{
_Decimal128 source = *p;
- return __builtin_dfp_dtstsfi_eq_td (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_eq_td requires" } */
+ return __builtin_dfp_dtstsfi_eq_td (5, source); /* { dg-error "builtin function __builtin_dtstsfi_eq_td requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-6.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-6.c
index 1bddb651b0e..293e6ca19ad 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-6.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-6.c
@@ -10,7 +10,7 @@ int doTestBCDSignificance (_Decimal128 *p)
{
_Decimal128 source = *p;
- return __builtin_dfp_dtstsfi_lt (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_lt_td requires" } */
+ return __builtin_dfp_dtstsfi_lt (5, source); /* { dg-error "builtin function __builtin_dtstsfi_lt_td requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-61.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-61.c
index 247c1448a70..aa7591f7dc4 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-61.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-61.c
@@ -10,6 +10,6 @@ int doTestBCDSignificance (_Decimal64 *p)
{
_Decimal64 source = *p;
- return __builtin_dfp_dtstsfi_ov (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_ov_dd requires" } */
+ return __builtin_dfp_dtstsfi_ov (5, source); /* { dg-error "builtin function __builtin_dtstsfi_ov_dd requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-66.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-66.c
index 69272acb47a..644f3101c13 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-66.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-66.c
@@ -10,7 +10,7 @@ int doTestBCDSignificance (_Decimal128 *p)
{
_Decimal128 source = *p;
- return __builtin_dfp_dtstsfi_ov (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_ov_td requires" } */
+ return __builtin_dfp_dtstsfi_ov (5, source); /* { dg-error "builtin function __builtin_dtstsfi_ov_td requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-71.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-71.c
index 3e512038cf3..3f71eee3858 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-71.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-71.c
@@ -10,6 +10,6 @@ int doTestBCDSignificance (_Decimal64 *p)
{
_Decimal64 source = *p;
- return __builtin_dfp_dtstsfi_ov_dd (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_ov_dd requires" } */
+ return __builtin_dfp_dtstsfi_ov_dd (5, source); /* { dg-error "builtin function __builtin_dtstsfi_ov_dd requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-76.c b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-76.c
index 572897fee55..d9e327a7b34 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-76.c
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-76.c
@@ -10,7 +10,7 @@ int doTestBCDSignificance (_Decimal128 *p)
{
_Decimal128 source = *p;
- return __builtin_dfp_dtstsfi_ov_td (5, source); /* { dg-error "Builtin function __builtin_dtstsfi_ov_td requires" } */
+ return __builtin_dfp_dtstsfi_ov_td (5, source); /* { dg-error "builtin function __builtin_dtstsfi_ov_td requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-char.c
new file mode 100644
index 00000000000..61dfbccd672
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-char.c
@@ -0,0 +1,22 @@
+/* Verify that overloaded built-ins for vec_cntlz with char
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-maltivec -mpower8-vector -O2" } */
+
+#include <altivec.h>
+
+vector signed char
+testsc_h (vector signed char vsc2)
+{
+ return vec_cntlz (vsc2);
+}
+
+vector unsigned char
+testuc_h (vector unsigned char vuc2)
+{
+ return vec_cntlz (vuc2);
+}
+
+/* { dg-final { scan-assembler-times "vclzb" 2 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-int.c
new file mode 100644
index 00000000000..ae4dd577692
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-int.c
@@ -0,0 +1,22 @@
+/* Verify that overloaded built-ins for vec_cntlz with int
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-maltivec -mpower8-vector -O2" } */
+
+#include <altivec.h>
+
+vector signed int
+testsi (vector signed int vsi2)
+{
+ return vec_cntlz (vsi2);
+}
+
+vector unsigned int
+testui (vector unsigned int vui2)
+{
+ return vec_cntlz (vui2);
+}
+
+/* { dg-final { scan-assembler-times "vclzw" 2 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-longlong.c
new file mode 100644
index 00000000000..1a72a2d38c7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-longlong.c
@@ -0,0 +1,22 @@
+/* Verify that overloaded built-ins for vec_cntlz with long long
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mvsx -mpower8-vector -O2" } */
+
+#include <altivec.h>
+
+vector signed long long
+testsl (vector signed long long vsl2)
+{
+ return vec_cntlz (vsl2);
+}
+
+vector unsigned long long
+testul (vector unsigned long long vul2)
+{
+ return vec_cntlz (vul2);
+}
+
+/* { dg-final { scan-assembler-times "vclzd" 2 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-short.c
new file mode 100644
index 00000000000..0f05cace2e6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-short.c
@@ -0,0 +1,22 @@
+/* Verify that overloaded built-ins for vec_cntlz with int
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-maltivec -mpower8-vector -O2" } */
+
+#include <altivec.h>
+
+vector signed short
+testsi (vector signed short vss2)
+{
+ return vec_cntlz (vss2);
+}
+
+vector unsigned short
+testui (vector unsigned short vus2)
+{
+ return vec_cntlz (vus2);
+}
+
+/* { dg-final { scan-assembler-times "vclzh" 2 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-double.c
new file mode 100644
index 00000000000..0fe78241294
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-double.c
@@ -0,0 +1,17 @@
+/* Verify that overloaded built-ins for vec_madd with
+ double inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-mvsx -O2" } */
+
+#include <altivec.h>
+
+vector double
+testd_l (vector double vd2, vector double vd3, vector double vd4)
+{
+ return vec_madd (vd2, vd3, vd4);
+}
+
+/* { dg-final { scan-assembler-times "xvmaddmdp|xvmaddadp" 1 } } */
+
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-float.c
new file mode 100644
index 00000000000..fcfe0c38656
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-float.c
@@ -0,0 +1,17 @@
+/* Verify that overloaded built-ins for vec_madd with float
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-mvsx -O2" } */
+
+#include <altivec.h>
+
+vector float
+testf_l (vector float vf2, vector float vf3, vector float vf4)
+{
+ return vec_madd (vf2, vf3, vf4);
+}
+
+/* { dg-final { scan-assembler-times "xvmaddmsp|xvmaddasp" 1 } } */
+
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-short.c
new file mode 100644
index 00000000000..0e78f3585f5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-madd-short.c
@@ -0,0 +1,38 @@
+/* Verify that overloaded built-ins for vec_madd with short
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-maltivec -O2" } */
+
+#include <altivec.h>
+
+vector signed short
+test_mad_sss (vector signed short vss2, vector signed short vss3,
+ vector signed short vss4)
+{
+ return vec_madd (vss2, vss3, vss4);
+}
+
+vector signed short
+test_mad_suu (vector signed short vss2, vector unsigned short vus3,
+ vector unsigned short vus4)
+{
+ return vec_madd (vss2, vus3, vus4);
+}
+
+vector signed short
+test_mad_uss (vector unsigned short vus2, vector signed short vss3,
+ vector signed short vss4)
+{
+ return vec_madd (vus2, vss3, vss4);
+}
+
+vector unsigned short
+test_mad_uuu (vector unsigned short vus2, vector unsigned short vus3,
+ vector unsigned short vus4)
+{
+ return vec_madd (vus2, vus3, vus4);
+}
+
+/* { dg-final { scan-assembler-times "vmladduhm" 4 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-msum-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-msum-char.c
new file mode 100644
index 00000000000..53519d50293
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-msum-char.c
@@ -0,0 +1,25 @@
+/* Verify that overloaded built-ins for vec_msum() with char inputs
+ produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-maltivec -O2" } */
+
+#include <altivec.h>
+
+vector unsigned int
+test_msum_ui_uc_uc_ui (vector unsigned char vuc2, vector unsigned char vuc3,
+ vector unsigned int vui2)
+{
+ return vec_msum (vuc2, vuc3, vui2);
+}
+
+vector signed int
+test_msum_si_sc_uc_si (vector signed char vsc2, vector unsigned char vuc3,
+ vector signed int vsi2)
+{
+ return vec_msum (vsc2, vuc3, vsi2);
+}
+
+/* { dg-final { scan-assembler-times "vmsumubm" 1 } } */
+/* { dg-final { scan-assembler-times "vmsummbm" 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-msum-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-msum-short.c
new file mode 100644
index 00000000000..2e590ab8066
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-msum-short.c
@@ -0,0 +1,25 @@
+/* Verify that overloaded built-ins for vec_msum with int
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-maltivec -O2" } */
+
+#include <altivec.h>
+
+vector signed int
+test_msum_si (vector signed short vss2, vector signed short vss3,
+ vector signed int vsi2)
+{
+ return vec_msum (vss2, vss3, vsi2);
+}
+
+vector unsigned int
+test_msum_ui (vector unsigned short vus2, vector unsigned short vus3,
+ vector unsigned int vui2)
+{
+ return vec_msum (vus2, vus3, vui2);
+}
+
+/* { dg-final { scan-assembler-times "vmsumshm" 1 } } */
+/* { dg-final { scan-assembler-times "vmsumuhm" 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-double.c
new file mode 100644
index 00000000000..29d049abe80
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-double.c
@@ -0,0 +1,18 @@
+/* Verify that overloaded built-ins for vec_pack with
+ double inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mvsx -mpower8-vector -O2" } */
+
+#include <altivec.h>
+
+// vector float vec_pack (vector double, vector double);
+
+vector float
+test_pack (vector double vd2, vector double vd3)
+{
+ return vec_pack (vd2, vd3);
+}
+
+/* { dg-final { scan-assembler-times "vpkudum" 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-int.c
new file mode 100644
index 00000000000..940faf36755
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-int.c
@@ -0,0 +1,28 @@
+/* Verify that overloaded built-ins for vec_pack with int
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-maltivec -O2" } */
+
+#include <altivec.h>
+
+vector bool short
+testbi_h (vector bool int vbi2, vector bool int vbi3)
+{
+ return vec_pack (vbi2, vbi3);
+}
+
+vector signed short
+testsi_h (vector signed int vsi2, vector signed int vsi3)
+{
+ return vec_pack (vsi2, vsi3);
+}
+
+vector unsigned short
+testui_h (vector unsigned int vui2, vector unsigned int vui3)
+{
+ return vec_pack (vui2, vui3);
+}
+
+/* { dg-final { scan-assembler-times "vpkuwum" 3 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-longlong.c
new file mode 100644
index 00000000000..25c3c3710d2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-longlong.c
@@ -0,0 +1,28 @@
+/* Verify that overloaded built-ins for vec_pack with long long
+ inputs produce the right results. */
+
+/* { dg-do compile { target lp64 } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mvsx -mpower8-vector -O2" } */
+
+#include <altivec.h>
+
+vector bool int
+testbl_h (vector bool long long vbl2, vector bool long long vbl3)
+{
+ return vec_pack (vbl2, vbl3);
+}
+
+vector signed int
+testsl_h (vector signed long long vsl2, vector signed long long vsl3)
+{
+ return vec_pack (vsl2, vsl3);
+}
+
+vector unsigned int
+testul_h (vector unsigned long vul2, vector unsigned long vul3)
+{
+ return vec_pack (vul2, vul3);
+}
+
+/* { dg-final { scan-assembler-times "vpkudum" 3 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-short.c
new file mode 100644
index 00000000000..37cd191dbd8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-pack-short.c
@@ -0,0 +1,28 @@
+/* Verify that overloaded built-ins for vec_pack with short
+ inputs produce the right results. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-maltivec -O2" } */
+
+#include <altivec.h>
+
+vector bool char
+testbi_eh (vector bool short vbs2, vector bool short vbs3)
+{
+ return vec_pack (vbs2, vbs3);
+}
+
+vector signed char
+testsi_eh (vector signed short vss2, vector signed short vss3)
+{
+ return vec_pack (vss2, vss3);
+}
+
+vector unsigned char
+testui_eh (vector unsigned short vus2, vector unsigned short vus3)
+{
+ return vec_pack (vus2, vus3);
+}
+
+/* { dg-final { scan-assembler-times "vpkuhum" 3 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr81622.c b/gcc/testsuite/gcc.target/powerpc/pr81622.c
new file mode 100644
index 00000000000..fa13ac98a2b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr81622.c
@@ -0,0 +1,13 @@
+/* PR target/81622 */
+/* { dg-do compile { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
+/* { dg-require-effective-target powerpc_p9vector_ok } */
+/* { dg-options "-mcpu=power9 -O2" } */
+
+void
+foo (void)
+{
+ __builtin_vec_ld (1, 2); /* { dg-error "invalid parameter combination" } */
+ __builtin_vec_cmpne (1, 2); /* { dg-error "invalid parameter combination" } */
+ __builtin_vec_st (1, 0, 5); /* { dg-error "invalid parameter combination" } */
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c b/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
new file mode 100644
index 00000000000..acf429acaa9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
@@ -0,0 +1,12 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-require-effective-target vsx_hw } */
+/* { dg-options "-O2 -mvsx" } */
+
+/* Test various ways of creating vectors with 2 double words and accessing the
+ elements. This test uses the double datatype.
+
+ This test explicitly tests -maltivec=be to make sure things are correct. */
+
+#define DO_DOUBLE
+
+#include "vec-setup.h"
diff --git a/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c b/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
new file mode 100644
index 00000000000..492cd2d76a2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
@@ -0,0 +1,11 @@
+/* { dg-do run { target { powerpc64le*-*-linux* } } } */
+/* { dg-require-effective-target vsx_hw } */
+/* { dg-options "-O2 -mvsx -maltivec=be" } */
+
+/* Test various ways of creating vectors with 2 double words and accessing the
+ elements. This test uses the long (on 64-bit systems) or long long datatype
+ (on 32-bit systems).
+
+ This test explicitly tests -maltivec=be to make sure things are correct. */
+
+#include "vec-setup.h"
diff --git a/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c b/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
new file mode 100644
index 00000000000..36c6405caf7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
@@ -0,0 +1,11 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-require-effective-target vsx_hw } */
+/* { dg-options "-O2 -mvsx" } */
+
+/* Test various ways of creating vectors with 2 double words and accessing the
+ elements. This test uses the double datatype and the default endian
+ order. */
+
+#define DO_DOUBLE
+
+#include "vec-setup.h"
diff --git a/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c b/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
new file mode 100644
index 00000000000..5588e1586f3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
@@ -0,0 +1,9 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-require-effective-target vsx_hw } */
+/* { dg-options "-O2 -mvsx" } */
+
+/* Test various ways of creating vectors with 2 double words and accessing the
+ elements. This test uses the long (on 64-bit systems) or long long datatype
+ (on 32-bit systems). The default endian order is used. */
+
+#include "vec-setup.h"
diff --git a/gcc/testsuite/gcc.target/powerpc/vec-setup.h b/gcc/testsuite/gcc.target/powerpc/vec-setup.h
new file mode 100644
index 00000000000..9e251646d2d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/vec-setup.h
@@ -0,0 +1,366 @@
+#include <altivec.h>
+
+/* Test various ways of creating vectors with 2 double words and accessing the
+ elements. This include files supports:
+
+ testing double
+ testing long on 64-bit systems
+ testing long long on 32-bit systems.
+
+ The endian support is:
+
+ big endian
+ little endian with little endian element ordering
+ little endian with big endian element ordering. */
+
+#ifdef DEBUG
+#include <stdio.h>
+#define DEBUG0(STR) fputs (STR, stdout)
+#define DEBUG2(STR,A,B) printf (STR, A, B)
+
+static int errors = 0;
+
+#else
+#include <stdlib.h>
+#define DEBUG0(STR)
+#define DEBUG2(STR,A,B)
+#endif
+
+#if defined(DO_DOUBLE)
+#define TYPE double
+#define STYPE "double"
+#define ZERO 0.0
+#define ONE 1.0
+#define TWO 2.0
+#define THREE 3.0
+#define FOUR 4.0
+#define FIVE 5.0
+#define SIX 6.0
+#define FMT "g"
+
+#elif defined(_ARCH_PPC64)
+#define TYPE long
+#define STYPE "long"
+#define ZERO 0L
+#define ONE 1L
+#define TWO 2L
+#define THREE 3L
+#define FOUR 4L
+#define FIVE 5L
+#define SIX 6L
+#define FMT "ld"
+
+#else
+#define TYPE long long
+#define STYPE "long long"
+#define ZERO 0LL
+#define ONE 1LL
+#define TWO 2LL
+#define THREE 3LL
+#define FOUR 4LL
+#define FIVE 5LL
+#define SIX 6LL
+#define FMT "lld"
+#endif
+
+/* Macros to order the left/right values correctly. Note, -maltivec=be does
+ not change the order for static initializations, so we have to handle it
+ specially. */
+
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#define INIT_ORDER(A, B) (TYPE) A, (TYPE) B
+#define ELEMENT_ORDER(A, B) (TYPE) A, (TYPE) B
+#define ENDIAN "-mbig"
+
+#elif __VEC_ELEMENT_REG_ORDER__ == __ORDER_BIG_ENDIAN__
+#define NO_ARRAY
+#define INIT_ORDER(A, B) (TYPE) B, (TYPE) A
+#define ELEMENT_ORDER(A, B) (TYPE) A, (TYPE) B
+#define ENDIAN "-mlittle -maltivec=be"
+
+#else
+#define INIT_ORDER(A, B) (TYPE) B, (TYPE) A
+#define ELEMENT_ORDER(A, B) (TYPE) B, (TYPE) A
+#define ENDIAN "-mlittle"
+#endif
+
+static volatile TYPE five = FIVE;
+static volatile TYPE six = SIX;
+static volatile vector TYPE s_v12 = { ONE, TWO };
+static volatile vector TYPE g_v34 = { THREE, FOUR };
+
+
+__attribute__((__noinline__))
+static void
+vector_check (vector TYPE v, TYPE expect_hi, TYPE expect_lo)
+{
+ TYPE actual_hi, actual_lo;
+#ifdef DEBUG
+ const char *pass_fail;
+#endif
+
+ __asm__ ("xxlor %x0,%x1,%x1" : "=&wa" (actual_hi) : "wa" (v));
+ __asm__ ("xxpermdi %x0,%x1,%x1,3" : "=&wa" (actual_lo) : "wa" (v));
+
+#ifdef DEBUG
+ if ((actual_hi == expect_hi) && (actual_lo == expect_lo))
+ pass_fail = ", pass";
+ else
+ {
+ pass_fail = ", fail";
+ errors++;
+ }
+
+ printf ("Expected %" FMT ", %" FMT ", got %" FMT ", %" FMT "%s\n",
+ expect_hi, expect_lo,
+ actual_hi, actual_lo,
+ pass_fail);
+#else
+ if ((actual_hi != expect_hi) || (actual_lo != expect_lo))
+ abort ();
+#endif
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+combine (TYPE op0, TYPE op1)
+{
+ return (vector TYPE) { op0, op1 };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+combine_insert (TYPE op0, TYPE op1)
+{
+ vector TYPE ret = (vector TYPE) { ZERO, ZERO };
+ ret = vec_insert (op0, ret, 0);
+ ret = vec_insert (op1, ret, 1);
+ return ret;
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract_00 (vector TYPE a, vector TYPE b)
+{
+ return (vector TYPE) { vec_extract (a, 0), vec_extract (b, 0) };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract_01 (vector TYPE a, vector TYPE b)
+{
+ return (vector TYPE) { vec_extract (a, 0), vec_extract (b, 1) };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract_10 (vector TYPE a, vector TYPE b)
+{
+ return (vector TYPE) { vec_extract (a, 1), vec_extract (b, 0) };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract_11 (vector TYPE a, vector TYPE b)
+{
+ return (vector TYPE) { vec_extract (a, 1), vec_extract (b, 1) };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract2_0s (vector TYPE a, TYPE b)
+{
+ return (vector TYPE) { vec_extract (a, 0), b };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract2_1s (vector TYPE a, TYPE b)
+{
+ return (vector TYPE) { vec_extract (a, 1), b };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract2_s0 (TYPE a, vector TYPE b)
+{
+ return (vector TYPE) { a, vec_extract (b, 0) };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract2_s1 (TYPE a, vector TYPE b)
+{
+ return (vector TYPE) { a, vec_extract (b, 1) };
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+concat_extract_nn (vector TYPE a, vector TYPE b, size_t i, size_t j)
+{
+ return (vector TYPE) { vec_extract (a, i), vec_extract (b, j) };
+}
+
+#ifndef NO_ARRAY
+__attribute__((__noinline__))
+static vector TYPE
+array_0 (vector TYPE v, TYPE a)
+{
+ v[0] = a;
+ return v;
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+array_1 (vector TYPE v, TYPE a)
+{
+ v[1] = a;
+ return v;
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+array_01 (vector TYPE v, TYPE a, TYPE b)
+{
+ v[0] = a;
+ v[1] = b;
+ return v;
+}
+
+__attribute__((__noinline__))
+static vector TYPE
+array_01b (TYPE a, TYPE b)
+{
+ vector TYPE v = (vector TYPE) { 0, 0 };
+ v[0] = a;
+ v[1] = b;
+ return v;
+}
+#endif
+
+int
+main (void)
+{
+ vector TYPE a = (vector TYPE) { ONE, TWO };
+ vector TYPE b = (vector TYPE) { THREE, FOUR };
+ size_t i, j;
+
+#ifndef NO_ARRAY
+ vector TYPE z = (vector TYPE) { ZERO, ZERO };
+#endif
+
+ DEBUG2 ("Endian: %s, type: %s\n", ENDIAN, STYPE);
+ DEBUG0 ("\nStatic/global initialization\n");
+ vector_check (s_v12, INIT_ORDER (1, 2));
+ vector_check (g_v34, INIT_ORDER (3, 4));
+
+ DEBUG0 ("\nVector via constant runtime intiialization\n");
+ vector_check (a, INIT_ORDER (1, 2));
+ vector_check (b, INIT_ORDER (3, 4));
+
+ DEBUG0 ("\nCombine scalars using vector initialization\n");
+ vector_check (combine (1, 2), INIT_ORDER (1, 2));
+ vector_check (combine (3, 4), INIT_ORDER (3, 4));
+
+ DEBUG0 ("\nSetup with vec_insert\n");
+ a = combine_insert (1, 2);
+ b = combine_insert (3, 4);
+ vector_check (a, ELEMENT_ORDER (1, 2));
+ vector_check (b, ELEMENT_ORDER (3, 4));
+
+#ifndef NO_ARRAY
+ DEBUG0 ("\nTesting array syntax\n");
+ vector_check (array_0 (a, FIVE), ELEMENT_ORDER (5, 2));
+ vector_check (array_1 (b, SIX), ELEMENT_ORDER (3, 6));
+ vector_check (array_01 (z, FIVE, SIX), ELEMENT_ORDER (5, 6));
+ vector_check (array_01b (FIVE, SIX), ELEMENT_ORDER (5, 6));
+
+ vector_check (array_0 (a, five), ELEMENT_ORDER (5, 2));
+ vector_check (array_1 (b, six), ELEMENT_ORDER (3, 6));
+ vector_check (array_01 (z, five, six), ELEMENT_ORDER (5, 6));
+ vector_check (array_01b (five, six), ELEMENT_ORDER (5, 6));
+#else
+ DEBUG0 ("\nSkipping array syntax on -maltivec=be\n");
+#endif
+
+ DEBUG0 ("\nTesting concat and extract\n");
+ vector_check (concat_extract_00 (a, b), INIT_ORDER (1, 3));
+ vector_check (concat_extract_01 (a, b), INIT_ORDER (1, 4));
+ vector_check (concat_extract_10 (a, b), INIT_ORDER (2, 3));
+ vector_check (concat_extract_11 (a, b), INIT_ORDER (2, 4));
+
+ DEBUG0 ("\nTesting concat and extract #2\n");
+ vector_check (concat_extract2_0s (a, FIVE), INIT_ORDER (1, 5));
+ vector_check (concat_extract2_1s (a, FIVE), INIT_ORDER (2, 5));
+ vector_check (concat_extract2_s0 (SIX, a), INIT_ORDER (6, 1));
+ vector_check (concat_extract2_s1 (SIX, a), INIT_ORDER (6, 2));
+
+ DEBUG0 ("\nTesting variable concat and extract\n");
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ static struct {
+ TYPE hi;
+ TYPE lo;
+ } hilo[2][2] =
+ { { { ONE, THREE }, { ONE, FOUR } },
+ { { TWO, THREE }, { TWO, FOUR } } };
+
+ vector_check (concat_extract_nn (a, b, i, j),
+ INIT_ORDER (hilo[i][j].hi, hilo[i][j].lo));
+ }
+ }
+
+ DEBUG0 ("\nTesting separate function\n");
+ vector_check (combine (vec_extract (a, 0), vec_extract (b, 0)),
+ INIT_ORDER (1, 3));
+
+ vector_check (combine (vec_extract (a, 0), vec_extract (b, 1)),
+ INIT_ORDER (1, 4));
+
+ vector_check (combine (vec_extract (a, 1), vec_extract (b, 0)),
+ INIT_ORDER (2, 3));
+
+ vector_check (combine (vec_extract (a, 1), vec_extract (b, 1)),
+ INIT_ORDER (2, 4));
+
+ vector_check (combine_insert (vec_extract (a, 0), vec_extract (b, 0)),
+ ELEMENT_ORDER (1, 3));
+
+ vector_check (combine_insert (vec_extract (a, 0), vec_extract (b, 1)),
+ ELEMENT_ORDER (1, 4));
+
+ vector_check (combine_insert (vec_extract (a, 1), vec_extract (b, 0)),
+ ELEMENT_ORDER (2, 3));
+
+ vector_check (combine_insert (vec_extract (a, 1), vec_extract (b, 1)),
+ ELEMENT_ORDER (2, 4));
+
+
+#if defined(DO_DOUBLE)
+ DEBUG0 ("\nTesting explicit 2df concat\n");
+ vector_check (__builtin_vsx_concat_2df (FIVE, SIX), INIT_ORDER (5, 6));
+ vector_check (__builtin_vsx_concat_2df (five, six), INIT_ORDER (5, 6));
+
+#elif defined(_ARCH_PPC64)
+ DEBUG0 ("\nTesting explicit 2di concat\n");
+ vector_check (__builtin_vsx_concat_2di (FIVE, SIX), INIT_ORDER (5, 6));
+ vector_check (__builtin_vsx_concat_2di (five, six), INIT_ORDER (5, 6));
+
+#else
+ DEBUG0 ("\nSkip explicit 2di concat on 32-bit\n");
+#endif
+
+#ifdef DEBUG
+ if (errors)
+ printf ("\n%d error%s were found", errors, (errors == 1) ? "" : "s");
+ else
+ printf ("\nNo errors were found.\n");
+
+ return errors;
+
+#else
+ return 0;
+#endif
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c
index 8f8271f8f1c..d2febf934f3 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c
@@ -12,5 +12,5 @@ test_all_not_equal_and_not_zero (vector unsigned short *arg1_p,
vector unsigned short arg_1 = *arg1_p;
vector unsigned short arg_2 = *arg2_p;
- return __builtin_vec_vcmpnez_p (__CR6_LT, arg_1, arg_2); /* { dg-error "Builtin function __builtin_vec_vcmpnez_p not supported in this compiler configuration" } */
+ return __builtin_vec_vcmpnez_p (__CR6_LT, arg_1, arg_2); /* { dg-error "builtin function __builtin_vec_vcmpnez_p not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c
index 7b2d4ddf49b..5e1226a651e 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c
@@ -11,5 +11,5 @@ test_any_equal (vector unsigned int *arg1_p, vector unsigned int *arg2_p)
vector unsigned int arg_1 = *arg1_p;
vector unsigned int arg_2 = *arg2_p;
- return __builtin_vec_vcmpnez_p (__CR6_LT_REV, arg_1, arg_2); /* { dg-error "Builtin function __builtin_vec_vcmpnez_p not supported in this compiler configuration" } */
+ return __builtin_vec_vcmpnez_p (__CR6_LT_REV, arg_1, arg_2); /* { dg-error "builtin function __builtin_vec_vcmpnez_p not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-7.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-7.c
index 06eb8d7cec6..c425d5a37c2 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-7.c
@@ -11,5 +11,5 @@ fetch_data (vector unsigned int *arg1_p, vector unsigned int *arg2_p)
vector unsigned int arg_1 = *arg1_p;
vector unsigned int arg_2 = *arg2_p;
- return __builtin_vec_vcmpnez (arg_1, arg_2); /* { dg-error "Builtin function __builtin_altivec_vcmpnezw requires the -mcpu=power9 option" } */
+ return __builtin_vec_vcmpnez (arg_1, arg_2); /* { dg-error "builtin function __builtin_altivec_vcmpnezw requires the -mcpu=power9 option" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c
index f1f30092bd3..03c44c11fb5 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c
@@ -10,5 +10,5 @@ count_leading_zero_byte_bits (vector unsigned char *arg1_p)
{
vector unsigned char arg_1 = *arg1_p;
- return __builtin_vec_vclzlsbb (arg_1); /* { dg-error "Builtin function __builtin_altivec_vclzlsbb requires the -mcpu=power9 option" } */
+ return __builtin_vec_vclzlsbb (arg_1); /* { dg-error "builtin function __builtin_altivec_vclzlsbb requires the -mcpu=power9 option" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c
index 4d6182b02c7..1171e25adba 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c
@@ -10,5 +10,5 @@ count_trailing_zero_byte_bits (vector unsigned char *arg1_p)
{
vector unsigned char arg_1 = *arg1_p;
- return __builtin_vec_vctzlsbb (arg_1); /* { dg-error "Builtin function __builtin_altivec_vctzlsbb requires the -mcpu=power9 option" } */
+ return __builtin_vec_vctzlsbb (arg_1); /* { dg-error "builtin function __builtin_altivec_vctzlsbb requires the -mcpu=power9 option" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c
index 6e81b383936..cb61fc8a9b9 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c
@@ -12,5 +12,5 @@
__vector float
fetch_data (float *address, size_t length)
{
- return __builtin_vec_lxvl (address, length); /* { dg-error "Builtin function __builtin_vsx_lxvl requires" } */
+ return __builtin_vec_lxvl (address, length); /* { dg-error "builtin function __builtin_vsx_lxvl requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c
index 58d364131ba..55e3db43ca2 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c
@@ -14,5 +14,5 @@
__vector float
fetch_data (float *address, size_t length)
{
- return __builtin_vec_lxvl (address, length); /* { dg-error "Builtin function __builtin_vec_lxvl not supported in this compiler configuration" } */
+ return __builtin_vec_lxvl (address, length); /* { dg-error "builtin function __builtin_vec_lxvl not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-7.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-7.c
index 2fc5567b043..2a69302fe56 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-7.c
@@ -11,5 +11,5 @@ fetch_data (unsigned int offset, vector signed int *datap)
{
vector signed int data = *datap;
- return __builtin_vec_vextulx (offset, data); /* { dg-error "Builtin function __builtin_altivec_vextuwlx requires" } */
+ return __builtin_vec_vextulx (offset, data); /* { dg-error "builtin function __builtin_altivec_vextuwlx requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-7.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-7.c
index fb82157ca10..27215ce23e5 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-7.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-7.c
@@ -11,5 +11,5 @@ fetch_data (unsigned short offset, vector signed short *datap)
{
vector signed short data = *datap;
- return __builtin_vec_vexturx (offset, data); /* { dg-error "Builtin function __builtin_altivec_vextuhrx requires" } */
+ return __builtin_vec_vexturx (offset, data); /* { dg-error "builtin function __builtin_altivec_vextuhrx requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-12.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-12.c
index 42fe2c638ed..86354b03d66 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-12.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-12.c
@@ -14,5 +14,5 @@ store_data (vector double *datap, double *address, size_t length)
{
vector double data = *datap;
- __builtin_vec_stxvl (data, address, length); /* { dg-error "Builtin function __builtin_vec_stxvl not supported in this compiler configuration" } */
+ __builtin_vec_stxvl (data, address, length); /* { dg-error "builtin function __builtin_vec_stxvl not supported in this compiler configuration" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-13.c b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-13.c
index cc07b3a7f64..49feaa67a18 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-13.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-13.c
@@ -15,5 +15,5 @@ store_data (vector double *datap, double *address, size_t length)
{
vector double data = *datap;
- __builtin_vec_stxvl (data, address, length); /* { dg-error "Builtin function __builtin_altivec_stxvl requires" } */
+ __builtin_vec_stxvl (data, address, length); /* { dg-error "builtin function __builtin_altivec_stxvl requires" } */
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c b/gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
new file mode 100644
index 00000000000..8a5eb573f79
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
@@ -0,0 +1,25 @@
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O2 -mvsx" } */
+
+vector unsigned long
+test_vpasted (vector unsigned long high, vector unsigned long low)
+{
+ vector unsigned long res;
+ res[1] = high[1];
+ res[0] = low[0];
+ return res;
+}
+
+/* { dg-final { scan-assembler-times {\mxxpermdi\M} 1 } } */
+/* { dg-final { scan-assembler-not {\mvspltisw\M} } } */
+/* { dg-final { scan-assembler-not {\mxxlor\M} } } */
+/* { dg-final { scan-assembler-not {\mxxlxor\M} } } */
+/* { dg-final { scan-assembler-not {\mxxspltib\M} } } */
+/* { dg-final { scan-assembler-not {\mlxvx?\M} } } */
+/* { dg-final { scan-assembler-not {\mlxv[dw][24]x\M} } } */
+/* { dg-final { scan-assembler-not {\mlvx\M} } } */
+/* { dg-final { scan-assembler-not {\mstxvx?\M} } } */
+/* { dg-final { scan-assembler-not {\mstxv[dw][24]x\M} } } */
+/* { dg-final { scan-assembler-not {\mstvx\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c b/gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c
new file mode 100644
index 00000000000..961a980794e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c
@@ -0,0 +1,25 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O2 -mvsx" } */
+
+vector double
+test_vpasted (vector double high, vector double low)
+{
+ vector double res;
+ res[1] = high[1];
+ res[0] = low[0];
+ return res;
+}
+
+/* { dg-final { scan-assembler-times {\mxxpermdi\M} 1 } } */
+/* { dg-final { scan-assembler-not {\mvspltisw\M} } } */
+/* { dg-final { scan-assembler-not {\mxxlor\M} } } */
+/* { dg-final { scan-assembler-not {\mxxlxor\M} } } */
+/* { dg-final { scan-assembler-not {\mxxspltib\M} } } */
+/* { dg-final { scan-assembler-not {\mlxvx?\M} } } */
+/* { dg-final { scan-assembler-not {\mlxv[dw][24]x\M} } } */
+/* { dg-final { scan-assembler-not {\mlvx\M} } } */
+/* { dg-final { scan-assembler-not {\mstxvx?\M} } } */
+/* { dg-final { scan-assembler-not {\mstxv[dw][24]x\M} } } */
+/* { dg-final { scan-assembler-not {\mstvx\M} } } */