i386-protos.h (split_double_mode): New prototype.
authorUros Bizjak <uros@gcc.gnu.org>
Sun, 19 Sep 2010 12:42:32 +0000 (14:42 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Sun, 19 Sep 2010 12:42:32 +0000 (14:42 +0200)
* config/i386/i386-protos.h (split_double_mode): New prototype.
(split_di, split_ti): Remove prototypes.
* config/i386/i386.c (split_double_mode): New function.
(split_di, split_ti): Remove.
(ix86_expand_branch): Use split_double_mode.
(ix86_split_to_parts): Ditto.
(ix86_split_ashl): Ditto.
(ix86_split_ashr): Ditto.
(ix86_split_lshr): Ditto.
(ix86_force_to_memory): Ditto.
* config/i386/i386.md: Use split_double_mode in double-mode splitters.

From-SVN: r164413

gcc/ChangeLog
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/testsuite/ChangeLog

index 125840938a9c89d335bd5b0fe7dd59c20e1326a4..60cd308e2949d8d2760cebe7fa1acc235986e61c 100644 (file)
@@ -1,3 +1,17 @@
+2010-09-19  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386-protos.h (split_double_mode): New prototype.
+       (split_di, split_ti): Remove prototypes.
+       * config/i386/i386.c (split_double_mode): New function.
+       (split_di, split_ti): Remove.
+       (ix86_expand_branch): Use split_double_mode.
+       (ix86_split_to_parts): Ditto.
+       (ix86_split_ashl): Ditto.
+       (ix86_split_ashr): Ditto.
+       (ix86_split_lshr): Ditto.
+       (ix86_force_to_memory): Ditto.
+       * config/i386/i386.md: Use split_double_mode in double-mode splitters.
+
 2010-09-18  Jan Hubicka  <jh@suse.cz>
 
        PR tree-optimization/45453
@@ -16,7 +30,8 @@
        (canonicalize_constructor_val): Use it.
        (get_symbol_constant_value): Be reaqdy for canonicalize_constructor_val
        returning NULL.
-       (gimple_fold_obj_type_ref_known_binfo): Use static_object_in_other_unit_p.
+       (gimple_fold_obj_type_ref_known_binfo): Use
+       static_object_in_other_unit_p.
 
 2010-09-18  Richard Guenther  <rguenther@suse.de>
 
@@ -35,8 +50,7 @@
 2010-09-18  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/45709
-       * tree-inline.c (copy_phis_for_bb): Fixup new_edge when
-       we splitted it.
+       * tree-inline.c (copy_phis_for_bb): Fixup new_edge when we splitted it.
 
 2010-09-17  Sebastian Pop  <sebastian.pop@amd.com>
 
@@ -48,7 +62,9 @@
 
 2010-09-17  Sebastian Pop  <sebastian.pop@amd.com>
 
-       Revert commit: 2009-12-16  Ben Elliston  <bje@au.ibm.com>
+       Revert:
+       2009-12-16  Ben Elliston  <bje@au.ibm.com>
+
        * tree-data-ref.c (dot_rdg_1): Added back.
        (dot_rdg): Same.  Added "#if 0" around system call.
 
@@ -82,8 +98,7 @@
        passed an invalid value, print an error instead of ICEing.
        (valid_psw_flag): New.
        (rx_expand_builtin): Call it for setpsw/clrpsw.
-       (rx_expand_builtin_mvtipl): Pass an integer to IN_RANGE, not an
-       RTX.
+       (rx_expand_builtin_mvtipl): Pass an integer to IN_RANGE, not an RTX.
 
        * config/rx/rx.md (bitclr): Don't mark the output as early-clobber.
        (bitclr_in_memory): Likewise.
        (do_spec): Remove code concerning combine.
        (main): Likewise.
        * doc/invoke.texi: Remove traces of -combine.
-       * lto-wrapper.c (run_gcc): Do not pass -combine to the compiler
-       driver.
+       * lto-wrapper.c (run_gcc): Do not pass -combine to the compiler driver.
 
 2010-09-17  Richard Guenther  <rguenther@suse.de>
 
        alpha_override_options.
        * config/alpha/alpha-protos.h (override_options): Remove.
        * config/alpha/alpha.c (override_options): Rename to
-       alpha_option_override.  Call SUBTARGET_OVERRIDE_OPTIONS.  Make
-       static.
+       alpha_option_override.  Call SUBTARGET_OVERRIDE_OPTIONS.  Make static.
        (TARGET_OPTION_OVERRIDE): Define.
        * config/alpha/alpha.h (OVERRIDE_OPTIONS): Remove.
        * config/alpha/vms.h (SUBTARGET_OVERRIDE_OPTIONS): Define instead
        (arm_override_options): Rename to arm_option_override.  Make
        static.  Call SUBTARGET_OVERRIDE_OPTIONS.
        * config/arm/arm.h (OVERRIDE_OPTIONS): Remove.
-       * config/arm/arm.md: Update comment referring to
-       arm_override_options.
+       * config/arm/arm.md: Update comment referring to arm_override_options.
        * config/arm/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define
        instead of OVERRIDE_OPTIONS.
        * config/avr/avr-protos.h (avr_override_options): Remove.
        * config/avr/avr.c (TARGET_OPTION_OVERRIDE): Define.
-       (avr_override_options): Rename to avr_option_override.  Make
-       static.
+       (avr_override_options): Rename to avr_option_override.  Make static.
        * config/avr/avr.h (OVERRIDE_OPTIONS): Remove.
        * config/bfin/bfin-protos.h (override_options): Remove (twice).
        * config/bfin/bfin.c (override_options): Rename to
        * config/bfin/bfin.h (OVERRIDE_OPTIONS): Remove.
        * config/cris/cris-protos.h (cris_override_options): Remove.
        * config/cris/cris.c (TARGET_OPTION_OVERRIDE): Define.
-       (cris_override_options): Rename to cris_option_override.  Make
-       static.
+       (cris_override_options): Rename to cris_option_override.  Make static.
        * config/cris/cris.h (OVERRIDE_OPTIONS): Remove.
        * config/frv/frv-protos.h (frv_override_options): Remove.
        * config/frv/frv.c (TARGET_OPTION_OVERRIDE): Define.
-       (frv_override_options): Rename to frv_option_override.  Make
-       static.
+       (frv_override_options): Rename to frv_option_override.  Make static.
        * config/frv/frv.h (OVERRIDE_OPTIONS): Remove.
        * config/h8300/h8300-protos.h (h8300_init_once): Remove.
        * config/h8300/h8300.c (h8300_init_once): Rename to
        (ix86_option_override): New.
        (TARGET_OPTION_OVERRIDE): Define.
        * config/i386/i386.h (OVERRIDE_OPTION): Remove.
-       * config/i386/linux64.h (DEFAULT_PCC_STRUCT_RETURN): Update
-       comment.
+       * config/i386/linux64.h (DEFAULT_PCC_STRUCT_RETURN): Update comment.
        * config/ia64/ia64.c (ia64_file_start): Update comment referring
        to ia64_override_options.
        * config/iq2000/iq2000-protos.h (override_options): Remove.
        * config/iq2000/iq2000.c (TARGET_OPTION_OVERRIDE): Define.
-       (override_options): Rename to iq2000_option_override.  Make
-       static.
+       (override_options): Rename to iq2000_option_override.  Make static.
        * config/iq2000/iq2000.h (OVERRIDE_OPTIONS): Remove.
        * config/lm32/lm32-protos.h (lm32_override_options): Remove.
        * config/lm32/lm32.c (TARGET_OPTION_OVERRIDE): Define.
-       (lm32_override_options): Rename to lm32_option_override.  Make
-       static.
+       (lm32_override_options): Rename to lm32_option_override.  Make static.
        * config/lm32/lm32.h (OVERRIDE_OPTIONS): Remove.
        * config/m32r/m32r.c (TARGET_OPTION_OVERRIDE): Define.
        (m32r_option_override): New.
        (m32r_init): Update comment.
        * config/m32r/m32r.h (OVERRIDE_OPTIONS): Remove.
-       * config/m68hc11/m68hc11-protos.h (m68hc11_override_options):
-       Remove.
+       * config/m68hc11/m68hc11-protos.h (m68hc11_override_options): Remove.
        * config/m68hc11/m68hc11.c (TARGET_OPTION_OVERRIDE): Define.
        (m68hc11_override_options): Rename to m68hc11_option_override.
        Make static.  Return void.
        * config/mcore/mcore.h (OVERRIDE_OPTIONS): Remove.
        * config/mep/mep-protos.h (mep_override_options): Remove.
        * config/mep/mep.c (TARGET_OPTION_OVERRIDE): Define.
-       (mep_override_options): Rename to mep_option_override.  Make
-       static.
+       (mep_override_options): Rename to mep_option_override.  Make static.
        * config/mep/mep.h (OVERRIDE_OPTIONS): Remove.
        * config/mmix/mmix-protos.h (mmix_override_options): Remove.
        * config/mmix/mmix.c (TARGET_OPTION_OVERRIDE): Define.
-       (mmix_override_options): Rename to mmix_option_override.  Make
-       static.
+       (mmix_override_options): Rename to mmix_option_override.  Make static.
        * config/mmix/mmix.h (OVERRIDE_OPTIONS): Remove.
-       * config/mn10300/mn10300-protos.h (mn10300_override_options):
-       Remove.
+       * config/mn10300/mn10300-protos.h (mn10300_override_options): Remove.
        * config/mn10300/mn10300.c (TARGET_OPTION_OVERRIDE): Define.
        (mn10300_override_options): Rename to mn10300_option_override.
        Make static.
        Make static.  Update comment and definition of
        TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE.
        * config/picochip/picochip.h (OVERRIDE_OPTIONS): Remove.
-       * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Update
-       comment.
-       * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Update
-       comment.
-       * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Update
-       comment.
-       * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Update
-       comment.
-       * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Update
-       comment.
+       * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment.
+       * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment.
+       * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment.
+       * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment.
+       * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment.
        * config/rs6000/linux64.h (OPTION_TARGET_CPU_DEFAULT): Define
        instead of OVERRIDE_OPTIONS.
        * config/rs6000/rs6000-modes.def: Update comment referring to
        (rs6000_option_override): New.
        * config/rs6000/rs6000.h (OPTION_TARGET_CPU_DEFAULT): Define
        instead of OVERRIDE_OPTIONS.
-       * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Update
-       comment.
+       * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Update comment.
        * config/s390/s390-protos.h (override_options): Remove.
        * config/s390/s390.c (override_options): Rename to
        s390_option_override.  Make static.
        * config/vxworks.h: Update comment referring to OVERRIDE_OPTIONS.
        * config/xtensa/xtensa-protos.h (override_options): Remove.
        * config/xtensa/xtensa.c (TARGET_OPTION_OVERRIDE): Define.
-       (override_options): Rename to xtensa_option_override.  Make
-       static.
+       (override_options): Rename to xtensa_option_override.  Make static.
        * config/xtensa/xtensa.h (OVERRIDE_OPTIONS): Remove.
 
 2010-09-16  Richard Guenther  <rguenther@suse.de>
        PR target/45142
        * config/i386/sse.md (vec_set<mode>_0): Do not set mode attribute for
        alternative 2.
-       (vec_set<moode>_0 splitter): Use SSEMODE4S mode iterator to also
+       (vec_set<mode>_0 splitter): Use SSEMODE4S mode iterator to also
        split V4SI operands.
 
 2010-08-01  Anatoly Sokolov  <aesok@post.ru>
index 909adb9c2b18a63973f7f59b7ecf65561c871da8..fd31e9917f5b0945a7339ae0e155e9c8e35f650d 100644 (file)
@@ -64,8 +64,7 @@ extern bool legitimate_pic_address_disp_p (rtx);
 extern void print_reg (rtx, int, FILE*);
 extern void ix86_print_operand (FILE *, rtx, int);
 
-extern void split_di (rtx[], int, rtx[], rtx[]);
-extern void split_ti (rtx[], int, rtx[], rtx[]);
+extern void split_double_mode (enum machine_mode, rtx[], int, rtx[], rtx[]);
 
 extern const char *output_set_got (rtx, rtx);
 extern const char *output_387_binary_op (rtx, rtx*);
index d9f92371e683ebd87be752e7dd327aa374bdfbc5..9644a64f865fe57500498e466d279c28e485180a 100644 (file)
@@ -13248,15 +13248,33 @@ i386_asm_output_addr_const_extra (FILE *file, rtx x)
   return true;
 }
 \f
