aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2007-02-09 21:33:36 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2007-02-09 21:33:36 +0000
commitff848f0e0fd0fe375b1afa9475d8144f38596685 (patch)
tree419b722ac9e4be0ec1a506dc59b3a2f20e756248 /gcc
parent3db2c087824527f9065861617a48d5753c123b10 (diff)
downloadgcc-ff848f0e0fd0fe375b1afa9475d8144f38596685.zip
gcc-ff848f0e0fd0fe375b1afa9475d8144f38596685.tar.gz
gcc-ff848f0e0fd0fe375b1afa9475d8144f38596685.tar.bz2
ia64.md (bswapdi2): New define_insn.
* config/ia64/ia64.md (bswapdi2): New define_insn. * gcc.target/ia64/builtin_bswap-1.c: New test case. From-SVN: r121776
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/ia64/ia64.md9
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/ia64/builtin-bswap-1.c9
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 52ed599..af251f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
index e573c55..d609007 100644
--- a/gcc/config/ia64/ia64.md
+++ b/gcc/config/ia64/ia64.md
@@ -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>.
@@ -2490,6 +2490,13 @@
"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")]
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1570d3e..a485412 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..381e3fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/ia64/builtin-bswap-1.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler "mux1" } } */
+
+long foo (long x)
+{
+ return __builtin_bswap64 (x);
+}
+