From fafa4a365aed93818c7bdfa5d37b076f4dea172a Mon Sep 17 00:00:00 2001 From: uros Date: Sat, 25 Nov 2006 09:17:57 +0000 Subject: config/i386/i386.md (UNSPEC_TRUNC_NOOP): New unspec definition. (X87MODEF): New mode macro. (ssemodefsuffix): New mode attribute. (truncxf2_i387_noop_unspec): New insn pattern. (sqrt_extendxf2_i387): New insn pattern. (sqrt2): For non-SSE sqrt, emit sqrt_extendxf2_i387 insn and truncate result back to original mode using UNSPEC_TRUNC_NOOP truncation. (*sqrt2_sse): Implement using SSEMODEF mode macro and ssemodefsuffix mode attribute. (*sqrtsf2_mixed, *sqrtsf2_i387, *sqrtdf2_mixed, *sqrtdf2_i387) (*sqrtextendsfdf2_i387, *sqrtextendsfxf2_i387) (*sqrtextenddfxf2_i387): Remove insn patterns. (fmodsf3, fmoddf3, remaindersf3, remainderdf3): Use noop truncation patterns. reg-stack.c (get_true_reg): Handle UNSPEC_TRUNC_NOOP. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119188 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/reg-stack.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'gcc/reg-stack.c') diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index a96b6ef57fc..aca45fe32c2 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -439,6 +439,13 @@ get_true_reg (rtx *pat) pat = & XEXP (*pat, 0); break; + case UNSPEC: + if (XINT (*pat, 1) == UNSPEC_TRUNC_NOOP) + { + pat = & XVECEXP (*pat, 0, 0); + break; + } + case FLOAT_TRUNCATE: if (!flag_unsafe_math_optimizations) return pat; -- cgit v1.2.1