-/* Split one or more DImode RTL references into pairs of SImode
+/* Split one or more double-mode RTL references into pairs of half-mode
    references.  The RTL can be REG, offsettable MEM, integer constant, or
-   CONST_DOUBLE.  "operands" is a pointer to an array of DImode RTL to
+   CONST_DOUBLE.  "operands" is a pointer to an array of double-mode RTLs to
    split and "num" is its length.  lo_half and hi_half are output arrays
    that parallel "operands".  */
 
 void
-split_di (rtx operands[], int num, rtx lo_half[], rtx hi_half[])
+split_double_mode (enum machine_mode mode, rtx operands[],
+                  int num, rtx lo_half[], rtx hi_half[])
 {
+  enum machine_mode half_mode;
+  unsigned int byte;
+
+  switch (mode)
+    {
+    case TImode:
+      half_mode = DImode;
+      break;
+    case DImode:
+      half_mode = SImode;
+      break;
+    default:
+      gcc_unreachable ();
+    }
+
+  byte = GET_MODE_SIZE (half_mode);
+
   while (num--)
     {
       rtx op = operands[num];
@@ -13265,44 +13283,17 @@ split_di (rtx operands[], int num, rtx lo_half[], rtx hi_half[])
          but we still have to handle it.  */
       if (MEM_P (op))
        {
-         lo_half[num] = adjust_address (op, SImode, 0);
-         hi_half[num] = adjust_address (op, SImode, 4);
+         lo_half[num] = adjust_address (op, half_mode, 0);
+         hi_half[num] = adjust_address (op, half_mode, byte);
        }
       else
        {
-         lo_half[num] = simplify_gen_subreg (SImode, op,
+         lo_half[num] = simplify_gen_subreg (half_mode, op,
                                              GET_MODE (op) == VOIDmode
-                                             ? DImode : GET_MODE (op), 0);
-         hi_half[num] = simplify_gen_subreg (SImode, op,
+                                             ? mode : GET_MODE (op), 0);
+         hi_half[num] = simplify_gen_subreg (half_mode, op,
                                              GET_MODE (op) == VOIDmode
-                                             ? DImode : GET_MODE (op), 4);
-       }
-    }
-}
-/* Split one or more TImode RTL references into pairs of DImode
-   references.  The RTL can be REG, offsettable MEM, integer constant, or
-   CONST_DOUBLE.  "operands" is a pointer to an array of DImode RTL to
-   split and "num" is its length.  lo_half and hi_half are output arrays
-   that parallel "operands".  */
-
-void
-split_ti (rtx operands[], int num, rtx lo_half[], rtx hi_half[])
-{
-  while (num--)
-    {
-      rtx op = operands[num];
-
-      /* simplify_subreg refuse to split volatile memory addresses, but we
-         still have to handle it.  */
-      if (MEM_P (op))
-       {
-         lo_half[num] = adjust_address (op, DImode, 0);
-         hi_half[num] = adjust_address (op, DImode, 8);
-       }
-      else
-       {
-         lo_half[num] = simplify_gen_subreg (DImode, op, TImode, 0);
-         hi_half[num] = simplify_gen_subreg (DImode, op, TImode, 8);
+                                             ? mode : GET_MODE (op), byte);
        }
     }
 }
