[Bug target/70322] STV doesn't optimize andn

ienkovich at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Mar 21 13:52:00 GMT 2016


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


More information about the Gcc-bugs mailing list