Nadav Rotem
5f7c12cfbd
LoopVectorizer: When checking for vectorizable types, also check
...
the StoreInst operands.
PR14705.
llvm-svn: 171023
2012-12-24 09:14:18 +00:00
Nadav Rotem
cf9999d9d5
CostModel: Change the default target-independent implementation for finding
...
the cost of arithmetic functions. We now assume that the cost of arithmetic
operations that are marked as Legal or Promote is low, but ops that are
marked as custom are higher.
llvm-svn: 171002
2012-12-23 17:31:23 +00:00
Nadav Rotem
2cade68025
Loop Vectorizer: Update the cost model of scatter/gather operations and make
...
them more expensive.
llvm-svn: 170995
2012-12-23 07:23:55 +00:00
Benjamin Kramer
ae0bb61053
Make TargetLowering::getTypeConversion more resilient against odd illegal MVTs.
...
- An MVT can become an EVT when being split (e.g. v2i8 -> v1i8, the latter doesn't exist)
- Return the scalar value when an MVT is scalarized (v1i64 -> i64)
Fixes PR14639ff.
llvm-svn: 170546
2012-12-19 14:34:28 +00:00
Nadav Rotem
36510f7194
Teach the cost model about the optimization in r169904: Truncation of induction variables costs the same as scalar trunc.
...
llvm-svn: 170051
2012-12-13 00:21:03 +00:00
Nadav Rotem
0914f0b262
Cost Model: add tables for some avx type-conversion hacks.
...
llvm-svn: 167480
2012-11-06 19:33:53 +00:00
Nadav Rotem
ae79765676
Code Model: Improve the accuracy of the zext/sext/trunc vector cost estimation.
...
llvm-svn: 167412
2012-11-05 22:20:53 +00:00
Nadav Rotem
7411623fd8
Implement the cost of abnormal x86 instruction lowering as a table.
...
llvm-svn: 167395
2012-11-05 19:32:46 +00:00
Nadav Rotem
4cb8cdab5e
LoopVectorize: Preserve NSW, NUW and IsExact flags.
...
llvm-svn: 167174
2012-10-31 21:40:39 +00:00
Nadav Rotem
6d7d39783d
Fix a bug in the cost calculation of vector casts. Detect situations where bitcasts cost zero.
...
llvm-svn: 167170
2012-10-31 20:52:26 +00:00
Nadav Rotem
ff7889196b
Add support for loops that don't start with Zero.
...
This is important for loops in the LAPACK test-suite.
These loops start at 1 because they are auto-converted from fortran.
llvm-svn: 167084
2012-10-31 00:45:26 +00:00
Nadav Rotem
859366f93f
1. Fix a bug in getTypeConversion. When a *simple* type is split, we need to return the type of the split result.
...
2. Change the maximum vectorization width from 4 to 8.
3. A test for both.
llvm-svn: 166864
2012-10-27 04:11:32 +00:00
Nadav Rotem
afae78edab
Refactor the VectorTargetTransformInfo interface.
...
Add getCostXXX calls for different families of opcodes, such as casts, arithmetic, cmp, etc.
Port the LoopVectorizer to the new API.
The LoopVectorizer now finds instructions which will remain uniform after vectorization. It uses this information when calculating the cost of these instructions.
llvm-svn: 166836
2012-10-26 23:49:28 +00:00
Nadav Rotem
fcd1af344c
Move the target-specific tests, which require specific backends, to dirs that only run if the target is present.
...
llvm-svn: 166796
2012-10-26 18:52:01 +00:00