aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-03-19 17:10:59 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2019-03-19 17:10:59 +0100
commitbb48c402f4ca67c9e5d0ed1104700c50058d6fb8 (patch)
treecf25d514dd08ac18576cff1e0907efb7bdfe43b8
parent22fdf6af1487e8920c6bd77c4c4f64ec805f21e1 (diff)
downloadgcc-bb48c402f4ca67c9e5d0ed1104700c50058d6fb8.zip
gcc-bb48c402f4ca67c9e5d0ed1104700c50058d6fb8.tar.gz
gcc-bb48c402f4ca67c9e5d0ed1104700c50058d6fb8.tar.bz2
re PR target/89378 ([MIPS] FAIL: gcc.dg/vect/pr88598-3.c -mmsa (internal compiler error))
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/mips/mips-msa.md4
-rw-r--r--gcc/config/mips/mips.c4
3 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 94d1e4e..f2ce11d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/mips/mips-msa.md b/gcc/config/mips/mips-msa.md
index 9777590..929646d 100644
--- a/gcc/config/mips/mips-msa.md
+++ b/gcc/config/mips/mips-msa.md
@@ -346,12 +346,12 @@
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;
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 4b42077..48f3244 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -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);
}