emit_insn (gen_spe_floatsidf2 (operands[0], operands[1]));
DONE;
}
- if (TARGET_POWERPC64 && TARGET_MFPGPR && TARGET_HARD_FLOAT && TARGET_FPRS)
- {
- rtx t1 = gen_reg_rtx (DImode);
- emit_insn (gen_floatsidf_ppc64_mfpgpr (operands[0], operands[1], t1));
- DONE;
- }
if (TARGET_POWERPC64)
{
- rtx mem = assign_stack_temp (DImode, GET_MODE_SIZE (DImode), 0);
- rtx t1 = gen_reg_rtx (DImode);
- rtx t2 = gen_reg_rtx (DImode);
- emit_insn (gen_floatsidf_ppc64 (operands[0], operands[1], mem, t1, t2));
+ rtx x = convert_to_mode (DImode, operands[1], 0);
+ emit_insn (gen_floatdidf2 (operands[0], x));
DONE;
}
}
if (TARGET_POWERPC64)
{
- rtx mem = assign_stack_temp (DImode, GET_MODE_SIZE (DImode), 0);
- rtx t1 = gen_reg_rtx (DImode);
- rtx t2 = gen_reg_rtx (DImode);
- emit_insn (gen_floatunssidf_ppc64 (operands[0], operands[1], mem,
- t1, t2));
+ rtx x = convert_to_mode (DImode, operands[1], 1);
+ emit_insn (gen_floatdidf2 (operands[0], x));
DONE;
}
"fcfid %0,%1"
[(set_attr "type" "fp")])
-(define_insn_and_split "floatsidf_ppc64_mfpgpr"
- [(set (match_operand:DF 0 "gpc_reg_operand" "=f")
- (float:DF (match_operand:SI 1 "gpc_reg_operand" "r")))
- (clobber (match_operand:DI 2 "gpc_reg_operand" "=r"))]
- "TARGET_POWERPC64 && TARGET_MFPGPR && TARGET_HARD_FLOAT && TARGET_FPRS"
- "#"
- "&& 1"
- [(set (match_dup 2) (sign_extend:DI (match_dup 1)))
- (set (match_dup 0) (float:DF (match_dup 2)))]
- "")
-
-(define_insn_and_split "floatsidf_ppc64"
- [(set (match_operand:DF 0 "gpc_reg_operand" "=f")
- (float:DF (match_operand:SI 1 "gpc_reg_operand" "r")))
- (clobber (match_operand:DI 2 "offsettable_mem_operand" "=o"))
- (clobber (match_operand:DI 3 "gpc_reg_operand" "=r"))
- (clobber (match_operand:DI 4 "gpc_reg_operand" "=f"))]
- "TARGET_POWERPC64 && !TARGET_MFPGPR && TARGET_HARD_FLOAT && TARGET_FPRS"
- "#"
- "&& 1"
- [(set (match_dup 3) (sign_extend:DI (match_dup 1)))
- (set (match_dup 2) (match_dup 3))
- (set (match_dup 4) (match_dup 2))
- (set (match_dup 0) (float:DF (match_dup 4)))]
- "")
-
-(define_insn_and_split "floatunssidf_ppc64"
- [(set (match_operand:DF 0 "gpc_reg_operand" "=f")
- (unsigned_float:DF (match_operand:SI 1 "gpc_reg_operand" "r")))
- (clobber (match_operand:DI 2 "offsettable_mem_operand" "=o"))
- (clobber (match_operand:DI 3 "gpc_reg_operand" "=r"))
- (clobber (match_operand:DI 4 "gpc_reg_operand" "=f"))]
- "TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS"
- "#"
- "&& 1"
- [(set (match_dup 3) (zero_extend:DI (match_dup 1)))
- (set (match_dup 2) (match_dup 3))
- (set (match_dup 4) (match_dup 2))
- (set (match_dup 0) (float:DF (match_dup 4)))]
- "")
-
(define_insn "fix_truncdfdi2"
[(set (match_operand:DI 0 "gpc_reg_operand" "=!f#r")
(fix:DI (match_operand:DF 1 "gpc_reg_operand" "f")))]