| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
When an aggregate contains an opaque type its size cannot be
determined. This triggers an "Invalid GetElementPtrInst indices for type" assert
in function checkGEPType. The fix suppresses the conversion in this case.
http://reviews.llvm.org/D20319
llvm-svn: 270479
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch turns on LoopUnrollAnalyzer by default. To mitigate compile
time regressions, I chose very conservative thresholds for now. Later we
can make them more aggressive, but it might require being smarter in
which loops we're optimizing. E.g. currently the biggest issue is that
with more agressive thresholds we unroll many cold loops, which
increases compile time for no performance benefit (performance of those
loops is improved, but it doesn't matter since they are cold).
Test results for compile time(using 4 samples to reduce noise):
```
MultiSource/Benchmarks/VersaBench/ecbdes/ecbdes 5.19%
SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect 4.19%
MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow 3.39%
MultiSource/Applications/JM/lencod/lencod 1.47%
MultiSource/Benchmarks/Fhourstones-3_1/fhourstones3_1 -6.06%
```
I didn't see any performance changes in the testsuite, but it improves
some internal tests.
Reviewers: hfinkel, chandlerc
Subscribers: llvm-commits, mzolotukhin
Differential Revision: http://reviews.llvm.org/D20482
llvm-svn: 270478
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
MBBs don't necessarily have a name (in my experience, they almost never
do), in which case this logging is quite unhelpful. The number seems to
work well.
Reviewers: iteratee
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20533
llvm-svn: 270477
|
| |
|
|
|
|
|
|
|
|
|
| |
This will pave the way to introduce a full fledged symbol visitor
similar to how we have a type visitor, thus allowing the same
dumping code to be used in llvm-readobj and llvm-pdbdump.
Differential Revision: http://reviews.llvm.org/D20384
Reviewed By: rnk
llvm-svn: 270475
|
| |
|
|
| |
llvm-svn: 270469
|
| |
|
|
| |
llvm-svn: 270467
|
| |
|
|
| |
llvm-svn: 270465
|
| |
|
|
|
|
|
|
| |
Use the more specific LiveInterval::removeSegment instead of
LiveInterval::shrinkToUses when we know the specific range that's
being removed.
llvm-svn: 270463
|
| |
|
|
| |
llvm-svn: 270459
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This needs to get in before anything is released concerning attribute. If the old name gets in the wild, then we are stuck with it forever. Putting it in its own diff should getting that part at least in fast.
Reviewers: Wallbraker, whitequark, joker.eph, echristo, rafael, jyknight
Subscribers: llvm-commits, joker.eph
Differential Revision: http://reviews.llvm.org/D20417
llvm-svn: 270452
|
| |
|
|
| |
llvm-svn: 270444
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The exit-on-error flag on the many_args1.ll test is needed to avoid an
unreachable in BPFTargetLowering::LowerCall. We can also avoid it by ignoring
any superfluous arguments to the call (i.e. any arguments after the first 5).
Fixes PR27766.
Differential Revision: http://reviews.llvm.org/D20471
v2 of r270419
llvm-svn: 270440
|
| |
|
|
|
|
|
| |
Don't create unnecessary std::string objects when pushing back to |pCodes|.
NFC.
llvm-svn: 270436
|
| |
|
|
|
|
|
|
| |
This patch reverts r270419 because it broke a lot of buildbots,
mostly Windows. We'd like help in investigating the issues, but
for now, it should stay out.
llvm-svn: 270433
|
| |
|
|
|
|
|
|
|
|
| |
The exit-on-error flag on the many_args1.ll test is needed to avoid an
unreachable in BPFTargetLowering::LowerCall. We can also avoid it by ignoring
any superfluous arguments to the call (i.e. any arguments after the first 5).
Fixes PR27766
llvm-svn: 270419
|
| |
|
|
|
|
| |
This code should have been with the previous check-in (r270417) and prevents the DelaySlotFiller pass being utilized in functions where the erratum fix has been applied as this will break the run-time code.
llvm-svn: 270418
|
| |
|
|
|
|
|
|
|
|
| |
Due to an erratum in some versions of LEON, we must insert a NOP after any LD or LDF instruction to ensure the processor has time to load the value correctly before using it. This pass will implement that erratum fix.
The code will have no effect for other Sparc, but non-LEON processors.
Differential Review: http://reviews.llvm.org/D20353
llvm-svn: 270417
|
| |
|
|
|
|
|
|
|
|
|
|
| |
modifiers for imms.
Reviewers: nhaustov, tstellarAMD
Subscribers: kzhuravl, arsenm
Differential Revision: http://reviews.llvm.org/D20166
llvm-svn: 270415
|
| |
|
|
| |
llvm-svn: 270414
|
| |
|
|
|
|
|
| |
backtraces from the signal handler on stack overflow now work reliably (on my
system at least...).
llvm-svn: 270395
|
| |
|
|
|
|
| |
optimizing moves to use 2 byte VEX prefix.
llvm-svn: 270394
|
| |
|
|
|
|
|
| |
This reverts commit r270106. It results in certain function types
omitted in the output.
llvm-svn: 270389
|
| |
|
|
|
|
|
|
| |
subvectors using XMM or YMM stores instead of the vector extract instructions.
Similar is already done for AVX and we had lost it going to AVX512VL.
llvm-svn: 270383
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(PR27823)
This isn't the complete fix, but it handles the trivial examples of duplicate vzero* ops in PR27823:
https://llvm.org/bugs/show_bug.cgi?id=27823
...and amusingly, the bogus cases already exist as regression tests, so let's take this baby step.
We'll need to do more in the general case where there's legitimate AVX usage in the function + there's
already a vzero in the code.
Differential Revision: http://reviews.llvm.org/D20477
llvm-svn: 270378
|
| |
|
|
| |
llvm-svn: 270372
|
| |
|
|
| |
llvm-svn: 270370
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
vector splat constants
We could try harder to handle non-splat vector constants too,
but that seems much rarer to me.
Note that the div test isn't resolved because there's a check
for isIntegerTy() guarding that transform.
Differential Revision: http://reviews.llvm.org/D20497
llvm-svn: 270369
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20513
llvm-svn: 270357
|
| |
|
|
|
|
| |
the source is 512-bits. The 256-bit source patterns were redundant with AVX.
llvm-svn: 270356
|
| |
|
|
|
|
| |
index 0 patterns. This gives them higher priority than the memory patterns. This matches AVX1/2.
llvm-svn: 270355
|
| |
|
|
|
|
| |
equivalents. This helps group them close together in the isel tables and enable table compression.
llvm-svn: 270354
|
| |
|
|
|
|
| |
inversions could appear in a row.
llvm-svn: 270344
|
| |
|
|
| |
llvm-svn: 270343
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20459
llvm-svn: 270336
|
| |
|
|
|
|
| |
for integer types when only AVX1 is supported.
llvm-svn: 270335
|
| |
|
|
| |
llvm-svn: 270334
|
| |
|
|
|
|
| |
used to indicating the zero masking behavior which is not the case here. NFC
llvm-svn: 270333
|
| |
|
|
|
|
| |
reflect the fact that memory is the destination.
llvm-svn: 270332
|
| |
|
|
| |
llvm-svn: 270331
|
| |
|
|
| |
llvm-svn: 270329
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
repairIntervalsInRange
This fixes a bug introduced in:
r262115 - CodeGen: Take MachineInstr& in SlotIndexes and LiveIntervals, NFC
The iterator End here might == MBB->end(), and so we can't unconditionally
dereference it. This often goes unnoticed (I don't have a test case that always
crashes, and ASAN does not catch it either) because the function call arguments are
turned right back into iterators. MachineInstrBundleIterator's constructor,
however, does have an assert which might randomly fire.
llvm-svn: 270323
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20438
llvm-svn: 270322
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20324
llvm-svn: 270321
|
| |
|
|
|
|
| |
AVX2 versions of vector extract when AVX512VL is enabled.
llvm-svn: 270318
|
| |
|
|
|
|
| |
AVX512VL is enabled. Also add shuffle comment printing for AVX512VL VPERMPD/VPERMQ to keep some tests that now use these instructions instead of the AVX2 ones.
llvm-svn: 270317
|
| |
|
|
|
|
| |
is enabled.
llvm-svn: 270316
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
lifetime.end
A cleanuppad is not cheap, they turn into many instructions and result
in additional spills and fills. It is not worth keeping a cleanuppad
around if all it does is hold a lifetime.end instruction.
N.B. We first try to merge the cleanuppad with another cleanuppad to
avoid dropping the lifetime and debug info markers.
llvm-svn: 270314
|
| |
|
|
|
|
|
|
|
|
| |
Allocating larger register classes first should give better allocation
results (and more importantly for myself, make the lit tests more stable
with respect to scheduler changes).
Patch by Matthias Braun
llvm-svn: 270312
|
| |
|
|
|
|
| |
AVX512VL/AVX512BWI equivalents are available.
llvm-svn: 270311
|
| |
|
|
|
|
| |
instead of pattern matching the intrinsics. This unifies handling with AVX512 and allows these intrinsics to select EVEX encoded instructions to increase available registers.
llvm-svn: 270310
|