As described in PR testsuite/54622, lots of tests from gcc.dg/vect fail
for big-endian ARM, apparently with bits of vectorization support
disabled here and there.  This patch removes big-endian ARM from

    check_effective_target_vect_perm_byte
    check_effective_target_vect_perm_short
    check_effective_target_vect_widen_mult_qi_to_hi_pattern,
    check_effective_target_vect64

and makes check_effective_target_vect_widen_sum_qi_to_hi return 1 for
ARM.  For each individual change there are tests that no longer fail
and no tests that regress.

Tested for arm-none-eabi with several multilibs; OK for trunk?

Janis
2013-01-15  Janis Johnson  <jani...@codesourcery.com>

        PR testsuite/54622

        * lib/target-supports.exp (check_effective_target_vect_perm_byte,
        check_effective_target_vect_perm_short,
        check_effective_target_vect_widen_mult_qi_to_hi_pattern,
        check_effective_target_vect64): Return 0 for big-endian ARM.
        (check_effective_target_vect_widen_sum_qi_to_hi): Return 1 for ARM.

Index: lib/target-supports.exp
===================================================================
--- lib/target-supports.exp     (revision 195178)
+++ lib/target-supports.exp     (working copy)
@@ -3082,7 +3082,8 @@
         verbose "check_effective_target_vect_perm_byte: using cached result" 2
     } else {
         set et_vect_perm_byte_saved 0
-        if { [is-effective-target arm_neon_ok]
+        if { ([is-effective-target arm_neon_ok]
+             && [is-effective-target arm_little_endian])
             || [istarget aarch64*-*-*]
             || [istarget powerpc*-*-*]
              || [istarget spu-*-*] } {
@@ -3105,7 +3106,8 @@
         verbose "check_effective_target_vect_perm_short: using cached result" 2
     } else {
         set et_vect_perm_short_saved 0
-        if { [is-effective-target arm_neon_ok]
+        if { ([is-effective-target arm_neon_ok]
+             && [is-effective-target arm_little_endian])
             || [istarget aarch64*-*-*]
             || [istarget powerpc*-*-*]
              || [istarget spu-*-*] } {
@@ -3175,6 +3177,7 @@
     } else {
         set et_vect_widen_sum_qi_to_hi_saved 0
        if { [check_effective_target_vect_unpack] 
+            || [check_effective_target_arm_neon_ok]
             || [istarget ia64-*-*] } {
             set et_vect_widen_sum_qi_to_hi_saved 1
        }
@@ -3282,7 +3285,9 @@
     } else {
         set et_vect_widen_mult_qi_to_hi_pattern_saved 0
         if { [istarget powerpc*-*-*]
-              || ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) 
} {
+              || ([istarget arm*-*-*]
+                 && [check_effective_target_arm_neon_ok]
+                 && [check_effective_target_arm_little_endian]) } {
             set et_vect_widen_mult_qi_to_hi_pattern_saved 1
         }
     }
@@ -3307,7 +3312,9 @@
               || [istarget ia64-*-*]
               || [istarget i?86-*-*]
               || [istarget x86_64-*-*]
-              || ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) 
} {
+              || ([istarget arm*-*-*]
+                 && [check_effective_target_arm_neon_ok]
+                 && [check_effective_target_arm_little_endian]) } {
             set et_vect_widen_mult_hi_to_si_pattern_saved 1
         }
     }
@@ -3914,7 +3921,9 @@
         verbose "check_effective_target_vect64: using cached result" 2
     } else {
         set et_vect64_saved 0
-        if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) } {
+        if { ([istarget arm*-*-*]
+             && [check_effective_target_arm_neon_ok]
+             && [check_effective_target_arm_little_endian]) } {
            set et_vect64_saved 1
         }
     }

Reply via email to