+2002-11-19 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/sh/sh.c (gen_shl_and): Revert previous patch.
+ * config/sh/sh.md (ashrdi3+1, ashrdi3+2): Predicate on
+ reload_completed.
+
2002-11-19 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.c (print_operand): Update the use of
if (first < 0)
{
- enum machine_mode mode
- = ((mask << right) <= 0xff) ? QImode : HImode;
- rtx lowpart = gen_lowpart (mode, source);
-
- if (no_new_pseudos && ! TARGET_SHMEDIA
- && ! arith_reg_operand (lowpart, mode))
- return -1;
emit_insn ((mask << right) <= 0xff
- ? gen_zero_extendqisi2(dest, lowpart)
- : gen_zero_extendhisi2(dest, lowpart));
+ ? gen_zero_extendqisi2(dest,
+ gen_lowpart (QImode, source))
+ : gen_zero_extendhisi2(dest,
+ gen_lowpart (HImode, source)));
source = dest;
}
if (source != dest)
mask <<= first;
}
if (first >= 0)
- {
- enum machine_mode mode = (mask <= 0xff) ? QImode : HImode;
- rtx lowpart = gen_lowpart (mode, dest);
-
- if (no_new_pseudos && ! TARGET_SHMEDIA
- && ! arith_reg_operand (lowpart, mode))
- return -1;
- emit_insn (mask <= 0xff
- ? gen_zero_extendqisi2(dest, lowpart)
- : gen_zero_extendhisi2(dest, lowpart));
- }
-
+ emit_insn (mask <= 0xff
+ ? gen_zero_extendqisi2(dest, gen_lowpart (QImode, dest))
+ : gen_zero_extendhisi2(dest, gen_lowpart (HImode, dest)));
if (total_shift > 0)
{
operands[2] = GEN_INT (total_shift);
(and:SI (ashift:SI (match_operand:SI 1 "register_operand" "")
(match_operand:SI 2 "const_int_operand" ""))
(match_operand:SI 3 "const_int_operand" "")))]
- "TARGET_SH1 && (unsigned)INTVAL (operands[2]) < 32"
+ "TARGET_SH1 && reload_completed && (unsigned)INTVAL (operands[2]) < 32"
[(use (reg:SI R0_REG))]
"if (gen_shl_and (operands[0], operands[2], operands[3], operands[1])) FAIL;
DONE;")
(match_operand:SI 2 "const_int_operand" ""))
(match_operand:SI 3 "const_int_operand" "")))
(clobber (reg:SI T_REG))]
- "TARGET_SH1 && (unsigned)INTVAL (operands[2]) < 32"
+ "TARGET_SH1 && reload_completed && (unsigned)INTVAL (operands[2]) < 32"
[(use (reg:SI R0_REG))]
"if (gen_shl_and (operands[0], operands[2], operands[3], operands[1])) FAIL;
DONE;")