The AArch32 SIMD unit doesn't have vector floating point divide. Handled thusly. I've chosen to inherit vector floating point divide support from target_vect_float. If this doesn't work for all targets, they can choose to override it here otherwise.

Tested cross with the testcase on arm-none-linux-gnueabihf noting that the test is now UNSUPPORTED.

Ok to apply ?


regards
Ramana


<DATE>  Ramana Radhakrishnan  <ramana.radhakrish...@arm.com>

* lib/target-supports.exp (check_effective_target_vect_float_divide): New.
        * gfortran.dg/vect/pr48329.f90: Use this.

<DATE>  Ramana Radhakrishnan  <ramana.radhakrish...@arm.com>

        * doc/sourcebuild.texi (vect_float_divide): Document.
commit a62464b026474aeb2cb1c67b0e7e03287a1fcc4f
Author: Ramana Radhakrishnan <ramana.radhakrish...@arm.com>
Date:   Tue May 13 07:13:16 2014 +0100

    Unsupport test for ARM neon with vector floating point divide.

diff --git a/gcc/testsuite/gfortran.dg/vect/pr48329.f90 
b/gcc/testsuite/gfortran.dg/vect/pr48329.f90
index 6ad03d4..b621a21 100644
--- a/gcc/testsuite/gfortran.dg/vect/pr48329.f90
+++ b/gcc/testsuite/gfortran.dg/vect/pr48329.f90
@@ -1,6 +1,7 @@
 ! { dg-do compile }
 ! { dg-require-effective-target vect_float }
 ! { dg-require-effective-target vect_intfloat_cvt }
+! { dg-require-effective-target vect_float_divide }
 ! { dg-additional-options "-ffast-math" }
 
 program calcpi
diff --git a/gcc/testsuite/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index 6ab414a..fbd7474 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2059,6 +2059,25 @@ proc check_effective_target_vect_int { } {
     return $et_vect_int_saved
 }
 
+proc check_effective_target_vect_float_divide { } {
+
+   global et_vect_float_divide_saved
+
+    if [info exists et_vect_float_divide_saved] {
+        verbose "check_effective_target_vect_divide_saved: using cached 
result" 2
+    } else {
+        set et_vect_float_divide_saved [check_effective_target_vect_float]
+        if { ([istarget arm*-*-*]
+             && [check_effective_target_arm_neon_ok])} {
+           set et_vect_float_divide_saved 0
+        }
+    }
+
+    verbose "check_effective_target_vect_float_divide: returning 
$et_vect_float_divide_saved" 2
+    return $et_vect_float_divide_saved
+
+}
+
 # Return 1 if the target supports signed int->float conversion 
 #
 

Reply via email to