Commit bb48c402 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 22fdf6af
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> 2019-03-19 Richard Biener <rguenther@suse.de>
PR debug/88389 PR debug/88389
......
...@@ -346,12 +346,12 @@ ...@@ -346,12 +346,12 @@
operands[2] accordingly. */ operands[2] accordingly. */
rtx wd = gen_reg_rtx (V16QImode); rtx wd = gen_reg_rtx (V16QImode);
rtx ws = 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)); rtx n = GEN_INT (val * GET_MODE_SIZE (<UNITMODE>mode));
gcc_assert (INTVAL (n) < GET_MODE_NUNITS (V16QImode)); gcc_assert (INTVAL (n) < GET_MODE_NUNITS (V16QImode));
emit_insn (gen_msa_sldi_b (wd, ws, ws, n)); emit_insn (gen_msa_sldi_b (wd, ws, ws, n));
temp = gen_reg_rtx (<MODE>mode); 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)); emit_insn (gen_msa_vec_extract_<msafmt_f> (operands[0], temp));
DONE; DONE;
......
...@@ -22265,7 +22265,7 @@ mips_expand_vec_cond_expr (machine_mode mode, machine_mode vimode, ...@@ -22265,7 +22265,7 @@ mips_expand_vec_cond_expr (machine_mode mode, machine_mode vimode,
if (mode != vimode) if (mode != vimode)
{ {
xop1 = gen_reg_rtx (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); emit_move_insn (src1, xop1);
} }
...@@ -22282,7 +22282,7 @@ mips_expand_vec_cond_expr (machine_mode mode, machine_mode vimode, ...@@ -22282,7 +22282,7 @@ mips_expand_vec_cond_expr (machine_mode mode, machine_mode vimode,
if (mode != vimode) if (mode != vimode)
{ {
xop2 = gen_reg_rtx (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); emit_move_insn (src2, xop2);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment