...for -mpaired-single at least.  Although the patch shows the intention
of making this specific to -mpaired-single, we don't distinguish between
integer and float capabilities, so the condition effectively triggers
for Loongson integer vectors too.

The patch is still correct for floats on Loongson, and the Loongson
results are messy even without this patch, so I'm afraid I'm going
to punt on them for now and concentrate on getting the standard ISA
results clean.  The lack of feedback to Richard's autovectorisation
patches makes me wonder how much interest there is in Loongson these
days anyway.

Tested on mipsisa64-elf and mips64-linux-gnu.  Applied.

Richard


gcc/testsuite/
        * lib/target-supports.exp (proc check_effective_target_vect_perm)
        (check_effective_target_vect_extract_even_odd)
        (check_effective_target_vect_interleave): Return true for MIPS
        paired-single.

Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp       2012-01-24 19:20:28.000000000 
+0000
+++ gcc/testsuite/lib/target-supports.exp       2012-01-24 19:40:13.000000000 
+0000
@@ -2759,7 +2759,9 @@ proc check_effective_target_vect_perm {
             || [istarget powerpc*-*-*]
              || [istarget spu-*-*]
             || [istarget i?86-*-*]
-            || [istarget x86_64-*-*] } {
+            || [istarget x86_64-*-*]
+            || ([istarget mips*-*-*]
+                && [check_effective_target_mpaired_single]) } {
             set et_vect_perm_saved 1
         }
     }
@@ -3484,8 +3486,10 @@ proc check_effective_target_vect_extract
              || [istarget i?86-*-*]
              || [istarget x86_64-*-*]
              || [istarget ia64-*-*]
-             || [istarget spu-*-*] } {
-           set et_vect_extract_even_odd_saved 1
+             || [istarget spu-*-*]
+            || ([istarget mips*-*-*]
+                && [check_effective_target_mpaired_single]) } {
+           set et_vect_extract_even_odd_saved 1
         }
     }
 
@@ -3507,7 +3511,9 @@ proc check_effective_target_vect_interle
              || [istarget i?86-*-*]
              || [istarget x86_64-*-*]
              || [istarget ia64-*-*]
-             || [istarget spu-*-*] } {
+             || [istarget spu-*-*]
+            || ([istarget mips*-*-*]
+                && [check_effective_target_mpaired_single]) } {
            set et_vect_interleave_saved 1
         }
     }

Reply via email to