aboutsummaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
authorTejas Joshi <tejasjoshi9673@gmail.com>2019-08-26 12:41:59 +0000
committerMartin Jambor <jamborm@gcc.gnu.org>2019-08-26 14:41:59 +0200
commitd3b92f35d84f44a8599028086286699213b73e7c (patch)
tree68dd8aabf68a9b3ef68b677082dbe5c480fe7ae5 /gcc/reg-stack.c
parent7d7b99f95bf2517caab5f9300090b471135b4fc0 (diff)
downloadgcc-d3b92f35d84f44a8599028086286699213b73e7c.zip
gcc-d3b92f35d84f44a8599028086286699213b73e7c.tar.gz
gcc-d3b92f35d84f44a8599028086286699213b73e7c.tar.bz2
i386: Roundeven expansion for SSE4.1+
gcc/ChangeLog: 2019-08-26 Tejas Joshi <tejasjoshi9673@gmail.com> Uros Bizjak <ubizjak@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-08-26 Tejas Joshi <tejasjoshi9673@gmail.com> * gcc.target/i386/sse4_1-round-roundeven-1.c: New test. * gcc.target/i386/sse4_1-round-roundeven-2.c: New test. Co-Authored-By: Uros Bizjak <ubizjak@gmail.com> From-SVN: r274928
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r--gcc/reg-stack.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 710f14a..0f0089a 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -1817,6 +1817,7 @@ subst_stack_regs_pat (rtx_insn *insn, stack_ptr regstack, rtx pat)
case UNSPEC_FRNDINT:
case UNSPEC_F2XM1:
+ case UNSPEC_FRNDINT_ROUNDEVEN:
case UNSPEC_FRNDINT_FLOOR:
case UNSPEC_FRNDINT_CEIL:
case UNSPEC_FRNDINT_TRUNC: