diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/powerpc')
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} } } */ |