[PATCH] i386: Roundeven expansion for SSE4.1+

Tejas Joshi tejasjoshi9673@gmail.com
Wed Jul 24 10:45:00 GMT 2019


Hi.
This is a patch that Uros suggested for roundeven expansion, here.
Thanks for the heads up.
<https://gcc.gnu.org/ml/gcc-patches/2019-07/msg01038.html>
I have rerun the testsuite on the patch, it survives the regression
tests and bootstraps on x86_64-linux-gnu. Note, patch to be applied on
top of
<https://gcc.gnu.org/ml/gcc-patches/2019-06/msg01828.html>

Thanks,
Tejas

gcc/ChangeLog:

2019-07-24  Tejas Joshi  <tejasjoshi9673@gmail.com>

    * builtins.c (mathfn_built_in_2): Change CASE_MATHFN to
    CASE_MATHFN_FLOATN for roundeven.
    * config/i386/i386.c (ix86_i387_mode_needed): Add case I387_ROUNDEVEN.
    (ix86_mode_needed): Likewise.
    (ix86_mode_after): Likewise.
    (ix86_mode_entry): Likewise.
    (ix86_mode_exit): Likewise.
    (ix86_emit_mode_set): Likewise.
    (emit_i387_cw_initialization): Add case I387_CW_ROUNDEVEN.
    * config/i386/i386.h (ix86_stack_slot) : Add SLOT_CW_ROUNDEVEN.
    (ix86_entry): Add I387_ROUNDEVEN.
    (avx_u128_state): Add I387_CW_ANY.
    * config/i386/i386.md: Define UNSPEC_FRNDINT_ROUNDEVEN.
    (define_int_iterator): Likewise.
    (define_int_attr): Likewise for rounding_insn, rounding and ROUNDING.
    (define_constant): Define ROUND_ROUNDEVEN mode.
    (define_attr): Add roundeven mode for i387_cw.
    (<rouding_insn><mode>2): Add condition for ROUND_ROUNDEVEN.
    * internal-fn.def (ROUNDEVEN): New builtin function.
    * optabs.def (roundeven_optab): New optab.

gcc/testsuite/ChangeLog:

2019-07-24  Tejas Joshi  <tejasjoshi9673@gmail.com>

    * gcc.target/i386/avx-vround-roundeven-1.c: New test.
    * gcc.target/i386/avx-vround-roundeven-2.c: New test.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: roundeven-md1.diff
Type: text/x-patch
Size: 8553 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20190724/ef48c4ae/attachment.bin>


More information about the Gcc-patches mailing list