[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