[llvm-dev] SelectionDAG: target-specific simplification of generic nodes using demanded bits

Simon Pilgrim via llvm-dev llvm-dev at lists.llvm.org
Fri Oct 23 01:57:02 PDT 2020


X86 would definitely benefit from this as we often use generic opcodes 
as part of more complex patterns that could then be handled through 
SimplifyDemandedBits/SimplifyDemandedVectorElts/SimplifyMultipleUse.

Is this likely to slow compile times down?

I've tried but struggled to come up with an acceptable way to determine 
the accumulated demanded bits/elts across all users of a SDValue - I was 
always worried that caching would miss nodes that had recently been 
added/removed.

I've often thought it a shame that the standard combines don't include 
the demandedbits/elts masks directly instead of having a separate 
SimplifyDemanded* mechanism.

Simon.

On 22/10/2020 15:37, Jay Foad via llvm-dev wrote:
> All,
>
> The AMDGPU target has a 24-bit multiply instruction. In 
> SimplifyDemandedBits I'd like to be able to turn a generic i32 
> ISD::MUL into AMDGPUISD::MUL_I24 if only the low order 24 bits are 
> demanded. Currently it seems like there's no way to do that, because 
> the target hook SimplifyDemandedBitsForTargetNode is only called for 
> target-specific nodes, not for generic nodes like MUL.
>
> Would it be acceptable to call the target hook for generic nodes as 
> well? Here's a patch to show the general idea: 
> https://reviews.llvm.org/D89964
> (It probably needs a bit of polish, e.g. the name 
> "SimplifyDemandedBitsForTargetNode" is misleading now.)
>
> In the future perhaps "demanded bits" could become a cached analysis 
> that could be queried from anywhere. Then I could write a 
> target-specific DAG combine for MUL that would query the demanded bits 
> for the node to do this transformation.
>
> Thanks,
> Jay.
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201023/c5ce06c4/attachment.html>


More information about the llvm-dev mailing list