if we must narrow it, be sure we do it correctly. */
if (GET_MODE_SIZE (value_mode) < GET_MODE_SIZE (op_mode))
- {
- tmp = simplify_subreg (op_mode, value1, value_mode, 0);
- if (! tmp)
- tmp = simplify_gen_subreg (op_mode,
- force_reg (value_mode, value1),
- value_mode, 0);
- }
+ tmp = force_subreg (op_mode, value1, value_mode, 0);
else
{
if (targetm.mode_rep_extended (op_mode, value_mode) != UNKNOWN)
if (known_eq (bitnum, 0U)
&& known_eq (bitsize, GET_MODE_BITSIZE (GET_MODE (op0))))
{
- sub = simplify_gen_subreg (GET_MODE (op0), value, fieldmode, 0);
+ sub = force_subreg (GET_MODE (op0), value, fieldmode, 0);
if (sub)
{
if (reverse)
&& known_eq (bitsize, GET_MODE_BITSIZE (mode))
&& lowpart_bit_field_p (bitnum, bitsize, op0_mode)
&& TRULY_NOOP_TRUNCATION_MODES_P (mode, op0_mode))
- return simplify_gen_subreg (mode, op0, op0_mode, bytenum);
+ return force_subreg (mode, op0, op0_mode, bytenum);
return NULL_RTX;
}
return convert_extracted_bit_field (target, mode, tmode, unsignedp);
}
/* If OP0 is a hard register, copy it to a pseudo before calling
- simplify_gen_subreg. */
+ force_subreg. */
if (REG_P (op0) && HARD_REGISTER_P (op0))
op0 = copy_to_reg (op0);
- op0 = simplify_gen_subreg (word_mode, op0, op0_mode.require (),
- bitnum / BITS_PER_WORD * UNITS_PER_WORD);
+ op0 = force_subreg (word_mode, op0, op0_mode.require (),
+ bitnum / BITS_PER_WORD * UNITS_PER_WORD);
op0_mode = word_mode;
bitnum %= BITS_PER_WORD;
}
/* Do a logical OR or AND of the two words and compare the
result. */
- op00 = simplify_gen_subreg (word_mode, op0, int_mode, 0);
- op01 = simplify_gen_subreg (word_mode, op0, int_mode, UNITS_PER_WORD);
+ op00 = force_subreg (word_mode, op0, int_mode, 0);
+ op01 = force_subreg (word_mode, op0, int_mode, UNITS_PER_WORD);
tem = expand_binop (word_mode,
op1 == const0_rtx ? ior_optab : and_optab,
op00, op01, NULL_RTX, unsignedp,
GET_MODE_BITSIZE (to_mode)));
if (VECTOR_MODE_P (to_mode))
- from = simplify_gen_subreg (to_mode, from, GET_MODE (from), 0);
+ from = force_subreg (to_mode, from, GET_MODE (from), 0);
else
to = simplify_gen_subreg (from_mode, to, GET_MODE (to), 0);
{
gcc_assert (known_eq (GET_MODE_BITSIZE (mode),
GET_MODE_BITSIZE (oldmode)));
- return simplify_gen_subreg (mode, x, oldmode, 0);
+ return force_subreg (mode, x, oldmode, 0);
}
temp = gen_reg_rtx (mode);
}
}
else if (CONSTANT_P (src) && GET_MODE (dst) != BLKmode
- && XVECLEN (dst, 0) > 1)
- tmps[i] = simplify_gen_subreg (mode, src, GET_MODE (dst), bytepos);
+ && XVECLEN (dst, 0) > 1)
+ tmps[i] = force_subreg (mode, src, GET_MODE (dst), bytepos);
else if (CONSTANT_P (src))
{
if (known_eq (bytelen, ssize))
if (known_eq (rtx_to_poly_int64 (XEXP (XVECEXP (src, 0, start), 1)),
bytepos))
{
- temp = simplify_gen_subreg (outer, tmps[start], inner, 0);
+ temp = force_subreg (outer, tmps[start], inner, 0);
if (temp)
{
emit_move_insn (dst, temp);
finish - 1), 1)),
bytepos))
{
- temp = simplify_gen_subreg (outer, tmps[finish - 1], inner, 0);
+ temp = force_subreg (outer, tmps[finish - 1], inner, 0);
if (temp)
{
emit_move_insn (dst, temp);
to_mode = GET_MODE_INNER (to_mode);
machine_mode from_mode = GET_MODE_INNER (GET_MODE (result));
rtx from_real
- = simplify_gen_subreg (to_mode, XEXP (result, 0),
- from_mode, 0);
+ = force_subreg (to_mode, XEXP (result, 0), from_mode, 0);
rtx from_imag
- = simplify_gen_subreg (to_mode, XEXP (result, 1),
- from_mode, 0);
+ = force_subreg (to_mode, XEXP (result, 1), from_mode, 0);
if (!from_real || !from_imag)
goto concat_store_slow;
emit_move_insn (XEXP (to_rtx, 0), from_real);
if (MEM_P (result))
from_rtx = change_address (result, to_mode, NULL_RTX);
else
- from_rtx
- = simplify_gen_subreg (to_mode, result, from_mode, 0);
+ from_rtx = force_subreg (to_mode, result, from_mode, 0);
if (from_rtx)
{
emit_move_insn (XEXP (to_rtx, 0),
{
to_mode = GET_MODE_INNER (to_mode);
rtx from_real
- = simplify_gen_subreg (to_mode, result, from_mode, 0);
+ = force_subreg (to_mode, result, from_mode, 0);
rtx from_imag
- = simplify_gen_subreg (to_mode, result, from_mode,
- GET_MODE_SIZE (to_mode));
+ = force_subreg (to_mode, result, from_mode,
+ GET_MODE_SIZE (to_mode));
if (!from_real || !from_imag)
goto concat_store_slow;
emit_move_insn (XEXP (to_rtx, 0), from_real);