Simon Pilgrim
ac84005841
[CostModel][X86] Add vXi8 vector division by constants costs.
...
ISD::MULHS/ISD::MULHU lowering of vXi8 types means we expand these in TargetLowering BuildSDIV/BuildUDIV.
llvm-svn: 345175
2018-10-24 18:44:12 +00:00
Simon Pilgrim
2cce074e8c
[CostModel][X86] Enable non-uniform vector division by constants costs.
...
Non-uniform division/remainder handling was added back at D49248/D50765 - so share the 'mul+sub' costs that already exist for uniform cases.
llvm-svn: 345164
2018-10-24 17:30:29 +00:00
Simon Pilgrim
667a5b541f
[TargetTransformInfo] Add pow2 analysis for scalar constants
...
Add ConstantInt analysis to getOperandInfo so we get more realistic div/rem expansion costs comparable to the vector costs.
llvm-svn: 336827
2018-07-11 17:51:27 +00:00
Simon Pilgrim
8c3765dc6b
[CostModel][X86] Add UDIV/UREM by pow2 costs
...
Normally InstCombine would have simplified these to SRL/AND instructions but we may still see these during SLP vectorization etc.
llvm-svn: 336371
2018-07-05 16:56:28 +00:00
Simon Pilgrim
4162d77744
[TTI] Add uniform/non-uniform constant Pow2 detection to TargetTransformInfo::getInstructionThroughput
...
This enables us to detect more fast path sdiv cases under cost analysis.
This patch also enables us to handle non-uniform-constant pow2 cases for X86 SDIV costs.
Found while working on D46276
Future patches can then extend the vectorizers to more fully support non-uniform pow2 cases.
Differential Revision: https://reviews.llvm.org/D46637
llvm-svn: 332969
2018-05-22 10:40:09 +00:00
Simon Pilgrim
fe5c5277ed
[CostModel][X86] Split off SLM checks
...
A future patch will require this and the diff is much better if we perform the split separately.
llvm-svn: 331867
2018-05-09 11:42:34 +00:00
Simon Pilgrim
0ae4bba911
[CostModel][X86] Add div/rem tests for non-uniform constant divisors
...
llvm-svn: 330852
2018-04-25 18:03:31 +00:00
Simon Pilgrim
8a15d72550
[CostModel][X86] Add SLM/GLM/BtVer2 compare + division/remainder cost tests
...
llvm-svn: 330435
2018-04-20 14:50:34 +00:00
Simon Pilgrim
06fba8b204
[CostModel][X86] Regenerate integer division/remainder tests with update_analyze_test_checks.py
...
llvm-svn: 329401
2018-04-06 15:23:26 +00:00
Simon Pilgrim
d3f0d03cc5
[X86][AVX1] Account for cost of extract/insert of 256-bit SDIV/UDIV by mul sequences
...
llvm-svn: 303017
2017-05-14 18:52:15 +00:00
Simon Pilgrim
365be4f95c
[CostModel][X86] Fixed AVX1/AVX512 sdiv/udiv uniformconst costs for 256/512 bit integer vectors
...
We weren't checking for uniform const costs before the general cost, resulting in very high estimates.
llvm-svn: 284755
2016-10-20 18:00:35 +00:00
Simon Pilgrim
1388c0acc1
[CostModel][X86] Added tests for sdiv/udiv costs for uniform const and uniform const power-of-2
...
Shows poor costings in AVX1/AVX512BW for certain vector types
llvm-svn: 284748
2016-10-20 17:16:38 +00:00
Simon Pilgrim
025e26dd32
[CostModel][X86] Fixed AVX1/AVX512 sdiv/udiv general costs for 256/512 bit integer vectors
...
We weren't accounting for legal types on every subtarget, meaning that many of the costs were using defaults.
We still don't correctly cost (or test) the 512-bit sdiv/udiv by uniform const cases, nor the power-of-2 cases.
llvm-svn: 284744
2016-10-20 16:39:11 +00:00
Simon Pilgrim
16cc616ebc
[CostModel][X86] Added tests for sdiv/udiv costs for scalar and 128/256/512 bit integer vectors
...
Shows current bug in AVX1/AVX512BW costs for 256 bit vector types
llvm-svn: 284723
2016-10-20 12:34:00 +00:00
Arnold Schwaighofer
a04b9ef1e8
X86 cost model: Vectorizing integer division is a bad idea
...
radar://14057959
llvm-svn: 184872
2013-06-25 19:14:09 +00:00