]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: arm.md (mov_notscc): Use MVN for false condition.
authorMatthew Gretton-Dann <matthew.gretton-dann@arm.com>
Thu, 12 Jan 2012 14:45:00 +0000 (14:45 +0000)
committerMatthew Gretton-Dann <mgretton@gcc.gnu.org>
Thu, 12 Jan 2012 14:45:00 +0000 (14:45 +0000)
Backport from mainline
2012-01-11  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

* gcc/config/arm/arm.md (mov_notscc): Use MVN for false condition.
* gcc/testsuite/testsuite/gcc.c-torture/execute/20120110-1.c: New testcase.

From-SVN: r183127

gcc/ChangeLog
gcc/config/arm/arm.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/20120111-1.c [new file with mode: 0644]

index d18fb9dfb6ca0999baddc06b4d167a2a70e7ad5f..f31e6753ef355140c4cc9dd075635e8bcbee70c8 100644 (file)
@@ -1,3 +1,10 @@
+2012-01-12  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
+
+       Backport from mainline
+       2012-01-11  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
+
+       * config/arm/arm.md (mov_notscc): Use MVN for false condition.
+
 2012-01-12  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (*zero_extendsidi2_rex64): Correct movl template.
index 794b865438c84a1822d5c6662476045b5cbbbe54..ddc7d12b89b044ecb3357628a9ff843fc25a02c4 100644 (file)
        (not:SI (match_operator:SI 1 "arm_comparison_operator"
                 [(match_operand 2 "cc_register" "") (const_int 0)])))]
   "TARGET_ARM"
-  "mov%D1\\t%0, #0\;mvn%d1\\t%0, #1"
+  "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1"
   [(set_attr "conds" "use")
    (set_attr "insn" "mov")
    (set_attr "length" "8")]
index ef596d40b788749d65772f404a2cdf6fb0933bb4..ad17dc25c5d696113e4238b07de942406d676fac 100644 (file)
@@ -1,3 +1,10 @@
+2012-01-12  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
+
+       Backport from mainline:
+       2012-01-11  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
+
+       * testsuite/gcc.c-torture/execute/20120110-1.c: New testcase.
+
 2012-01-10  Joseph Myers  <joseph@codesourcery.com>
 
        * gcc.c-torture/execute/doloop-1.c,
diff --git a/gcc/testsuite/gcc.c-torture/execute/20120111-1.c b/gcc/testsuite/gcc.c-torture/execute/20120111-1.c
new file mode 100644 (file)
index 0000000..eac086e
--- /dev/null
@@ -0,0 +1,18 @@
+#include <stdlib.h>
+#include <stdint.h>
+
+uint32_t f0a (uint64_t arg2) __attribute__((noinline));
+
+uint32_t
+f0a (uint64_t arg)
+{
+  return ~(arg > -3);
+}
+
+int main() {
+  uint32_t r1;
+  r1 = f0a (12094370573988097329ULL);
+  if (r1 != ~0U)
+    abort ();
+  return 0;
+}