[PATCH] D132237: [SDAG] expand is-power-of-2 pattern that uses popcount
Sanjay Patel via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 23 07:33:32 PDT 2022
spatel added a comment.
In D132237#3741964 <https://reviews.llvm.org/D132237#3741964>, @dmgreen wrote:
> I had almost written something into 57225 that said, effectively, custom isn't a very good costmodel as it can mean so many things, so adding a target hook sounds like a good way forward.
>
> This sounds good for AArch64. Could there be cases where the CTPOP (+setcc) is custom lowered but cheaper than the Add+And+setcc+setcc+and/or? My guess would probably be no, it would either be legal or quite expensive.
It's a fuzzy/general problem - we generally assume that a legal op is as cheap as it gets (usually one instruction), and a custom op is not as cheap (some sequence of legal instructions), but there's no guarantee on that.
I haven't seen any examples where this pattern is going wrong yet (after this patch), but it is complicated - @davezarzycki was looking at a large/messy set of potential x86 vector ISA trade-offs.
As noted earlier, the existing TLI hook doesn't quite fit the usage we want here. We could alter it to return a cost of 0 or something like that, but I thought that muddied the definition for the intended pattern (where we're expanding in a loop).
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D132237/new/
https://reviews.llvm.org/D132237
More information about the llvm-commits
mailing list