i386: Improve and optimize ix86_expand_sse_movcc
commitf4a2cecd689c5dd805c86731f712ff20ca41a71d
authorUros Bizjak <ubizjak@gmail.com>
Sat, 15 Jan 2022 19:59:07 +0000 (15 20:59 +0100)
committerUros Bizjak <ubizjak@gmail.com>
Sat, 15 Jan 2022 19:59:57 +0000 (15 20:59 +0100)
treee9895c61313e030e2c93b1d54cc9ffb19af402b4
parentdcf8fe1eeab668a4d24bcc4baa3ad185dbf1b5e0
i386: Improve and optimize ix86_expand_sse_movcc

Modernize ix86_expand_sse_movcc to use expand_simple_{unop,binop}
infrastructure to avoid manual twiddling with output registers.
Also fix a couple of inconsistent vector_all_ones_operand usages,
break a couple of unnecessary else-if chains, eliminate common
subexpressions and do some general code simplifications.

2022-01-15  Uroš Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog:

* config/i386/i386-expand.c (ix86_expand_sse_movcc): Use
expand_simple_unop and expand_simple_binop instead of manually
constructing NOT, AND and IOR RTXes.  Use vector_all_ones_operand
consistently.  Eliminate common subexpressions and simplify code.
* config/i386/sse.md (<any_logic:code><MODEF:mode>3): New expander.
(<any_logic:code><MODEF:mode>3): Make public.
gcc/config/i386/i386-expand.c
gcc/config/i386/sse.md