* arm.md (negsf2, negdf2): Permit these expands when compiling for VFP.
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 May 2005 10:13:23 +0000 (10:13 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 May 2005 10:13:23 +0000 (10:13 +0000)
* gcc.dg/arm-vfp1.c: Revert last change.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99569 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/arm-vfp1.c

index d6dd1b7..0cc4dfb 100644 (file)
@@ -1,3 +1,7 @@
+2005-05-11  Richard Earnshaw  <richard.earnshaw@arm.com>
+
+       * arm.md (negsf2, negdf2): Permit these expands when compiling for VFP.
+
 2005-05-11  Richard Guenther  <rguenth@gcc.gnu.org>
 
        PR middle-end/19807
index ee7a1d8..5c7da90 100644 (file)
 (define_expand "negsf2"
   [(set (match_operand:SF         0 "s_register_operand" "")
        (neg:SF (match_operand:SF 1 "s_register_operand" "")))]
-  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_FPA"
+  "TARGET_ARM && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
   ""
 )
 
 (define_expand "negdf2"
   [(set (match_operand:DF         0 "s_register_operand" "")
        (neg:DF (match_operand:DF 1 "s_register_operand" "")))]
-  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_FPA"
+  "TARGET_ARM && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)"
   "")
 
 ;; abssi2 doesn't really clobber the condition codes if a different register
index 030b2fe..d2ee0ca 100644 (file)
@@ -1,3 +1,7 @@
+2005-05-11  Richard Earnshaw  <richard.earnshaw@arm.com>
+
+       * gcc.dg/arm-vfp1.c: Revert last change.
+
 2005-05-11  Richard Guenther  <rguenth@gcc.gnu.org>
 
        PR middle-end/19807
index 4cc90e0..5898e80 100644 (file)
@@ -14,14 +14,7 @@ void test_sf() {
   /* { dg-final { scan-assembler "fabss" } } */
   f1 = fabsf (f1);
   /* negsf2_vfp */
-  /* There is no test for "fnegs" because the compiler will use an
-     integer operation instead to implement this operation.  Adding
-     complexity to the operand (e.g., "-(f1 + f2)") doesn't change the
-     situation, as the compiler still wants the result in an integer
-     register before writing it back to memory.  If we used an ABI that
-     required passing floating-point values in VFP registers that
-     would likely persuade the compiler to keep the value in the VFP
-     registers.  */ 
+  /* { dg-final { scan-assembler "fnegs" } } */
   f1 = -f1;
   /* addsf3_vfp */
   /* { dg-final { scan-assembler "fadds" } } */