@@ -16273,9 +16264,10 @@ ix86_expand_compare (enum rtx_code code, rtx op0, rtx op1)
 void
 ix86_expand_branch (enum rtx_code code, rtx op0, rtx op1, rtx label)
 {
+  enum machine_mode mode = GET_MODE (op0);
   rtx tmp;
 
-  switch (GET_MODE (op0))
+  switch (mode)
     {
     case SFmode:
     case DFmode:
@@ -16306,18 +16298,11 @@ ix86_expand_branch (enum rtx_code code, rtx op0, rtx op1, rtx label)
            tmp = op0, op0 = op1, op1 = tmp;
            code = swap_condition (code);
          }
-       if (GET_MODE (op0) == DImode)
-         {
-           split_di (&op0, 1, lo+0, hi+0);
-           split_di (&op1, 1, lo+1, hi+1);
-           submode = SImode;
-         }
-       else
-         {
-           split_ti (&op0, 1, lo+0, hi+0);
-           split_ti (&op1, 1, lo+1, hi+1);
-           submode = DImode;
-         }
+
+       split_double_mode (mode, &op0, 1, lo+0, hi+0);
+       split_double_mode (mode, &op1, 1, lo+1, hi+1);
+
+       submode = mode == DImode ? SImode : DImode;
 
        /* When comparing for equality, we can use (hi0^hi1)|(lo0^lo1) to
           avoid two branches.  This costs one extra insn, so disable when
@@ -16474,7 +16459,7 @@ ix86_expand_carry_flag_compare (enum rtx_code code, rtx op0, rtx op1, rtx *pop)
   enum machine_mode mode =
     GET_MODE (op0) != VOIDmode ? GET_MODE (op0) : GET_MODE (op1);
 
-  /* Do not handle DImode compares that go through special path.  */
+  /* Do not handle double-mode compares that go through special path.  */
   if (mode == (TARGET_64BIT ? TImode : DImode))
     return false;
 
@@ -17686,8 +17671,8 @@ ix86_expand_int_addcc (rtx operands[])
 }
 
 
-/* Split operands 0 and 1 into SImode parts.  Similar to split_di, but
-   works for floating pointer parameters and nonoffsetable memories.
+/* Split operands 0 and 1 into half-mode parts.  Similar to split_double_mode,
+   but works for floating pointer parameters and nonoffsetable memories.
    For pushes, it returns just stack offsets; the values will be saved
    in the right order.  Maximally three parts are generated.  */
 
@@ -17740,7 +17725,7 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode)
   if (!TARGET_64BIT)
     {
       if (mode == DImode)
-       split_di (&operand, 1, &parts[0], &parts[1]);
+       split_double_mode (mode, &operand, 1, &parts[0], &parts[1]);
       else
        {
          int i;
@@ -17791,7 +17776,7 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode)
   else
     {
       if (mode == TImode)
-       split_ti (&operand, 1, &parts[0], &parts[1]);
+       split_double_mode (mode, &operand, 1, &parts[0], &parts[1]);
       if (mode == XFmode || mode == TFmode)
        {
          enum machine_mode upper_mode = mode==XFmode ? SImode : DImode;
@@ -17862,7 +17847,7 @@ ix86_split_long_move (rtx operands[])
   /* The DFmode expanders may ask us to move double.
      For 64bit target this is single move.  By hiding the fact
      here we simplify i386.md splitters.  */
-  if (GET_MODE_SIZE (GET_MODE (operands[0])) == 8 && TARGET_64BIT)
+  if (TARGET_64BIT && GET_MODE_SIZE (GET_MODE (operands[0])) == 8)
     {
       /* Optimize constant pool reference to immediates.  This is used by
         fp moves, that force all constants to memory to allow combining.  */
@@ -18104,7 +18089,7 @@ ix86_split_ashl (rtx *operands, rtx scratch, enum machine_mode mode)
 
   if (CONST_INT_P (operands[2]))
     {
-      (mode == DImode ? split_di : split_ti) (operands, 2, low, high);
+      split_double_mode (mode, operands, 2, low, high);
       count = INTVAL (operands[2]) & (single_width * 2 - 1);
 
       if (count >= single_width)
@@ -18127,7 +18112,7 @@ ix86_split_ashl (rtx *operands, rtx scratch, enum machine_mode mode)
       return;
     }
 
-  (mode == DImode ? split_di : split_ti) (operands, 1, low, high);
+  split_double_mode (mode, operands, 1, low, high);
 
   if (operands[1] == const1_rtx)
     {
@@ -18204,7 +18189,7 @@ ix86_split_ashl (rtx *operands, rtx scratch, enum machine_mode mode)
       if (!rtx_equal_p (operands[0], operands[1]))
        emit_move_insn (operands[0], operands[1]);
 
-      (mode == DImode ? split_di : split_ti) (operands, 1, low, high);
+      split_double_mode (mode, operands, 1, low, high);
       emit_insn ((mode == DImode
                  ? gen_x86_shld
                  : gen_x86_64_shld) (high[0], low[0], operands[2]));
@@ -18237,7 +18222,7 @@ ix86_split_ashr (rtx *operands, rtx scratch, enum machine_mode mode)
 
   if (CONST_INT_P (operands[2]))
     {
-      (mode == DImode ? split_di : split_ti) (operands, 2, low, high);
+      split_double_mode (mode, operands, 2, low, high);
       count = INTVAL (operands[2]) & (single_width * 2 - 1);
 
       if (count == single_width * 2 - 1)
@@ -18281,7 +18266,7 @@ ix86_split_ashr (rtx *operands, rtx scratch, enum machine_mode mode)
       if (!rtx_equal_p (operands[0], operands[1]))
        emit_move_insn (operands[0], operands[1]);
 
-      (mode == DImode ? split_di : split_ti) (operands, 1, low, high);
+      split_double_mode (mode, operands, 1, low, high);
 
       emit_insn ((mode == DImode
                  ? gen_x86_shrd
@@ -18318,7 +18303,7 @@ ix86_split_lshr (rtx *operands, rtx scratch, enum machine_mode mode)
 
   if (CONST_INT_P (operands[2]))
     {
-      (mode == DImode ? split_di : split_ti) (operands, 2, low, high);
+      split_double_mode (mode, operands, 2, low, high);
       count = INTVAL (operands[2]) & (single_width * 2 - 1);
 
       if (count >= single_width)
@@ -18349,7 +18334,7 @@ ix86_split_lshr (rtx *operands, rtx scratch, enum machine_mode mode)
       if (!rtx_equal_p (operands[0], operands[1]))
        emit_move_insn (operands[0], operands[1]);
 
-      (mode == DImode ? split_di : split_ti) (operands, 1, low, high);
+      split_double_mode (mode, operands, 1, low, high);
 
       emit_insn ((mode == DImode
                  ? gen_x86_shrd
@@ -26144,7 +26129,7 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand)
        case DImode:
          {
            rtx operands[2];
-           split_di (&operand, 1, operands, operands + 1);
+           split_double_mode (mode, &operand, 1, operands, operands + 1);
            emit_insn (
                        gen_rtx_SET (VOIDmode,
                                     gen_rtx_MEM (SImode,
index 4ccd932a84034f3c44784e3fc44934be75f89df8..e3161bb7e666fd715cde6259ef0b90c14206c634 100644 (file)
   [(set (match_dup 0) (match_dup 1))
    (set (match_dup 2) (match_dup 3))]
 {
-  split_di (&operands[1], 1, &operands[2], &operands[3]);
+  split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]);
 
   operands[1] = gen_lowpart (DImode, operands[2]);
   operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx,
   [(set (match_dup 0) (match_dup 1))
    (set (match_dup 2) (match_dup 3))]
 {
-  split_di (&operands[1], 1, &operands[2], &operands[3]);
+  split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]);
 
   operands[1] = gen_lowpart (DImode, operands[2]);
   operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx,
    && !x86_64_immediate_operand (operands[1], DImode) && 1"
   [(set (match_dup 2) (match_dup 3))
    (set (match_dup 4) (match_dup 5))]
-  "split_di (&operands[0], 2, &operands[2], &operands[4]);")
+  "split_double_mode (DImode, &operands[0], 2, &operands[2], &operands[4]);")
 
 (define_split
   [(set (match_operand:DI 0 "memory_operand" "")
    && !x86_64_immediate_operand (operands[1], DImode)"
   [(set (match_dup 2) (match_dup 3))
    (set (match_dup 4) (match_dup 5))]
-  "split_di (&operands[0], 2, &operands[2], &operands[4]);")
+  "split_double_mode (DImode, &operands[0], 2, &operands[2], &operands[4]);")
 
 (define_insn "*movdi_internal"
   [(set (match_operand:DI 0 "nonimmediate_operand"
        (zero_extend:DI (match_dup 0)))]
   "TARGET_64BIT"
   [(set (match_dup 4) (const_int 0))]
-  "split_di (&operands[0], 1, &operands[3], &operands[4]);")
+  "split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);")
 
 ;; %%% Kill me once multi-word ops are sane.
 (define_insn "zero_extendsidi2_1"
   "!TARGET_64BIT && reload_completed
    && true_regnum (operands[0]) == true_regnum (operands[1])"
   [(set (match_dup 4) (const_int 0))]
-  "split_di (&operands[0], 1, &operands[3], &operands[4]);")
+  "split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);")
 
 (define_split
   [(set (match_operand:DI 0 "nonimmediate_operand" "")
    && !(MMX_REG_P (operands[0]) || SSE_REG_P (operands[0]))"
   [(set (match_dup 3) (match_dup 1))
    (set (match_dup 4) (const_int 0))]
-  "split_di (&operands[0], 1, &operands[3], &operands[4]);")
+  "split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);")
 
 (define_insn "zero_extend<mode>di2"
   [(set (match_operand:DI 0 "register_operand" "=r")
    (parallel [(set (match_dup 1) (ashiftrt:SI (match_dup 1) (const_int 31)))
              (clobber (reg:CC FLAGS_REG))])
    (set (match_dup 4) (match_dup 1))]
-  "split_di (&operands[0], 1, &operands[3], &operands[4]);")
+  "split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);")
 
 ;; Extend to memory case when source register does not die.
 (define_split
   "reload_completed"
   [(const_int 0)]
 {
-  split_di (&operands[0], 1, &operands[3], &operands[4]);
+  split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);
 
   emit_move_insn (operands[3], operands[1]);
 
   "reload_completed"
   [(const_int 0)]
 {
-  split_di (&operands[0], 1, &operands[3], &operands[4]);
+  split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);
 
   if (true_regnum (operands[3]) != true_regnum (operands[1]))
     emit_move_insn (operands[3], operands[1]);
                       (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0))
                       (match_dup 5))))
              (clobber (reg:CC FLAGS_REG))])]
-  "split_<dwi> (&operands[0], 3, &operands[0], &operands[3]);")
+  "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);")
 
 (define_insn "*add<mode>3_cc"
   [(set (reg:CC FLAGS_REG)
                       (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0))
                       (match_dup 5))))
              (clobber (reg:CC FLAGS_REG))])]
