[Bug target/102239] powerpc suboptimal boolean test of contiguous bits
segher at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Sep 9 19:40:54 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102239
Segher Boessenkool <segher at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2021-09-09
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Confirmed.
So the relevant insn
(parallel [(set (reg:CC 123)
(compare:CC (and:DI (reg:DI 124)
(const_int 25769803776 [0x600000000]))
(const_int 0 [0])))
(clobber (scratch:DI))])
is matched by *and<mode>3_2insn but not by any pattern that ends up as just
one insn. Not *and<mode>3_mask_dot, because that doesn't do a shift first,
is just an AND and there are no machine insns to do that; but there is no
pattern for what we can do.
*rotl<mode>3_mask_dot cannot do this either; the base and the dot2 of that
cannot be done, they return a shifted result, but that doesn't matter for
comparing it to 0. So we should add a specialised version.
More information about the Gcc-bugs
mailing list