| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 303300
|
|
|
|
| |
llvm-svn: 303293
|
|
|
|
| |
llvm-svn: 303283
|
|
|
|
| |
llvm-svn: 303023
|
|
|
|
| |
llvm-svn: 303022
|
|
|
|
| |
llvm-svn: 303021
|
|
|
|
|
|
| |
sequences
llvm-svn: 303017
|
|
|
|
|
|
|
|
| |
mask.
Tweak cost model to match what lowering actually does.
llvm-svn: 303013
|
|
|
|
| |
llvm-svn: 303012
|
|
|
|
| |
llvm-svn: 303010
|
|
|
|
|
|
| |
Account for subvector extraction/insertion, helps prevent the vectorizers from selecting 256-bit vectors that will have to be split anyhow on AVX1 targets.
llvm-svn: 302378
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
getArithmeticInstrCost(), getShuffleCost(), getCastInstrCost(),
getCmpSelInstrCost(), getVectorInstrCost(), getMemoryOpCost(),
getInterleavedMemoryOpCost() implemented.
Interleaved access vectorization enabled.
BasicTTIImpl::getCastInstrCost() improved to check for legal extending loads,
in which case the cost of the z/sext instruction becomes 0.
Review: Ulrich Weigand, Renato Golin.
https://reviews.llvm.org/D29631
llvm-svn: 300052
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
LSV wants to know the maximum size that can be loaded to a vector register.
On X86, this always matches the maximum register width. Implement this
accordingly and add a test to make sure that LSV can vectorize up to the
maximum permissible width on X86.
Reviewers: delena, arsenm
Reviewed By: arsenm
Subscribers: wdng, llvm-commits
Differential Revision: https://reviews.llvm.org/D31504
llvm-svn: 299589
|
|
|
|
|
|
| |
Prep work for PR31810
llvm-svn: 297876
|
|
|
|
| |
llvm-svn: 297824
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
getIntrinsicInstrCost() used to only compute scalarization cost based on types.
This patch improves this so that the actual arguments are checked when they are
available, in order to handle only unique non-constant operands.
Tests updates:
Analysis/CostModel/X86/arith-fp.ll
Transforms/LoopVectorize/AArch64/interleaved_cost.ll
Transforms/LoopVectorize/ARM/interleaved_cost.ll
The improvement in getOperandsScalarizationOverhead() to differentiate on
constants made it necessary to update the interleaved_cost.ll tests even
though they do not relate to intrinsics.
Review: Hal Finkel
https://reviews.llvm.org/D29540
llvm-svn: 297705
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D29416
llvm-svn: 293932
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Refactoring to remove duplications of this method.
New method getOperandsScalarizationOverhead() that looks at the present unique
operands and add extract costs for them. Old behaviour was to just add extract
costs for one operand of the type always, which still happens in
getArithmeticInstrCost() if no operands are provided by the caller.
This is a good start of improving on this, but there are more places
that can be improved by using getOperandsScalarizationOverhead().
Review: Hal Finkel
https://reviews.llvm.org/D29017
llvm-svn: 293155
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D28547
llvm-svn: 293040
|
|
|
|
| |
llvm-svn: 292613
|
|
|
|
|
|
| |
SHL v8i32 is already handled in the SSE41 cost table
llvm-svn: 292612
|
|
|
|
|
|
| |
We already have patterns in place to support 128/256-bit shifts without AVX512VL
llvm-svn: 292077
|
|
|
|
|
|
| |
has landed
llvm-svn: 292023
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D28447
llvm-svn: 291665
|
|
|
|
|
|
|
|
|
|
|
|
| |
updated instructions:
pmulld, pmullw, pmulhw, mulsd, mulps, mulpd, divss, divps, divsd, divpd, addpd and subpd.
special optimization case which replaces pmulld with pmullw\pmulhw\pshuf seq.
In case if the real operands bitwidth <= 16.
Differential Revision: https://reviews.llvm.org/D28104
llvm-svn: 291657
|
|
|
|
|
|
|
|
|
|
| |
The 'fast' costs should only work for shifts by uniform constants (uniform non-constant are lowered using the slow default implementation).
Logical shifts were not taking into account that we must mask the psrlw result, so the costs needed to be doubled.
Added missing AVX2/AVX512BW costs as well.
llvm-svn: 291391
|
|
|
|
|
|
| |
XOP was prematurely matching, doubling the cost of ashr/lshr uniform shifts.
llvm-svn: 291390
|
|
|
|
|
|
| |
SSE41 provides pmulld which allows the simpler pslld/paddd/cvttps2dq/pmulld pattern than SSE2's use of pmuludq.
llvm-svn: 291372
|
|
|
|
| |
llvm-svn: 291366
|
|
|
|
|
|
| |
We were matching against general vector shift costs before the uniform splat costs
llvm-svn: 291365
|
|
|
|
|
|
| |
conversion.
llvm-svn: 291364
|
|
|
|
| |
llvm-svn: 291355
|
|
|
|
| |
llvm-svn: 291354
|
|
|
|
|
|
| |
Allows us to correctly fall through to the lower AVX1 costs if look up failed.
llvm-svn: 291353
|
|
|
|
|
|
| |
order. NFCI.
llvm-svn: 291352
|
|
|
|
|
|
| |
v64i8 shuffles (PR31470)
llvm-svn: 291347
|
|
|
|
|
|
| |
Set the costs on the lowest target that supports the type.
llvm-svn: 291229
|
|
|
|
|
|
| |
Remove unnecessary braces, remove one use variables and keep LUTs to similar naming convention.
llvm-svn: 291187
|
|
|
|
| |
llvm-svn: 291165
|
|
|
|
| |
llvm-svn: 291163
|
|
|
|
|
|
| |
NFCI.
llvm-svn: 291162
|
|
|
|
|
|
| |
Removes need for yet another LUT.
llvm-svn: 291158
|
|
|
|
|
|
| |
Remove SSE2 256-bit entries - AVX targets will have used the SSE42 costs instead.
llvm-svn: 291152
|
|
|
|
|
|
|
|
| |
extract/insertion in AVX1 v4i64 MUL
Matches other MUL/ADD/SUB 256-bit case on AVX1
llvm-svn: 291149
|
|
|
|
|
|
| |
shuffle cost LUTs. NFCI.
llvm-svn: 291146
|
|
|
|
|
|
|
|
| |
Currently only for broadcasts with input and output of the same width.
Differential Revision: https://reviews.llvm.org/D27811
llvm-svn: 291122
|
|
|
|
| |
llvm-svn: 291109
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
stride seems to be 'complex' and need some extra cost for address computation handling.
This code seems to be target dependent which may not be the same for all targets.
Passed the decision whether the given stride is complex or not to the target by sending stride information via SCEV to getAddressComputationCost instead of 'IsComplex'.
Specifically at X86 targets we dont see any significant address computation cost in case of the strided access in general.
Differential Revision: https://reviews.llvm.org/D27518
llvm-svn: 291106
|
|
|
|
| |
llvm-svn: 291095
|
|
|
|
|
|
| |
Actual codegen is much better than the extract+insert patterns that was assumed.
llvm-svn: 290962
|