Patchwork [testsuite] remove ARM big-endian from some vect effective targets

login
register
mail settings
Submitter Janis Johnson
Date Jan. 15, 2013, 1:55 a.m.
Message ID <50F4B714.1090805@mentor.com>
Download mbox | patch
Permalink /patch/211966/
State New
Headers show

Comments

Janis Johnson - Jan. 15, 2013, 1:55 a.m.
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  <janisjo@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.

Patch

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
         }
     }