diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2020-05-18 17:25:39 +0200 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2020-05-18 17:25:39 +0200 |
commit | 94f687bd9ae37ece9391a3c42783c5768d26e81d (patch) | |
tree | 42209d4d1b062a500ce4c4dcfd76ef4e2b836f6f /gcc/config/i386/i386-expand.c | |
parent | cfaf0edbb123958e84d296354152294f167db9f3 (diff) |
i386: Improve vector mode and TFmode ABS and NEG patterns
gcc/ChangeLog:
2020-05-18 Uroš Bizjak <ubizjak@gmail.com>
* config/i386/i386-expand.c (ix86_expand_fp_absneg_operator):
Do not emit FLAGS_REG clobber for TFmode.
* config/i386/i386.md (*<code>tf2_1): Rewrite as
define_insn_and_split. Mark operands 1 and 2 commutative.
(*nabstf2_1): Ditto.
(absneg SSE splitter): Use MODEF mode iterator instead of SSEMODEF.
Do not swap memory operands. Simplify RTX generation.
(neg abs SSE splitter): Ditto.
* config/i386/sse.md (*<code><mode>2): Mark operands 1 and 2
commutative. Do not swap operands. Simplify RTX generation.
(*nabs<mode>2): Ditto.
Diffstat (limited to 'gcc/config/i386/i386-expand.c')
-rw-r--r-- | gcc/config/i386/i386-expand.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c index 26531585c5f..2865cced66c 100644 --- a/gcc/config/i386/i386-expand.c +++ b/gcc/config/i386/i386-expand.c @@ -1716,9 +1716,7 @@ ix86_expand_fp_absneg_operator (enum rtx_code code, machine_mode mode, machine_mode vmode = mode; rtvec par; - if (vector_mode) - use_sse = true; - else if (mode == TFmode) + if (vector_mode || mode == TFmode) use_sse = true; else if (TARGET_SSE_MATH) { @@ -1743,7 +1741,7 @@ ix86_expand_fp_absneg_operator (enum rtx_code code, machine_mode mode, Create the appropriate mask now. */ mask = ix86_build_signbit_mask (vmode, vector_mode, code == ABS); use = gen_rtx_USE (VOIDmode, mask); - if (vector_mode) + if (vector_mode || mode == TFmode) par = gen_rtvec (2, set, use); else { |