OSDN Git Service

* config/ia64/ia64.md (bswapdi2): New define_insn.
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Feb 2007 21:33:36 +0000 (21:33 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Feb 2007 21:33:36 +0000 (21:33 +0000)
* gcc.target/ia64/builtin_bswap-1.c: New test case.

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

gcc/ChangeLog
gcc/config/ia64/ia64.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/ia64/builtin-bswap-1.c [new file with mode: 0644]

index 52ed599..af251f4 100644 (file)
@@ -1,3 +1,7 @@
+2007-02-09  Roger Sayle  <roger@eyesopen.com>
+
+       * config/ia64/ia64.md (bswapdi2): New define_insn.
+
 2007-02-09  Richard Henderson  <rth@redhat.com>
 
        * config/i386/constraints.md (Ym): New constraint.
index e573c55..d609007 100644 (file)
@@ -1,5 +1,5 @@
 ;; IA-64 Machine description template
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
 ;; Free Software Foundation, Inc.
 ;; Contributed by James E. Wilson <wilson@cygnus.com> and
 ;;               David Mosberger <davidm@hpl.hp.com>.
   "popcnt %0 = %1"
   [(set_attr "itanium_class" "mmmul")])
 
+(define_insn "bswapdi2"
+  [(set (match_operand:DI 0 "gr_register_operand" "=r")
+        (bswap:DI (match_operand:DI 1 "gr_register_operand" "r")))]
+  ""
+  "mux1 %0 = %1, @rev"
+  [(set_attr "itanium_class" "mmshf")])
+
 (define_insn "*getf_exp_xf"
   [(set (match_operand:DI 0 "gr_register_operand" "=r")
        (unspec:DI [(match_operand:XF 1 "fr_register_operand" "f")]
index 1570d3e..a485412 100644 (file)
@@ -1,3 +1,7 @@
+2007-02-09  Roger Sayle  <roger@eyesopen.com>
+
+       * gcc.target/ia64/builtin_bswap-1.c: New test case.
+
 2007-02-09  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
 
        PR fortran/30720
diff --git a/gcc/testsuite/gcc.target/ia64/builtin-bswap-1.c b/gcc/testsuite/gcc.target/ia64/builtin-bswap-1.c
new file mode 100644 (file)
index 0000000..381e3fe
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler "mux1" } } */
+
+long foo (long x)
+{
+  return __builtin_bswap64 (x);
+}
+