aboutsummaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2006-11-25 10:17:57 +0100
committerUros Bizjak <uros@gcc.gnu.org>2006-11-25 10:17:57 +0100
commit013021041a82ec4f9e1ea3e3aa94b8e92d9ca4d2 (patch)
tree13d6aedbbab4e67a27ac966d32bd18545d7bc2f3 /gcc/reg-stack.c
parent0513be5bc3f4832a9bd2d7e78a09d1983f647402 (diff)
downloadgcc-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.c7
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;