[PATCH] D75062: [VectorCombine] make cost calc consistent for binops and cmps

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 24 10:49:03 PST 2020


spatel added a comment.

In D75062#1889707 <https://reviews.llvm.org/D75062#1889707>, @lebedev.ri wrote:

> > We have the reverse transform with target hook in DAGCombiner already -- scalarizeExtractedBinop() -- so that provides a later opportunity to invert (potentially with a more accurate cost model).
>
> I'm a little bit lost there.
>  Unless i'm not reading it right, even if the `TLI.shouldScalarizeBinop(Vec)` returns `true`,
>  the code only scalarizes if at least one of the vector operands is constant.


Oops, I misread it - I saw an x86 FP example like:

  define float @fadd_extract(<4 x float> %x, <4 x float> %y) {
    %a = fadd <4 x float> %x, %y
    %r = extractelement <4 x float> %a, i32 0
    ret float %r
  }

...but that's handled by the x86-specific scalarizeExtEltFP().

I can try to make scalarizeExtractedBinop() stronger, but I'll need to find a target/example where it is a win (the extracts need to be free, or the vector op needs to be pretty expensive?). Or we just see if this causes wins or regressions for anyone as-is?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75062/new/

https://reviews.llvm.org/D75062





More information about the llvm-commits mailing list