aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/rs6000.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/rs6000/rs6000.md')
-rw-r--r--gcc/config/rs6000/rs6000.md58
1 files changed, 3 insertions, 55 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index b3fdd97461c..132fb3c1ef7 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -5339,16 +5339,9 @@
(fix:SI (match_operand:DF 1 "gpc_reg_operand" "")))
(clobber (match_dup 2))
(clobber (match_dup 3))])]
- "TARGET_HARD_FLOAT"
+ "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT"
"
{
- if (! TARGET_POWER2 && ! TARGET_POWERPC)
- {
- emit_insn (gen_trunc_call (operands[0], operands[1],
- gen_rtx_SYMBOL_REF (Pmode, RS6000_ITRUNC)));
- DONE;
- }
-
operands[2] = gen_reg_rtx (DImode);
operands[3] = assign_stack_temp (DImode, GET_MODE_SIZE (DImode), 0);
}")
@@ -5358,7 +5351,7 @@
(fix:SI (match_operand:DF 1 "gpc_reg_operand" "f")))
(clobber (match_operand:DI 2 "gpc_reg_operand" "=f"))
(clobber (match_operand:DI 3 "memory_operand" "=o"))]
- "TARGET_HARD_FLOAT"
+ "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT"
"#"
[(set_attr "length" "16")])
@@ -5367,7 +5360,7 @@
(fix:SI (match_operand:DF 1 "gpc_reg_operand" "f")))
(clobber (match_operand:DI 2 "gpc_reg_operand" ""))
(clobber (match_operand:DI 3 "offsettable_mem_operand" ""))]
- "TARGET_HARD_FLOAT"
+ "(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT"
[(set (match_operand:SI 0 "gpc_reg_operand" "")
(fix:SI (match_operand:DF 1 "gpc_reg_operand" "f")))
(clobber (match_operand:DI 2 "gpc_reg_operand" ""))
@@ -5387,51 +5380,6 @@
DONE;
}")
-(define_expand "fixuns_truncdfsi2"
- [(set (match_operand:SI 0 "gpc_reg_operand" "")
- (unsigned_fix:SI (match_operand:DF 1 "gpc_reg_operand" "")))]
- "! TARGET_POWER2 && ! TARGET_POWERPC && TARGET_HARD_FLOAT"
- "
-{
- emit_insn (gen_trunc_call (operands[0], operands[1],
- gen_rtx_SYMBOL_REF (Pmode, RS6000_UITRUNC)));
- DONE;
-}")
-
-(define_expand "trunc_call"
- [(parallel [(set (match_operand:SI 0 "" "")
- (fix:SI (match_operand:DF 1 "" "")))
- (use (match_operand:SI 2 "" ""))])]
- "TARGET_HARD_FLOAT"
- "
-{
- rtx insns = gen_trunc_call_rtl (operands[0], operands[1], operands[2]);
- rtx first = XVECEXP (insns, 0, 0);
- rtx last = XVECEXP (insns, 0, XVECLEN (insns, 0) - 1);
-
- REG_NOTES (first) = gen_rtx_INSN_LIST (REG_LIBCALL, last,
- REG_NOTES (first));
- REG_NOTES (last) = gen_rtx_INSN_LIST (REG_RETVAL, first, REG_NOTES (last));
-
- emit_insn (insns);
- DONE;
-}")
-
-(define_expand "trunc_call_rtl"
- [(set (reg:DF 33) (match_operand:DF 1 "gpc_reg_operand" ""))
- (use (reg:DF 33))
- (parallel [(set (reg:SI 3)
- (call (mem:SI (match_operand 2 "" "")) (const_int 0)))
- (use (const_int 0))
- (clobber (scratch:SI))])
- (set (match_operand:SI 0 "gpc_reg_operand" "")
- (reg:SI 3))]
- "TARGET_HARD_FLOAT"
- "
-{
- rs6000_trunc_used = 1;
-}")
-
; Here, we use (set (reg) (unspec:DI [(fix:SI ...)] 10))
; rather than (set (subreg:SI (reg)) (fix:SI ...))
; because the first makes it clear that operand 0 is not live