Trivial patch, no functional changes.

2016-04-19  Uros Bizjak  <ubiz...@gmail.com>

    * config/i386/i386.c (ix86_decompose_address): Use lowpart_subreg
    instead of simplify_gen_subreg (... , 0).
    (ix86_delegitimize_address): Ditto.
    (ix86_split_divmod): Ditto.
    (ix86_split_copysign_const): Ditto.
    (ix86_split_copysign_var): Ditto.
    (ix86_expand_args_builtin): Ditto.
    (ix86_expand_round_builtin): Ditto.
    (ix86_expand_special_args_builtin): Ditto.
    * config/i386/i386.md (TARGET_USE_VECTOR_FP_CONVERTS splitters): Ditto.
    (TARGET_SSE_PARTIAL_REG_DEPENDENCY splitters and peephole2s): Ditto.
    (udivmodqi4): Ditto.
    (absneg splitters): Ditto.
    (*jcc_bt<mode>_1): Ditto.

Bootstrapped and regression tested on x86_64-linux-gnu, committed to
mainline SVN.

Uros.
Index: config/i386/i386.c
===================================================================
--- config/i386/i386.c  (revision 235206)
+++ config/i386/i386.c  (working copy)
@@ -14100,7 +14100,7 @@ ix86_decompose_address (rtx addr, struct ix86_addr
       else if (GET_CODE (addr) == AND
               && const_32bit_mask (XEXP (addr, 1), DImode))
        {
-         addr = simplify_gen_subreg (SImode, XEXP (addr, 0), DImode, 0);
+         addr = lowpart_subreg (SImode, XEXP (addr, 0), DImode);
          if (addr == NULL_RTX)
            return 0;
 
@@ -16211,8 +16211,7 @@ ix86_delegitimize_address (rtx x)
          x = XVECEXP (XEXP (x, 0), 0, 0);
          if (GET_MODE (orig_x) != GET_MODE (x) && MEM_P (orig_x))
            {
-             x = simplify_gen_subreg (GET_MODE (orig_x), x,
-                                      GET_MODE (x), 0);
+             x = lowpart_subreg (GET_MODE (orig_x), x, GET_MODE (x));
              if (x == NULL_RTX)
                return orig_x;
            }
@@ -16303,7 +16302,7 @@ ix86_delegitimize_address (rtx x)
     }
   if (GET_MODE (orig_x) != Pmode && MEM_P (orig_x))
     {
-      result = simplify_gen_subreg (GET_MODE (orig_x), result, Pmode, 0);
+      result = lowpart_subreg (GET_MODE (orig_x), result, Pmode);
       if (result == NULL_RTX)
        return orig_x;
     }
@@ -19580,9 +19579,9 @@ ix86_split_idivmod (machine_mode mode, rtx operand
   emit_label (qimode_label);
   /* Don't use operands[0] for result of 8bit divide since not all
      registers support QImode ZERO_EXTRACT.  */
-  tmp0 = simplify_gen_subreg (HImode, scratch, mode, 0);
-  tmp1 = simplify_gen_subreg (HImode, operands[2], mode, 0);
-  tmp2 = simplify_gen_subreg (QImode, operands[3], mode, 0);
+  tmp0 = lowpart_subreg (HImode, scratch, mode);
+  tmp1 = lowpart_subreg (HImode, operands[2], mode);
+  tmp2 = lowpart_subreg (QImode, operands[3], mode);
   emit_insn (gen_udivmodhiqi3 (tmp0, tmp1, tmp2));
 
   if (signed_p)
@@ -21016,7 +21015,7 @@ ix86_split_copysign_const (rtx operands[])
   mode = GET_MODE (dest);
   vmode = GET_MODE (mask);
 
-  dest = simplify_gen_subreg (vmode, dest, mode, 0);
+  dest = lowpart_subreg (vmode, dest, mode);
   x = gen_rtx_AND (vmode, dest, mask);
   emit_insn (gen_rtx_SET (dest, x));
 
@@ -21062,7 +21061,7 @@ ix86_split_copysign_var (rtx operands[])
       emit_insn (gen_rtx_SET (scratch, x));
 
       dest = mask;
-      op0 = simplify_gen_subreg (vmode, op0, mode, 0);
+      op0 = lowpart_subreg (vmode, op0, mode);
       x = gen_rtx_NOT (vmode, dest);
       x = gen_rtx_AND (vmode, x, op0);
       emit_insn (gen_rtx_SET (dest, x));
@@ -21076,7 +21075,7 @@ ix86_split_copysign_var (rtx operands[])
       else                                             /* alternative 2,4 */
        {
           gcc_assert (REGNO (mask) == REGNO (scratch));
-          op1 = simplify_gen_subreg (vmode, op1, mode, 0);
+          op1 = lowpart_subreg (vmode, op1, mode);
          x = gen_rtx_AND (vmode, scratch, op1);
        }
       emit_insn (gen_rtx_SET (scratch, x));
@@ -21083,7 +21082,7 @@ ix86_split_copysign_var (rtx operands[])
 
       if (REGNO (op0) == REGNO (dest))                 /* alternative 1,2 */
        {
-         dest = simplify_gen_subreg (vmode, op0, mode, 0);
+         dest = lowpart_subreg (vmode, op0, mode);
          x = gen_rtx_AND (vmode, dest, nmask);
        }
       else                                             /* alternative 3,4 */
@@ -21090,7 +21089,7 @@ ix86_split_copysign_var (rtx operands[])
        {
           gcc_assert (REGNO (nmask) == REGNO (dest));
          dest = nmask;
-         op0 = simplify_gen_subreg (vmode, op0, mode, 0);
+         op0 = lowpart_subreg (vmode, op0, mode);
          x = gen_rtx_AND (vmode, dest, op0);
        }
       emit_insn (gen_rtx_SET (dest, x));
@@ -39115,7 +39114,7 @@ ix86_expand_args_builtin (const struct builtin_des
   else
     {
       real_target = gen_reg_rtx (tmode);
-      target = simplify_gen_subreg (rmode, real_target, tmode, 0);
+      target = lowpart_subreg (rmode, real_target, tmode);
     }
 
   for (i = 0; i < nargs; i++)
@@ -39132,7 +39131,7 @@ ix86_expand_args_builtin (const struct builtin_des
             count.  If count doesn't match, we put it in register.  */
          if (!match)
            {
-             op = simplify_gen_subreg (SImode, op, GET_MODE (op), 0);
+             op = lowpart_subreg (SImode, op, GET_MODE (op));
              if (!insn_p->operand[i + 1].predicate (op, mode))
                op = copy_to_reg (op);
            }
@@ -39288,7 +39287,7 @@ ix86_expand_args_builtin (const struct builtin_des
          else
            {
              op = copy_to_reg (op);
-             op = simplify_gen_subreg (mode, op, GET_MODE (op), 0);
+             op = lowpart_subreg (mode, op, GET_MODE (op));
            }
        }
 
@@ -39662,7 +39661,7 @@ ix86_expand_round_builtin (const struct builtin_de
          else
            {
              op = copy_to_reg (op);
-             op = simplify_gen_subreg (mode, op, GET_MODE (op), 0);
+             op = lowpart_subreg (mode, op, GET_MODE (op));
            }
        }
 
@@ -40060,7 +40059,7 @@ ix86_expand_special_args_builtin (const struct bui
              else
                {
                  op = copy_to_reg (op);
-                 op = simplify_gen_subreg (mode, op, GET_MODE (op), 0);
+                 op = lowpart_subreg (mode, op, GET_MODE (op));
                }
            }
        }
@@ -41276,9 +41275,9 @@ rdseed_step:
       op1 = expand_normal (arg1);
 
       op0 = copy_to_reg (op0);
-      op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0);
+      op0 = lowpart_subreg (mode0, op0, GET_MODE (op0));
       op1 = copy_to_reg (op1);
-      op1 = simplify_gen_subreg (mode0, op1, GET_MODE (op1), 0);
+      op1 = lowpart_subreg (mode0, op1, GET_MODE (op1));
 
       target = gen_reg_rtx (QImode);
       emit_insn (gen_rtx_SET (target, const0_rtx));
@@ -41669,7 +41668,7 @@ rdseed_step:
       else
        {
          op3 = copy_to_reg (op3);
-         op3 = simplify_gen_subreg (mode3, op3, GET_MODE (op3), 0);
+         op3 = lowpart_subreg (mode3, op3, GET_MODE (op3));
        }
       if (!insn_data[icode].operand[5].predicate (op4, mode4))
        {
@@ -41844,7 +41843,7 @@ rdseed_step:
       else
        {
          op1 = copy_to_reg (op1);
-         op1 = simplify_gen_subreg (mode1, op1, GET_MODE (op1), 0);
+         op1 = lowpart_subreg (mode1, op1, GET_MODE (op1));
        }
 
       if (!insn_data[icode].operand[2].predicate (op2, mode2))
@@ -41892,7 +41891,7 @@ rdseed_step:
       else
        {
          op0 = copy_to_reg (op0);
-         op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0);
+         op0 = lowpart_subreg (mode0, op0, GET_MODE (op0));
        }
 
       if (!insn_data[icode].operand[1].predicate (op1, mode1))
Index: config/i386/i386.md
===================================================================
--- config/i386/i386.md (revision 235206)
+++ config/i386/i386.md (working copy)
@@ -4221,8 +4221,8 @@
             (match_dup 3)
             (parallel [(const_int 0) (const_int 1)]))))]
 {
-  operands[2] = simplify_gen_subreg (V2DFmode, operands[0], DFmode, 0);
-  operands[3] = simplify_gen_subreg (V4SFmode, operands[0], DFmode, 0);
+  operands[2] = lowpart_subreg (V2DFmode, operands[0], DFmode);
+  operands[3] = lowpart_subreg (V4SFmode, operands[0], DFmode);
   /* Use movss for loading from memory, unpcklps reg, reg for registers.
      Try to avoid move when unpacking can be done in source.  */
   if (REG_P (operands[1]))
@@ -4239,7 +4239,7 @@
          emit_move_insn (tmp, operands[1]);
        }
       else
