diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2006-11-25 10:17:57 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2006-11-25 10:17:57 +0100 |
commit | 013021041a82ec4f9e1ea3e3aa94b8e92d9ca4d2 (patch) | |
tree | 13d6aedbbab4e67a27ac966d32bd18545d7bc2f3 /gcc/reg-stack.c | |
parent | 0513be5bc3f4832a9bd2d7e78a09d1983f647402 (diff) | |
download | gcc-013021041a82ec4f9e1ea3e3aa94b8e92d9ca4d2.zip gcc-013021041a82ec4f9e1ea3e3aa94b8e92d9ca4d2.tar.gz gcc-013021041a82ec4f9e1ea3e3aa94b8e92d9ca4d2.tar.bz2 |
config/i386/i386.md (UNSPEC_TRUNC_NOOP): New unspec definition.
(X87MODEF): New mode macro.
(ssemodefsuffix): New mode attribute.
(truncxf<mode>2_i387_noop_unspec): New insn pattern.
(sqrt_extend<mode>xf2_i387): New insn pattern.
(sqrt<mode>2): For non-SSE sqrt, emit sqrt_extend<mode>xf2_i387
insn and truncate result back to original mode using
UNSPEC_TRUNC_NOOP truncation.
(*sqrt<mode>2_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.
From-SVN: r119188
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r-- | gcc/reg-stack.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index a96b6ef..aca45fe 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; |