This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/70322] STV doesn't optimize andn
- From: "ienkovich at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 21 Mar 2016 13:52:02 +0000
- Subject: [Bug target/70322] STV doesn't optimize andn
- Auto-submitted: auto-generated
- References: <bug-70322-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70322
--- Comment #5 from Ilya Enkovich <ienkovich at gcc dot gnu.org> ---
STV is a scalar to vector converter. It doesn't combine two instructions into
a single ANDN, it searches for existing ANDN patterns and converts them into
vector mode. Combine is responsible for producing ANDN out of two
instructions. With proper one_cmpl pattern combine should be able to handle
it.
TARGET_BMI is required for scalar version. Vector version doesn't require BMI
but if instruction is not converted into a vector one then we split it into BMI
instructions.
I had ANDN support for non-BMI targets in my plans. But you can't just remove
TARGET_BMI from existing pattern. Additional split is needed as mentioned in
[1].
BTW I expect ANDN support for non-BMI targets should improve 462.libquantum
performance on Silvermont. It should be used to test a fix.
[1] https://gcc.gnu.org/ml/gcc-patches/2016-01/msg01229.html