-       operands[3] = simplify_gen_subreg (V4SFmode, operands[1], SFmode, 0);
+       operands[3] = lowpart_subreg (V4SFmode, operands[1], SFmode);
       /* FIXME: vec_interleave_lowv4sf for AVX512VL should allow
         =v, v, then vbroadcastss will be only needed for AVX512F without
         AVX512VL.  */
@@ -4248,7 +4248,7 @@
                                               operands[3]));
       else
        {
-         rtx tmp = simplify_gen_subreg (V16SFmode, operands[3], V4SFmode, 0);
+         rtx tmp = lowpart_subreg (V16SFmode, operands[3], V4SFmode);
          emit_insn (gen_avx512f_vec_dupv16sf_1 (tmp, tmp));
        }
     }
@@ -4382,9 +4382,9 @@
             (match_dup 4))
           (match_dup 3)))]
 {
-  operands[2] = simplify_gen_subreg (V4SFmode, operands[0], SFmode, 0);
+  operands[2] = lowpart_subreg (V4SFmode, operands[0], SFmode);
   operands[3] = CONST0_RTX (V2SFmode);
-  operands[4] = simplify_gen_subreg (V2DFmode, operands[0], SFmode, 0);
+  operands[4] = lowpart_subreg (V2DFmode, operands[0], SFmode);
   /* Use movsd for loading from memory, unpcklpd for registers.
      Try to avoid move when unpacking can be done in source, or SSE3
      movddup is available.  */
@@ -4395,12 +4395,12 @@
          && (ORIGINAL_REGNO (operands[1]) < FIRST_PSEUDO_REGISTER
              || PSEUDO_REGNO_BYTES (ORIGINAL_REGNO (operands[1])) > 8))
        {
-         rtx tmp = simplify_gen_subreg (DFmode, operands[0], SFmode, 0);
+         rtx tmp = lowpart_subreg (DFmode, operands[0], SFmode);
          emit_move_insn (tmp, operands[1]);
          operands[1] = tmp;
        }
       else if (!TARGET_SSE3)
