From: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
To: linux-sparse@vger.kernel.org
Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Subject: [PATCH 0/6] 'bits translation' simplification
Date: Fri, 27 Nov 2020 23:25:09 +0100 [thread overview]
Message-ID: <20201127222516.44915-1-luc.vanoostenryck@gmail.com> (raw)
In-Reply-To: <CAHk-=wjoJXrG=2_vnOX37fro12eyZc+uo2WL+F-utk51g9WuBA@mail.gmail.com>
This series allows the simplification of expressions like:
if (val1 & 4)
val2 |= 8;
into
val2 |= (val1 & 4) << 1;
With a better if-conversion mechanism it also allows to optimize
int translate_bits(int x)
{
int y = 0;
if (x & 4)
y |= 16;
if (x & 8)
y |= 32;
return y;
}
into this nice:
translate_bits:
and.32 %r2 <- %arg1, $12
shl.32 %r5 <- %r2, $2
ret.32 %r5
when applied on top of the previous 'factorization' series.
This series is available for review and testing at:
git://git.kernel.org/pub/scm/devel/sparse/sparse-dev.git bit-trans
Luc Van Oostenryck (6):
add testscases for 'bits translation' optimization
factorize SEL(x, OP(y,z), y) into OP(SEL(x, z, 0), y)
add helper is_power_of_2()
add helper is_pow2()
add log base 2 function: log2_exact()
convert SEL(x & BIT1, BIT2, 0) into SHIFT(x & BIT1, S)
bits.h | 12 ++++++
simplify.c | 64 +++++++++++++++++++++++++++++
validation/optim/fact-select01.c | 25 +++++++++++
validation/optim/select-and-shift.c | 17 ++++++++
4 files changed, 118 insertions(+)
create mode 100644 validation/optim/fact-select01.c
create mode 100644 validation/optim/select-and-shift.c
--
2.29.2
next prev parent reply other threads:[~2020-11-27 22:28 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-22 15:27 [PATCH 0/7] simplify logical negation Luc Van Oostenryck
2020-11-22 15:27 ` [PATCH 1/7] not: add testcases for canonicalization & simplification of negations Luc Van Oostenryck
2020-11-22 19:00 ` Linus Torvalds
2020-11-22 19:57 ` Luc Van Oostenryck
2020-11-22 20:13 ` Linus Torvalds
2020-11-22 20:38 ` Luc Van Oostenryck
2020-11-22 22:26 ` Luc Van Oostenryck
2020-11-27 22:25 ` Luc Van Oostenryck [this message]
2020-11-27 22:25 ` [PATCH 1/6] add testscases for 'bits translation' optimization Luc Van Oostenryck
2020-11-27 22:25 ` [PATCH 2/6] factorize SEL(x, OP(y,z), y) into OP(SEL(x, z, 0), y) Luc Van Oostenryck
2020-11-27 22:25 ` [PATCH 3/6] add helper is_power_of_2() Luc Van Oostenryck
2020-11-27 22:25 ` [PATCH 4/6] add helper is_pow2() Luc Van Oostenryck
2020-11-27 22:25 ` [PATCH 5/6] add log base 2 function: log2_exact() Luc Van Oostenryck
2020-11-27 22:25 ` [PATCH 6/6] convert SEL(x & BIT1, BIT2, 0) into SHIFT(x & BIT1, S) Luc Van Oostenryck
2020-11-27 22:25 ` [PATCH 7/7] move up instructions blocking if-conversion Luc Van Oostenryck
2020-11-27 22:44 ` [PATCH 0/6] 'bits translation' simplification Linus Torvalds
2020-11-22 15:27 ` [PATCH 2/7] canon: put PSEUDO_ARGs in canonical order too Luc Van Oostenryck
2020-11-22 15:27 ` [PATCH 3/7] canon: put PSEUDO_REGs " Luc Van Oostenryck
2020-11-22 15:27 ` [PATCH 4/7] canon: simplify calculation of canonical order Luc Van Oostenryck
2020-11-22 15:27 ` [PATCH 5/7] opcode: add helpers opcode_negate() & opcode_swap() Luc Van Oostenryck
2020-11-22 15:27 ` [PATCH 6/7] not: simplify (~x {&,|,^} x) --> {0,~0,~0} Luc Van Oostenryck
2020-11-22 15:27 ` [PATCH 7/7] not: simplify ((x cmp y) {&,|,^} (x !cmp y)) --> {0,1,1} Luc Van Oostenryck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201127222516.44915-1-luc.vanoostenryck@gmail.com \
--to=luc.vanoostenryck@gmail.com \
--cc=linux-sparse@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.