re PR target/89378 ([MIPS] FAIL: gcc.dg/vect/pr88598-3.c -mmsa (internal compiler...
authorJakub Jelinek <jakub@redhat.com>
Tue, 19 Mar 2019 16:10:59 +0000 (17:10 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 19 Mar 2019 16:10:59 +0000 (17:10 +0100)
PR target/89378
* config/mips/mips.c (mips_expand_vec_cond_expr): Use gen_lowpart
instead of gen_rtx_SUBREG.
* config/mips/mips-msa.md (vec_extract<mode><unitmode>): Likewise.

From-SVN: r269801

gcc/ChangeLog
gcc/config/mips/mips-msa.md
gcc/config/mips/mips.c

index 94d1e4e950e3901612c58d585ab7de0c8b43958d..f2ce11d4d5fb4c1a3da830df637ac0634d8c4c42 100644 (file)
@@ -1,3 +1,10 @@
+2019-03-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/89378
+       * config/mips/mips.c (mips_expand_vec_cond_expr): Use gen_lowpart
+       instead of gen_rtx_SUBREG.
+       * config/mips/mips-msa.md (vec_extract<mode><unitmode>): Likewise.
+
 2019-03-19  Richard Biener  <rguenther@suse.de>
 
        PR debug/88389
index 9777590c3b93fc765a77ba236586506268e5af29..929646d3b71f281fa1de5dde40ace1e8ff2e88c2 100644 (file)
         operands[2] accordingly.  */
       rtx wd = gen_reg_rtx (V16QImode);
       rtx ws = gen_reg_rtx (V16QImode);
-      emit_move_insn (ws, gen_rtx_SUBREG (V16QImode, operands[1], 0));
+      emit_move_insn (ws, gen_lowpart (V16QImode, operands[1]));
       rtx n = GEN_INT (val * GET_MODE_SIZE (<UNITMODE>mode));
       gcc_assert (INTVAL (n) < GET_MODE_NUNITS (V16QImode));
       emit_insn (gen_msa_sldi_b (wd, ws, ws, n));
       temp = gen_reg_rtx (<MODE>mode);
-      emit_move_insn (temp, gen_rtx_SUBREG (<MODE>mode, wd, 0));
+      emit_move_insn (temp, gen_lowpart (<MODE>mode, wd));
     }
   emit_insn (gen_msa_vec_extract_<msafmt_f> (operands[0], temp));
   DONE;
index 4b42077a3365fe6c7a69482cbe8486fe368e6d7f..48f324410b91c91626b900db6df00481ee4548d9 100644 (file)
@@ -22265,7 +22265,7 @@ mips_expand_vec_cond_expr (machine_mode mode, machine_mode vimode,
          if (mode != vimode)
            {
              xop1 = gen_reg_rtx (vimode);
-             emit_move_insn (xop1, gen_rtx_SUBREG (vimode, operands[1], 0));
+             emit_move_insn (xop1, gen_lowpart (vimode, operands[1]));
            }
          emit_move_insn (src1, xop1);
        }
@@ -22282,7 +22282,7 @@ mips_expand_vec_cond_expr (machine_mode mode, machine_mode vimode,
          if (mode != vimode)
            {
              xop2 = gen_reg_rtx (vimode);
-             emit_move_insn (xop2, gen_rtx_SUBREG (vimode, operands[2], 0));
+             emit_move_insn (xop2, gen_lowpart (vimode, operands[2]));
            }
          emit_move_insn (src2, xop2);
        }