-       operands[4] = simplify_gen_subreg (V2DFmode, operands[1], DFmode, 0);
+       operands[4] = lowpart_subreg (V2DFmode, operands[1], DFmode);
       emit_insn (gen_vec_dupv2df (operands[4], operands[1]));
     }
   else
@@ -5141,9 +5141,8 @@
        || TARGET_AVX512VL)"
   [(const_int 0)]
 {
-  operands[3] = simplify_gen_subreg (<ssevecmode>mode, operands[0],
-                                    <MODE>mode, 0);
-  operands[4] = simplify_gen_subreg (V4SImode, operands[0], <MODE>mode, 0);
+  operands[3] = lowpart_subreg (<ssevecmode>mode, operands[0], <MODE>mode);
+  operands[4] = lowpart_subreg (V4SImode, operands[0], <MODE>mode);
 
   emit_insn (gen_sse2_loadld (operands[4],
                              CONST0_RTX (V4SImode), operands[1]));
@@ -5169,7 +5168,7 @@
 {
   const machine_mode vmode = <MODEF:ssevecmode>mode;
   const machine_mode mode = <MODEF:MODE>mode;
-  rtx t, op0 = simplify_gen_subreg (vmode, operands[0], mode, 0);
+  rtx t, op0 = lowpart_subreg (vmode, operands[0], mode);
 
   emit_move_insn (op0, CONST0_RTX (vmode));
 
@@ -5202,10 +5201,8 @@
          (match_dup 0)
          (const_int 1)))]
 {
-  operands[0] = simplify_gen_subreg (V4SFmode, operands[0],
-                                    SFmode, 0);
-  operands[1] = simplify_gen_subreg (V2DFmode, operands[1],
-                                    DFmode, 0);
+  operands[0] = lowpart_subreg (V4SFmode, operands[0], SFmode);
+  operands[1] = lowpart_subreg (V2DFmode, operands[1], DFmode);
   emit_move_insn (operands[0], CONST0_RTX (V4SFmode));
 })
 
@@ -5232,10 +5229,8 @@
           (match_dup 0)
           (const_int 1)))]
 {
-  operands[0] = simplify_gen_subreg (V2DFmode, operands[0],
-                                    DFmode, 0);
-  operands[1] = simplify_gen_subreg (V4SFmode, operands[1],
-                                    SFmode, 0);
+  operands[0] = lowpart_subreg (V2DFmode, operands[0], DFmode);
+  operands[1] = lowpart_subreg (V4SFmode, operands[1], SFmode);
   emit_move_insn (operands[0], CONST0_RTX (V2DFmode));
 })
 
@@ -7710,7 +7705,7 @@
 
   /* Extract remainder from AH.  */
   tmp1 = gen_rtx_ZERO_EXTRACT (SImode, tmp0, GEN_INT (8), GEN_INT (8));
-  tmp1 = simplify_gen_subreg (QImode, tmp1, SImode, 0);
+  tmp1 = lowpart_subreg (QImode, tmp1, SImode);
   rtx_insn *insn = emit_move_insn (operands[3], tmp1);
 
   mod = gen_rtx_UMOD (QImode, operands[1], operands[2]);
@@ -9320,8 +9315,8 @@
   machine_mode vmode = GET_MODE (operands[2]);
   rtx tmp;
 
-  operands[0] = simplify_gen_subreg (vmode, operands[0], mode, 0);
-  operands[1] = simplify_gen_subreg (vmode, operands[1], mode, 0);
+  operands[0] = lowpart_subreg (vmode, operands[0], mode);
+  operands[1] = lowpart_subreg (vmode, operands[1], mode);
   if (operands_match_p (operands[0], operands[2]))
     std::swap (operands[1], operands[2]);
   if (GET_CODE (operands[3]) == ABS)
@@ -11240,7 +11235,7 @@
                      (label_ref (match_dup 3))
                      (pc)))]
 {
-  operands[2] = simplify_gen_subreg (SImode, operands[2], QImode, 0);
+  operands[2] = lowpart_subreg (SImode, operands[2], QImode);
   operands[0] = shallow_copy_rtx (operands[0]);
   PUT_CODE (operands[0], reverse_condition (GET_CODE (operands[0])));
 })

Reply via email to