[PATCH] generate fsincos x87 insn

Roger Sayle roger@eyesopen.com
Fri Apr 9 20:06:00 GMT 2004


On Mon, 5 Apr 2004, Uros Bizjak wrote:
> 2004-04-05  Uros Bizjak  <uros@kss-loka.si>
>
>         * builtins.c: Implement support for sincos function.
>         (expand_builtin_mathfn) Remove BUILT_IN_SIN{,F,L} and
>         BUILT_IN_COS{,F,L}.
>         (expand_builtin_mathfn_3): New function.
>         (expand_builtin): Expand BUILT_IN_SIN{,F,L} and
>         BUILT_IN_COS{,F,L} using expand_builtin_mathfn_3 if
>         flag_unsafe_math_optimization is set.
>
>         * optabs.h (enum optab_index): Add new OTI_sincos.
>         (sincos_optab): Define corresponding macro.
>
>         * optabs.c (init_optabs): Initialize sincos_optab.
>         (expand_twoval_unop): New function.
>
>         * genopinit.c (optabs): Implement sincos_optab using sincos?f3
>         patterns.
>
>         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_SINCOS_COS
>         and UNSPEC_SINCOS_SIN.
>
>         * config/i386/i386.md (sincosdf3, sincossf3, *sincosextendsfdf3,
>         sincosxf3): New patterns to implement sincos, sincosf and sincosl
>         built-ins as inline x87 intrinsics. Define splits for
>         sindf2, sinsf2, *sinextendsfdf2, sinxf2, cosdf2,
>         cossf2, *cosextendsfdf2 and cosxf2 patterns from corresponding
>         sincos patterns.
>         (sindf2, sinsf2, sinxf2): Rename to *sindf2, *sinsf2, *sinxf2.
>         (cosdf2, cossf2, cosxf2): Rename to *cosdf2, *cossf2, *cosxf2.
>
>         (UNSPEC_SINCOS_SIN, UNPEC_SINCOS_COS): New unspecs to represent
>         x87's unspec insn.
>
>         * gcc.dg/builtins-36.c: New test.
>

This is OK for mainline.  Bootstrapping and regression testing on
i686-pc-linux-gnu confirm no problems.  I'll commit the patch to
mainline as soon as the CVS connectivity issues I'm experiencing
clear up (I'm not sure if its my end or the server).

I think using the same mechanism to implement fptan is good idea,
as is Kaveh's suggestion of also supporting the sincos built-in.

Roger
--



More information about the Gcc-patches mailing list