forked from OSchip/llvm-project
'OK_NonUniformConstValue' to identify operands which are constants but not constant splats. The cost model now allows returning 'OK_NonUniformConstValue' for non splat operands that are instances of ConstantVector or ConstantDataVector. With this change, targets are now able to compute different costs for instructions with non-uniform constant operands. For example, On X86 the cost of a vector shift may vary depending on whether the second operand is a uniform or non-uniform constant. This patch applies the following changes: - The cost model computation now takes into account non-uniform constants; - The cost of vector shift instructions has been improved in X86TargetTransformInfo analysis pass; - BBVectorize, SLPVectorizer and LoopVectorize now know how to distinguish between non-uniform and uniform constant operands. Added a new test to verify that the output of opt '-cost-model -analyze' is valid in the following configurations: SSE2, SSE4.1, AVX, AVX2. llvm-svn: 201272 |
||
|---|---|---|
| .. | ||
| arith.ll | ||
| cast.ll | ||
| cmp.ll | ||
| div.ll | ||
| gep.ll | ||
| i32.ll | ||
| insert-extract-at-zero.ll | ||
| intrinsic-cost.ll | ||
| lit.local.cfg | ||
| load_store.ll | ||
| loop_v2.ll | ||
| reduction.ll | ||
| sitofp.ll | ||
| testshiftashr.ll | ||
| testshiftlshr.ll | ||
| testshiftshl.ll | ||
| tiny.ll | ||
| uitofp.ll | ||
| vectorized-loop.ll | ||
| vshift-cost.ll | ||