i386-protos.h (ix86_split_fp_absneg_operator): New prototype.
authorUros Bizjak <ubizjak@gmail.com>
Mon, 10 Jun 2019 19:17:57 +0000 (21:17 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 10 Jun 2019 19:17:57 +0000 (21:17 +0200)
commitf359611b363490b48a7ce0fd021f7e47d8816eb0
treeff081924bb1da6cbe1c1bc19755aa21115dcc0cf
parentf2ee751da8551c9d1a84c337239b0e52211fd1aa
i386-protos.h (ix86_split_fp_absneg_operator): New prototype.

* config/i386/i386-protos.h (ix86_split_fp_absneg_operator):
New prototype.
* config/i386/i386-expand.c (ix86_expand_fp_absneg_operator):
Emit clobber also for non-sse operations.
(ix86_split_fp_absneg_operator): New function.
* config/i386/i386.md (SSEMODEF): New mode iterator.
(ssevecmodef): New mode attribute.
(<code>tf2): Use absneg code iterator.
(*<code>tf2_1): Rename from *absnegtf3_sse. Use absneg code iterator.
Add three-operand AVX alternatives.
(*<code><mode>2_i387_1): Rename from *absnegxf2_i387.
Use absneg code iterator and X87MODEF mode iterator.
(absneg fp_reg non-sse splitter): Call absneg code iterator
and X87MODEF mode iterator.
(absneg general_reg non-sse splitter): Use absneg code iterator
and X87MODEF mode iterator.  Use ix86_split_fp_absneg_operator.
(*<code><mode>2_1): Rename from *absneg<mode>2.  Use absneg
code iterator.  Add three-operand AVX alternative.
(absneg sse_reg splitter): Use absneg code iterator
and SSEMODEF mode iterator.  Handle AVX operands.
(absneg fp_reg splitter): Use absneg code iterator
and MODEF mode iterator.
(absneg general_reg splitter): Merge splitters using MODEF mode
iterator.  Use absneg code iterator.  Call
ix86_split_fp_absneg_operator.
(*<code><mode>2_i387): Rename from *<code><mode>2_1.
Do not enable for non-sse modes before reload.
(CSGNMODE): Remove.
(CSGNVMODE): Ditto.
(copysing<mode>3): Use SSEMODEF instead of CSGNMODE and
ssevecmodef mode attribute instaed of CSGNVMODE.
(copysign<mode>3_const): Ditto.
(copysign<mode>3_var): Ditto.
* config/i386/i386.md (*<code><mode>2): Rename from *absneg<mode>2.
Use absneg code iterator.  Simplify code using std::swap.
* config/i386/predicates.md (absneg_operator): Remove.

From-SVN: r272123
gcc/ChangeLog
gcc/config/i386/i386-expand.c
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.md
gcc/config/i386/predicates.md
gcc/config/i386/sse.md