-  "split_<dwi> (&operands[0], 3, &operands[0], &operands[3]);")
+  "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);")
 
 (define_insn "*sub<mode>_1"
   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>")
     [(set (match_dup 2)
          (neg:DWIH (match_dup 2)))
      (clobber (reg:CC FLAGS_REG))])]
-  "split_<dwi> (&operands[0], 2, &operands[0], &operands[2]);")
+  "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);")
 
 (define_insn "*neg<mode>2_1"
   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
 {
   operands[6] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
 
-  split_<dwi> (&operands[0], 1, &operands[4], &operands[5]);
+  split_double_mode (<DWI>mode, &operands[0], 1, &operands[4], &operands[5]);
 })
 
 (define_insn_and_split "ix86_rotr<dwi>3_doubleword"
 {
   operands[6] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
 
-  split_<dwi> (&operands[0], 1, &operands[4], &operands[5]);
+  split_double_mode (<DWI>mode, &operands[0], 1, &operands[4], &operands[5]);
 })
 
 (define_insn "*<rotate_insn><mode>3_1"
                      (match_dup 7)
                      (match_dup 8)))]
 {
-  split_di (&operands[2], 2, &operands[5], &operands[7]);
-  split_di (&operands[0], 1, &operands[2], &operands[3]);
+  split_double_mode (DImode, &operands[2], 2, &operands[5], &operands[7]);
+  split_double_mode (DImode, &operands[0], 1, &operands[2], &operands[3]);
 })
 
 (define_insn "*movxfcc_1"
index 805e4b89357c8081a1fc91e04967045d30714f0c..9deaf42652acdf14c4103a8685a1639d68a4c781 100644 (file)
@@ -66,7 +66,7 @@
 
 2010-09-17  Nicola Pero  <nicola.pero@meta-innovation.com>
 
-       PR testsuite/45692      
+       PR testsuite/45692
        * objc/execute/exceptions/throw-nil.m: Run the test only with the
        GNU runtime.