Commit 1def9c3f by James E Wilson Committed by Jim Wilson

re PR target/35695 (-funroll-loops breaks inline float divide)

PR target/35695
* config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
* config/ia64/ia64.c (rtx_needs_barrier): Handle
UNSPEC_FR_RECIP_APPROX_RES.
* config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.

From-SVN: r133772
parent bb686a19
2008-03-31 James E. Wilson <wilson@tuliptree.org>
PR target/35695
* config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
* config/ia64/ia64.c (rtx_needs_barrier): Handle
UNSPEC_FR_RECIP_APPROX_RES.
* config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
2008-03-31 Volker Reichelt <v.reichelt@netcologne.de>
PR c/35750
......
......@@ -199,8 +199,9 @@
(define_insn "recip_approx_rf"
[(set (match_operand:RF 0 "fr_register_operand" "=f")
(div:RF (match_operand:RF 1 "fr_register_operand" "f")
(match_operand:RF 2 "fr_register_operand" "f")))
(unspec:RF [(match_operand:RF 1 "fr_register_operand" "f")
(match_operand:RF 2 "fr_register_operand" "f")]
UNSPEC_FR_RECIP_APPROX_RES))
(set (match_operand:BI 3 "register_operand" "=c")
(unspec:BI [(match_dup 1) (match_dup 2)] UNSPEC_FR_RECIP_APPROX))
(use (match_operand:SI 4 "const_int_operand" ""))]
......
......@@ -5898,6 +5898,7 @@ rtx_needs_barrier (rtx x, struct reg_flags flags, int pred)
case UNSPEC_FR_RECIP_APPROX:
case UNSPEC_SHRP:
case UNSPEC_COPYSIGN:
case UNSPEC_FR_RECIP_APPROX_RES:
need_barrier = rtx_needs_barrier (XVECEXP (x, 0, 0), flags, pred);
need_barrier |= rtx_needs_barrier (XVECEXP (x, 0, 1), flags, pred);
break;
......
......@@ -86,6 +86,7 @@
(UNSPEC_LDCCLR 43)
(UNSPEC_CHKACLR 45)
(UNSPEC_CHKS 47)
(UNSPEC_FR_RECIP_APPROX_RES 48)
])
(define_constants
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment