https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82439

--- Comment #7 from sudi at gcc dot gnu.org ---
Author: sudi
Date: Fri Jan  5 10:45:37 2018
New Revision: 256275

URL: https://gcc.gnu.org/viewcvs?rev=256275&root=gcc&view=rev
Log:
[PATCH PR82439][simplify-rtx] Simplify (x | y) == x -> (y & ~x) == 0

This patch add support for the missing transformation of
(x | y) == x -> (y & ~x) == 0. The transformation for (x & y) == x case
already exists in simplify-rtx.c since 2014 as of r218503 and this patch
only adds a couple of extra patterns for the IOR case. This benefits 
targets that have the BICS instruction to generate better code. For
targets that do not have the BICS instructions, it still results in
no worse code generation and gives out 2 instructions.

ChangeLog Entries:

*** gcc/ChangeLog ***

2018-01-05  Sudakshina Das  <sudi....@arm.com>

        PR target/82439
        * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
        of (x|y) == x for BICS pattern.

*** gcc/testsuite/ChangeLog ***

2018-01-05  Sudakshina Das  <sudi....@arm.com>

        PR target/82439
        * gcc.target/aarch64/bics_5.c: New test.
        * gcc.target/arm/bics_5.c: Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/aarch64/bics_5.c
    trunk/gcc/testsuite/gcc.target/arm/bics_5.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/simplify-rtx.c
    trunk/gcc/testsuite/ChangeLog

Reply via email to