aboutsummaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
authorUros Bizjak <uros@kss-loka.si>2004-04-14 02:37:29 +0000
committerRoger Sayle <roger@eyesopen.com>2004-04-14 02:37:29 +0000
commitdf0262fc682e292f32cbc79908db18169c1e4cff (patch)
treef7627b4f4e2d86ef0eb520753d52ac14912ab6c8 /gcc/reg-stack.c
parente59331645e3a8c72f71080301ab964b5ac2d3c0d (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.c5
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);