m68k.md (rotrhi3+1): Name it rotrhi_lowpart.
authorAndreas Schwab <schwab@gcc.gnu.org>
Wed, 11 Apr 2012 22:01:42 +0000 (22:01 +0000)
committerAndreas Schwab <schwab@gcc.gnu.org>
Wed, 11 Apr 2012 22:01:42 +0000 (22:01 +0000)
* gcc/config/m68k/m68k.md (rotrhi3+1): Name it rotrhi_lowpart.
(bswapsi2): New expander.

From-SVN: r186361

gcc/ChangeLog
gcc/config/m68k/m68k.md

index e95e513..7c6e792 100644 (file)
@@ -1,3 +1,8 @@
+2012-04-11  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * config/m68k/m68k.md (rotrhi3+1): Name it rotrhi_lowpart.
+       (bswapsi2): New expander.
+
 2012-04-11  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/host-linux.c (TRY_EMPTY_VM_SPACE): Defined to
@@ -10,7 +15,7 @@
        Don't call mark_reg_pointer for incompatible pointer sign
        extension.
 
-       * reginfo.c (reg_scan_mark_refs): Call set_reg_attrs_from_value 
+       * reginfo.c (reg_scan_mark_refs): Call set_reg_attrs_from_value
        directly.
 
 2012-04-11  Bernd Schmidt  <bernds@codesourcery.com>
 2012-04-11  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        PR 24985
-        * diagnostic.h (show_caret): Declare.
+       * diagnostic.h (show_caret): Declare.
        (caret_max_width): Declare.
        (diagnostic_show_locus): Declare.
-        * diagnostic.c (diagnostic_initialize): Initialize to false.
-        (diagnostic_show_locus): New.
-        (diagnostic_report_diagnostic): Call it.
+       * diagnostic.c (diagnostic_initialize): Initialize to false.
+       (diagnostic_show_locus): New.
+       (diagnostic_report_diagnostic): Call it.
        (getenv_columns): New.
        (adjust_line): New.
        (diagnostic_set_caret_max_width): New.
-        * input.c (read_line): New.
+       * input.c (read_line): New.
        (location_get_source_line): New.
-        * input.h (location_get_source_line): Declare.
-        * toplev.c (general_init): Initialize show_caret from options.
-        * dwarf2out.c (gen_producer_string): Handle fdiagnostics-show-caret.
-        * opts.c (common_handle_option): Likewise.
+       * input.h (location_get_source_line): Declare.
+       * toplev.c (general_init): Initialize show_caret from options.
+       * dwarf2out.c (gen_producer_string): Handle fdiagnostics-show-caret.
+       * opts.c (common_handle_option): Likewise.
        * pretty-print.h (pp_get_prefix): New.
        (pp_base_get_prefix): New.
-        * common.opt (fdiagnostics-show-caret): New option.
+       * common.opt (fdiagnostics-show-caret): New option.
        * doc/invoke.texi (fdiagnostics-show-caret): Document it.
 
 2012-04-11  Richard Guenther  <rguenther@suse.de>
 
        PR lto/52722
        PR lto/51765
-       PR lto/52634    
+       PR lto/52634
        * lto-cgraph.c (compute_ltrans_boundary): When alias is in the boundary,
        add its target too.
        * lto.c (add_references_to_partition): Add also aliased nodes.
 2012-04-03  Sandeep Kumar Singh  <Sandeep.Singh2@kpitcummins.com>
 
        * h8300/h8300.c (h8300_current_function_monitor_function_p):
-       New function. Added to check monitor functions. 
-       (h8300_option_override): Modified to generate error/warning 
-       messages for invalid combinations of different command line 
+       New function. Added to check monitor functions.
+       (h8300_option_override): Modified to generate error/warning
+       messages for invalid combinations of different command line
        options.
        * h8300/h8300.md: Generate 'rte' for monitor functions. Do not
-       save EXR on stack for monitor function in case of H8S target 
+       save EXR on stack for monitor function in case of H8S target
        when "-mno-exr" is passed.
-       * h8300/h8300-protos.h 
+       * h8300/h8300-protos.h
        (h8300_current_function_monitor_function_p): Add prototype.
        * doc/invoke.texi: Document H8S options.
 
index e4b4b59..8104e75 100644 (file)
@@ -1,6 +1,6 @@
 ;;- Machine description for GNU compiler, Motorola 68000 Version
 ;;  Copyright (C) 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001,
-;;  2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+;;  2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012
 ;;  Free Software Foundation, Inc.
 
 ;; This file is part of GCC.
   "!TARGET_COLDFIRE"
   "ror%.w %2,%0")
 
-(define_insn ""
+(define_insn "rotrhi_lowpart"
   [(set (strict_low_part (match_operand:HI 0 "register_operand" "+d"))
        (rotatert:HI (match_dup 0)
                     (match_operand:HI 1 "general_operand" "dI")))]
                     (match_operand:QI 1 "general_operand" "dI")))]
   "!TARGET_COLDFIRE"
   "ror%.b %1,%0")
+
+(define_expand "bswapsi2"
+  [(set (match_operand:SI 0 "register_operand")
+       (bswap:SI (match_operand:SI 1 "register_operand")))]
+  "!TARGET_COLDFIRE"
+{
+  rtx x = operands[0];
+  emit_move_insn (x, operands[1]);
+  emit_insn (gen_rotrhi_lowpart (gen_lowpart (HImode, x), GEN_INT (8)));
+  emit_insn (gen_rotlsi3 (x, x, GEN_INT (16)));
+  emit_insn (gen_rotrhi_lowpart (gen_lowpart (HImode, x), GEN_INT (8)));
+  DONE;
+})
 \f
 
 ;; Bit set/clear in memory byte.