[Bug target/106536] P9: gcc does not detect setb pattern
segher at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 13 16:25:02 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106536
Segher Boessenkool <segher at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2022-09-13
Status|UNCONFIRMED |NEW
CC| |segher at gcc dot gnu.org
--- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Confirmed.
GCC uses conditional branches here in expand already. It is hard to optimise
this over that.
Using -mcpu=power10 we don't get conditional branches:
cmpld 7,3,4 # 8 [c=4 l=4] *cmpdi_unsigned
li 9,1 # 43 [c=4 l=4] *movsi_internal1/8
cmpld 0,3,4 # 45 [c=4 l=4] *cmpdi_unsigned
setnbc 10,28 # 44 [c=4 l=4] *setnbc_unsigned_si
isel 3,9,10,1 # 46 [c=4 l=4] isel_unsigned_si/1
extsw 3,3 # 24 [c=4 l=4] extendsidi2/1
blr # 51 [c=4 l=4] simple_return
but this of course isn't ideal yet either. The branches aren't fully optimised
away until ce2, which is *after* combine. ce1 didn't catch this, perhaps
because
the two conditional assignments are a bit intertwined there?
More information about the Gcc-bugs
mailing list