search for: selectvectorizationfactor

Displaying 4 results from an estimated 4 matches for "selectvectorizationfactor".

2020 Nov 17
0
[Proposal] Introducing the concept of invalid costs to the IR cost model
...concept of invalid costs to the IR cost model Hi David, This would be a very useful upgrade to the cost model. One thing I want to add is that we need to be mindful of the cases where the cost is proportional (or inversely proportional) to the VF, for instance in the LoopVectorizationCostModel::selectVectorizationFactor(ElementCount MaxVF), there is a point where expected cost is divided by the VF. I believe there are other places where the instruction cost is dependent on the actual number of elements in the vector. While this is not a problem for fixed vectors, for scalable vectors we need to account for the vsc...
2018 Jul 23
2
[LoopVectorizer] Improving the performance of dot product reduction loop
On 07/23/2018 06:23 PM, Hal Finkel via llvm-dev wrote: > > On 07/23/2018 05:22 PM, Craig Topper wrote: >> Hello all, >> >> This code https://godbolt.org/g/tTyxpf is a dot product reduction >> loop multipying sign extended 16-bit values to produce a 32-bit >> accumulated result. The x86 backend is currently not able to optimize >> it as well as gcc and icc.
2018 Jul 24
2
[LoopVectorizer] Improving the performance of dot product reduction loop
...loop body and allows the possible VF up to 16, but LV selects > the VF as 8 though VF16 has the same cost. > > LV: Vector loop of width 8 costs: 1. > > LV: Vector loop of width 16 costs: 1. > >   > > It’s because of below check in LV: > > LoopVectorizationCostModel::selectVectorizationFactor() { > > … > >     if (VectorCost < Cost) { > >       Cost = VectorCost; > >       Width = i; > >     } > >   > > I don’t know the history behind this change but wondering why it’s > like this, at least for “vectorizer-maximize-bandwidth” it should be...
2020 Nov 05
4
[Proposal] Introducing the concept of invalid costs to the IR cost model
Hi, I'd like to propose a change to our cost interfaces so that instead of returning an unsigned value from functions like getInstructionCost, getUserCost, etc., we instead return a wrapper class that encodes an integer cost along with extra state. The extra state can be used to express: 1. A cost as infinitely expensive in order to prevent certain optimisations taking place. For example,