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,