x = gen_push_fpul ();
else if (rn == FPSCR_REG)
x = gen_push_fpscr ();
- else if ((TARGET_SH4 || TARGET_SH2A_DOUBLE) && TARGET_FMOVD
+ else if (TARGET_FPU_DOUBLE && TARGET_FMOVD
&& ! TARGET_FPU_SINGLE && FP_OR_XD_REGISTER_P (rn))
{
if (FP_REGISTER_P (rn) && (rn - FIRST_FP_REG) & 1)
x = gen_pop_fpul ();
else if (rn == FPSCR_REG)
x = gen_pop_fpscr ();
- else if ((TARGET_SH4 || TARGET_SH2A_DOUBLE) && TARGET_FMOVD
+ else if (TARGET_FPU_DOUBLE && TARGET_FMOVD
&& ! TARGET_FPU_SINGLE && FP_OR_XD_REGISTER_P (rn))
{
if (FP_REGISTER_P (rn) && (rn - FIRST_FP_REG) & 1)
nosave_low_regs = lookup_attribute ("nosave_low_regs", attrs) != NULL_TREE;
CLEAR_HARD_REG_SET (*live_regs_mask);
- if ((TARGET_SH4 || TARGET_SH2A_DOUBLE) && TARGET_FMOVD && interrupt_handler
+ if (TARGET_FPU_DOUBLE && TARGET_FMOVD && interrupt_handler
&& df_regs_ever_live_p (FPSCR_REG))
target_flags &= ~MASK_FPU_SINGLE;
/* If we can save a lot of saves by switching to double mode, do that. */
- else if ((TARGET_SH4 || TARGET_SH2A_DOUBLE) && TARGET_FMOVD
- && TARGET_FPU_SINGLE)
+ else if (TARGET_FPU_DOUBLE && TARGET_FMOVD && TARGET_FPU_SINGLE)
for (count = 0, reg = FIRST_FP_REG; reg <= LAST_FP_REG; reg += 2)
if (df_regs_ever_live_p (reg) && df_regs_ever_live_p (reg+1)
&& (! call_really_used_regs[reg]
SET_HARD_REG_BIT (*live_regs_mask, reg);
count += GET_MODE_SIZE (REGISTER_NATURAL_MODE (reg));
- if ((TARGET_SH4 || TARGET_SH2A_DOUBLE) && TARGET_FMOVD
+ if (TARGET_FPU_DOUBLE && TARGET_FMOVD
&& GET_MODE_CLASS (REGISTER_NATURAL_MODE (reg)) == MODE_FLOAT)
{
if (FP_REGISTER_P (reg))
fpregs = copy_to_mode_reg (Pmode,
plus_constant (Pmode, XEXP (regbuf, 0),
n_floatregs * UNITS_PER_WORD));
- if (TARGET_SH4 || TARGET_SH2A_DOUBLE)
+ if (TARGET_FPU_DOUBLE)
{
rtx mem;
for (regno = NPARM_REGS (DFmode) - 2; regno >= first_floatreg; regno -= 2)
}
}
- if (TARGET_SH4 || TARGET_SH2A_DOUBLE)
+ if (TARGET_FPU_DOUBLE)
{
pass_as_float = ((TREE_CODE (eff_type) == REAL_TYPE && size <= 8)
|| (TREE_CODE (eff_type) == COMPLEX_TYPE
function as is. Make this more readable. */
return
(((TARGET_ALIGN_DOUBLE
- || ((TARGET_SH4 || TARGET_SH2A_DOUBLE)
+ || (TARGET_FPU_DOUBLE
&& (mode == DFmode || mode == DCmode)
&& cum.arg_count[(int) SH_ARG_FLOAT] < NPARM_REGS (mode)))
&& GET_MODE_UNIT_SIZE (mode) > UNITS_PER_WORD)
int words = 0;
if (sh_pass_in_reg_p (*cum, mode, type)
- && !(TARGET_SH4 || TARGET_SH2A_DOUBLE)
+ && !TARGET_FPU_DOUBLE
&& (sh_round_reg (*cum, mode)
+ (mode != BLKmode
? CEIL (GET_MODE_SIZE (mode), UNITS_PER_WORD)
return true;
if (GET_MODE_SIZE (mode) <= 4
- || ((TARGET_SH4 || TARGET_SH2A_DOUBLE)
- && TARGET_FMOVD && mode == DFmode))
+ || (TARGET_FPU_DOUBLE && TARGET_FMOVD && mode == DFmode))
{
if (MAYBE_BASE_REGISTER_RTX_P (xop1, strict)
&& MAYBE_INDEX_REGISTER_RTX_P (xop0, strict))
if (flag_pic)
x = legitimize_pic_address (oldx, mode, NULL_RTX);
- if (((TARGET_SH4 || TARGET_SH2A_DOUBLE) && mode == DFmode)
+ if ((TARGET_FPU_DOUBLE && mode == DFmode)
|| (TARGET_SH2E && mode == SFmode))
return x;
if (mode == SFmode
|| mode == SImode
|| ((TARGET_SH2E) && mode == SCmode)
- || ((((TARGET_SH4 || TARGET_SH2A_DOUBLE) && mode == DFmode)
- || mode == DCmode)
+ || (((TARGET_FPU_DOUBLE && mode == DFmode) || mode == DCmode)
&& ((regno - FIRST_FP_REG) & 1) == 0)
|| (TARGET_SH4 && mode == TImode
&& ((regno - FIRST_FP_REG) & 3) == 0))
sh_legitimize_address_displacement (rtx *disp, rtx *offs,
machine_mode mode)
{
- if (((TARGET_SH4 || TARGET_SH2A_DOUBLE) && mode == DFmode)
+ if ((TARGET_FPU_DOUBLE && mode == DFmode)
|| (TARGET_SH2E && mode == SFmode))
return false;
(clobber (reg:SI R5_REG))
(use (match_operand:SI 1 "arith_reg_operand" "r,r"))
(use (match_operand 2 "" "Z,Ccl"))]
- "(TARGET_FPU_SINGLE_ONLY || TARGET_FPU_DOUBLE)
- && TARGET_FPU_SINGLE"
+ "TARGET_FPU_ANY && TARGET_FPU_SINGLE"
"@
jsr @%1%#
bsrf %1\n%O2:%#"
(clobber (reg:SI R2_REG))
(use (match_operand:SI 1 "arith_reg_operand" "r,r"))
(use (match_operand 2 "" "Z,Ccl"))]
- "(TARGET_FPU_SINGLE_ONLY || TARGET_FPU_DOUBLE)
- && TARGET_FPU_SINGLE"
+ "TARGET_FPU_ANY && TARGET_FPU_SINGLE"
"@
jsr @%1%#
bsrf %1\n%O2:%#"
[(set (match_operand:DF 0 "general_movdst_operand" "=r,r,r,m")
(match_operand:DF 1 "general_movsrc_operand" "r,FQ,m,r"))]
"TARGET_SH1
- && (! (TARGET_SH4 || TARGET_SH2A_DOUBLE) || reload_completed
+ && (!TARGET_FPU_DOUBLE || reload_completed
/* ??? We provide some insn so that direct_{load,store}[DFmode] get set */
|| (REG_P (operands[0]) && REGNO (operands[0]) == 3)
|| (REG_P (operands[1]) && REGNO (operands[1]) == 3))
(match_operand:DF 1 "general_movsrc_operand" "d,r,F,m,d,FQ,m,r,d,r"))
(use (reg:SI FPSCR_MODES_REG))
(clobber (match_scratch:SI 2 "=X,X,&z,X,X,X,X,X,X,X"))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)
+ "TARGET_FPU_DOUBLE
&& (arith_reg_operand (operands[0], DFmode)
|| arith_reg_operand (operands[1], DFmode))"
{
(match_operand:DF 1 "register_operand"))
(use (reg:SI FPSCR_MODES_REG))
(clobber (match_scratch:SI 2))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE) && reload_completed
+ "TARGET_FPU_DOUBLE && reload_completed
&& (true_regnum (operands[0]) < 16) != (true_regnum (operands[1]) < 16)"
[(const_int 0)]
{
(match_operand:DF 1 "general_movsrc_operand" ""))
(use (reg:SI FPSCR_MODES_REG))
(clobber (match_scratch:SI 2))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)
+ "TARGET_FPU_DOUBLE
&& reload_completed
&& true_regnum (operands[0]) < 16
&& true_regnum (operands[1]) < 16"
(match_operand:DF 1 "memory_operand" ""))
(use (reg:SI FPSCR_MODES_REG))
(clobber (reg:SI R0_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE) && reload_completed"
+ "TARGET_FPU_DOUBLE && reload_completed"
[(parallel [(set (match_dup 0) (match_dup 1))
(use (reg:SI FPSCR_MODES_REG))
(clobber (scratch:SI))])]
(mem:DF (match_operand:SI 1 "register_operand" "")))
(use (reg:SI FPSCR_MODES_REG))
(clobber (match_scratch:SI 2))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE) && ! TARGET_FMOVD && reload_completed
+ "TARGET_FPU_DOUBLE && ! TARGET_FMOVD && reload_completed
&& FP_OR_XD_REGISTER_P (true_regnum (operands[0]))
&& find_regno_note (insn, REG_DEAD, true_regnum (operands[1]))"
[(const_int 0)]
(match_operand:DF 1 "memory_operand" ""))
(use (reg:SI FPSCR_MODES_REG))
(clobber (match_scratch:SI 2))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE) && ! TARGET_FMOVD && reload_completed
+ "TARGET_FPU_DOUBLE && ! TARGET_FMOVD && reload_completed
&& FP_OR_XD_REGISTER_P (true_regnum (operands[0]))"
[(const_int 0)]
{
(match_operand:DF 1 "register_operand" ""))
(use (reg:SI FPSCR_MODES_REG))
(clobber (match_scratch:SI 2))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE) && ! TARGET_FMOVD && reload_completed
+ "TARGET_FPU_DOUBLE && ! TARGET_FMOVD && reload_completed
&& FP_OR_XD_REGISTER_P (true_regnum (operands[1]))"
[(const_int 0)]
{
""
{
prepare_move_operands (operands, DFmode);
- if (TARGET_SH4 || TARGET_SH2A_DOUBLE)
+ if (TARGET_FPU_DOUBLE)
{
emit_insn (gen_movdf_i4 (operands[0], operands[1]));
DONE;
(match_operator:SI 1 "ordered_comparison_operator"
[(match_operand:DF 2 "arith_operand" "")
(match_operand:DF 3 "arith_operand" "")]))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
if (! currently_expanding_to_rtl)
FAIL;
(xor:SI (reg:SI FPSCR_REG) (const_int FPSCR_SZ)))
(set (reg:SI FPSCR_MODES_REG)
(unspec_volatile:SI [(const_int 0)] UNSPECV_FPSCR_MODES))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fschg"
[(set_attr "type" "fpscr_toggle") (set_attr "fp_set" "unknown")])
[(set (match_operand:DF 0 "fp_arith_reg_operand" "")
(plus:DF (match_operand:DF 1 "fp_arith_reg_operand" "")
(match_operand:DF 2 "fp_arith_reg_operand" "")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_adddf3_i (operands[0], operands[1], operands[2]));
DONE;
(match_operand:DF 2 "fp_arith_reg_operand" "f")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fadd %2,%0"
[(set_attr "type" "dfp_arith")
(set_attr "fp_mode" "double")])
[(set (match_operand:DF 0 "fp_arith_reg_operand" "")
(minus:DF (match_operand:DF 1 "fp_arith_reg_operand" "")
(match_operand:DF 2 "fp_arith_reg_operand" "")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_subdf3_i (operands[0], operands[1], operands[2]));
DONE;
(match_operand:DF 2 "fp_arith_reg_operand" "f")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fsub %2,%0"
[(set_attr "type" "dfp_arith")
(set_attr "fp_mode" "double")])
[(set (match_operand:DF 0 "fp_arith_reg_operand" "")
(mult:DF (match_operand:DF 1 "fp_arith_reg_operand" "")
(match_operand:DF 2 "fp_arith_reg_operand" "")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_muldf3_i (operands[0], operands[1], operands[2]));
DONE;
(match_operand:DF 2 "fp_arith_reg_operand" "f")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fmul %2,%0"
[(set_attr "type" "dfp_mul")
(set_attr "fp_mode" "double")])
[(set (match_operand:DF 0 "fp_arith_reg_operand" "")
(div:DF (match_operand:DF 1 "fp_arith_reg_operand" "")
(match_operand:DF 2 "fp_arith_reg_operand" "")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_divdf3_i (operands[0], operands[1], operands[2]));
DONE;
(match_operand:DF 2 "fp_arith_reg_operand" "f")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fdiv %2,%0"
[(set_attr "type" "dfdiv")
(set_attr "fp_mode" "double")])
(define_expand "floatsidf2"
[(set (match_operand:DF 0 "fp_arith_reg_operand" "")
(float:DF (match_operand:SI 1 "fpul_operand" "")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_floatsidf2_i (operands[0], operands[1]));
DONE;
(float:DF (match_operand:SI 1 "fpul_operand" "y")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"float %1,%0"
[(set_attr "type" "dfp_conv")
(set_attr "fp_mode" "double")])
(define_expand "fix_truncdfsi2"
[(set (match_operand:SI 0 "fpul_operand" "")
(fix:SI (match_operand:DF 1 "fp_arith_reg_operand" "")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_fix_truncdfsi2_i (operands[0], operands[1]));
DONE;
(fix:SI (match_operand:DF 1 "fp_arith_reg_operand" "f")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"ftrc %1,%0"
[(set_attr "type" "dfp_conv")
(set_attr "dfp_comp" "no")
(match_operand:DF 1 "fp_arith_reg_operand" "f")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fcmp/gt %1,%0"
[(set_attr "type" "dfp_cmp")
(set_attr "fp_mode" "double")])
(match_operand:DF 1 "fp_arith_reg_operand" "f")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fcmp/eq %1,%0"
[(set_attr "type" "dfp_cmp")
(set_attr "fp_mode" "double")])
(match_operand:DF 1 "fp_arith_reg_operand" "f"))))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "TARGET_IEEE && (TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_IEEE && TARGET_FPU_DOUBLE"
{
return output_ieee_ccmpeq (insn, operands);
}
(match_operand:DF 2 "arith_operand" "")])
(match_operand 3 "" "")
(pc)))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
sh_emit_compare_and_branch (operands, DFmode);
DONE;
(define_expand "negdf2"
[(set (match_operand:DF 0 "fp_arith_reg_operand")
(neg:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE")
+ "TARGET_FPU_DOUBLE")
(define_insn "*negdf2_i"
[(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
(neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fneg %0"
[(set_attr "type" "fmove")])
(define_expand "sqrtdf2"
[(set (match_operand:DF 0 "fp_arith_reg_operand")
(sqrt:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_sqrtdf2_i (operands[0], operands[1]));
DONE;
(sqrt:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fsqrt %0"
[(set_attr "type" "dfdiv")
(set_attr "fp_mode" "double")])
(define_expand "absdf2"
[(set (match_operand:DF 0 "fp_arith_reg_operand")
(abs:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE")
+ "TARGET_FPU_DOUBLE")
(define_insn "*absdf2_i"
[(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
(abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fabs %0"
[(set_attr "type" "fmove")])
(define_expand "extendsfdf2"
[(set (match_operand:DF 0 "fp_arith_reg_operand" "")
(float_extend:DF (match_operand:SF 1 "fpul_operand" "")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_extendsfdf2_i4 (operands[0], operands[1]));
DONE;
(float_extend:DF (match_operand:SF 1 "fpul_operand" "y")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fcnvsd %1,%0"
[(set_attr "type" "fp")
(set_attr "fp_mode" "double")])
(define_expand "truncdfsf2"
[(set (match_operand:SF 0 "fpul_operand" "")
(float_truncate:SF (match_operand:DF 1 "fp_arith_reg_operand" "")))]
- "TARGET_SH4 || TARGET_SH2A_DOUBLE"
+ "TARGET_FPU_DOUBLE"
{
emit_insn (gen_truncdfsf2_i4 (operands[0], operands[1]));
DONE;
(float_truncate:SF (match_operand:DF 1 "fp_arith_reg_operand" "f")))
(clobber (reg:SI FPSCR_STAT_REG))
(use (reg:SI FPSCR_MODES_REG))]
- "(TARGET_SH4 || TARGET_SH2A_DOUBLE)"
+ "TARGET_FPU_DOUBLE"
"fcnvds %1,%0"
[(set_attr "type" "fp")
(set_attr "fp_mode" "double")])