Craig Topper
8dfb9627b7
[X86] Make v32i16/v64i8 legal types without avx512bw. Use custom splitting instead.
...
This moves v32i16/v64i8 to a model consistent with how we
treat integer types with avx1.
This does change the ABI for types vXi16/vXi8 vectors larger than
512 bits to pass in multiple zmms instead of multiple ymms. We'd
already hacked some code to make v64i8/v32i16 pass in zmm.
Cost model is still a bit of a mess. In some place I tried to
match existing behavior. But really we need to account for
splitting and concating costs. Cost model for shuffles is
especially pessimistic.
Differential Revision: https://reviews.llvm.org/D76212
2020-04-15 12:17:18 -07:00
Simon Pilgrim
12c629ec6c
[CostModel][X86] Add shuffle costs for some common sub-128bit vectors
...
v2i8/v4i8/v8i8 + v2i16/v4i16 all show up in vectorizer code and by just using the legalized types (v16i8/v8i16) we're highly exaggerating the actual cost of the shuffle.
2020-04-09 19:57:06 +01:00
Simon Pilgrim
6a57ba17c0
[CostModel][X86] Add shuffle cost tests for sub-128bit vectors
2020-04-04 13:08:25 +01:00
Simon Pilgrim
eaa41e103c
[CostModel][X86] Try to check against common prefixes before using target-specific cpu checks
...
SLM/GLM is still a mess so not all of them have been updated yet.
2020-02-24 11:59:07 +00:00
Simon Pilgrim
32702cc86a
[CostModel] Recognise REVERSE shuffle mask if the elements come from the second src
...
llvm-svn: 334698
2018-06-14 09:35:00 +00:00
Simon Pilgrim
9fd634db22
[CostModel][X86] Test showing failure to recognise REVERSE shuffle mask if the elements come from the second src
...
llvm-svn: 334623
2018-06-13 17:12:11 +00:00
Simon Pilgrim
cd9ccf8824
[CostModel][X86] Split off BtVer2 cost checks
...
llvm-svn: 330433
2018-04-20 13:50:33 +00:00
Simon Pilgrim
34b397a318
[CostModel][X86] Add some specific cpu targets to the cost models
...
We're mostly testing with generic isa attributes, but PR36550 will require testing of specific target's scheduler models as well.
llvm-svn: 330056
2018-04-13 19:30:15 +00:00
Simon Pilgrim
63ae5579e7
[CostModel][X86] Regenerate vector shuffle cost tests with update_analyze_test_checks.py
...
llvm-svn: 329410
2018-04-06 16:00:28 +00:00
Simon Pilgrim
fe67612eba
[CostModel][X86] Add avx512vbmi broadcast/reverse/single-src shuffle cost tests
...
llvm-svn: 310633
2017-08-10 17:33:25 +00:00
Simon Pilgrim
a1b8e2c725
[X86][AVX512] Use lowerShuffleAsRepeatedMaskAndLanePermute for non-VBMI v64i8 shuffles (PR31470)
...
llvm-svn: 291347
2017-01-07 15:37:50 +00:00
Elena Demikhovsky
d96200d60a
Fixed shuffle-reverse cost on AVX-512.
...
(This changed was approved in https://reviews.llvm.org/D28118 , but Simon asked to submit it separately).
llvm-svn: 290812
2017-01-02 11:44:10 +00:00
Simon Pilgrim
2f7f0e7a48
[CostModel][X86] Updated reverse shuffle costs
...
llvm-svn: 289819
2016-12-15 14:24:07 +00:00
Simon Pilgrim
9ebeac3eed
[CostModel][X86] Add tests for reverse shuffle costs
...
llvm-svn: 289800
2016-12-15 10:45:53 +00:00