diff options
author | Uros Bizjak <uros@kss-loka.si> | 2004-04-14 02:37:29 +0000 |
---|---|---|
committer | Roger Sayle <roger@eyesopen.com> | 2004-04-14 02:37:29 +0000 |
commit | df0262fc682e292f32cbc79908db18169c1e4cff (patch) | |
tree | f7627b4f4e2d86ef0eb520753d52ac14912ab6c8 /gcc/reg-stack.c | |
parent | e59331645e3a8c72f71080301ab964b5ac2d3c0d (diff) |
2004-04-13 Uros Bizjak <uros@kss-loka.si>:
* optabs.c (expand_twoval_unop): Reorder function arguments.
* builtins.c (expand_builtin_mathfn_3): Update calls to
expand_twoval_unop.
* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_TAN_ONE
and UNSPEC_TAN_TAN. Add missing comment.
* config/i386/i386.md (*tandf3_1, *tansf3_1, *tanxf3_1): New
patterns to implement fptan x87 instruction.
(tandf2, tansf2, tanxf2): New expanders to implement tan, tanf
and tanl built-ins as inline x87 intrinsics. Define corresponding
peephole2 optimizers for 'fptan; fstp %st(0); fld1' sequence.
(UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): New unspecs to represent
x87's fptan insn.
* gcc.dg/i386-387-1.c: Add new test for __builtin_tan.
* gcc.dg/i386-387-2.c: Likewise.
* gcc.dg/i386-387-7.c: New test.
* gcc.dg/i386-387-8.c: New test.
* gcc.dg/builtins-37.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@80677 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r-- | gcc/reg-stack.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index f238267987a..5133f713f3f 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -1769,6 +1769,7 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat) break; case UNSPEC_SINCOS_COS: + case UNSPEC_TAN_ONE: /* These insns operate on the top two stack slots, first part of one input, double output insn. */ @@ -1796,6 +1797,10 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat) break; case UNSPEC_SINCOS_SIN: + case UNSPEC_TAN_TAN: + /* These insns operate on the top two stack slots, + second part of one input, double output insn. */ + src1 = get_true_reg (&XVECEXP (pat_src, 0, 0)); emit_swap_insn (insn, regstack, *src1); |