| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 270338
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20460
llvm-svn: 270337
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
Ensure _mm256_extract_epi8 and _mm256_extract_epi16 zero extend their i8/i16 result to i32. This matches _mm_extract_epi8 and _mm_extract_epi16.
Fix for PR27594
Differential Revision: http://reviews.llvm.org/D20468
llvm-svn: 270330
|
|
|
|
| |
llvm-svn: 270329
|
|
|
|
|
|
| |
non-alloc input section
llvm-svn: 270328
|
|
|
|
|
|
|
|
| |
This fixes a potential bug when cross linking very large executables
on LLP64 machines such as Windows. On such platform, uintX_t is 64 bits
while unsigned is 32 bits.
llvm-svn: 270327
|
|
|
|
| |
llvm-svn: 270326
|
|
|
|
| |
llvm-svn: 270325
|
|
|
|
|
|
|
|
| |
Most functions take destination buffers as the first arguments
just like memcpy, so this order is easier to read.
Also simplified the function.
llvm-svn: 270324
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Main problem here was that SHF_COMPRESSED has the same value with
XCORE_SHF_CP_SECTION, which was included as standart (common) flag.
As far I understand xCore is a family of controllers and it that
means it's constant should be processed separately,
only if e_machine == EM_XCORE, otherwise llvm-readobj would output
different constants twice for compressed section:
Flags [
..
SHF_COMPRESSED (0x800)
..
XCORE_SHF_CP_SECTION (0x800)
..
]
what probably does not make sence if you're not working with xcore file.
Differential revision: http://reviews.llvm.org/D20273
llvm-svn: 270320
|
|
|
|
|
|
|
|
| |
In one of the already existing apps that I'm testing TSan on, I really see a mutex path that is longer than 10 (but not by much, something like 11-13 actually). Let's raise this to 20 and weaken the assertion so we don't crash.
Differential Revision: http://reviews.llvm.org/D20427
llvm-svn: 270319
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
the instruction encodings and ensure everything is with EVEX.
llvm-svn: 270315
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 270313
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
The InductiveRangeCheck struct is only five words long; so passing these
around value is fine. The allocator makes the code look more complex
than it is.
llvm-svn: 270309
|
|
|
|
| |
llvm-svn: 270308
|
|
|
|
|
|
|
|
| |
These are kind of a mess and hard to follow, particularly
for loads and stores. Fix various redundant, unnecessary
and dead settings.
llvm-svn: 270307
|
|
|
|
|
|
|
|
|
|
|
| |
I had used `std::remove_if` under the assumption that it moves the
predicate matching elements to the end, but actaully the elements
remaining towards the end (after the iterator returned by
`std::remove_if`) are indeterminate. Fix the bug (and make the code
more straightforward) by using a temporary SmallVector, and add a test
case demonstrating the issue.
llvm-svn: 270306
|
|
|
|
|
|
|
| |
This is essentially doing a 24-bit signed division with FP.
We need to truncate to the N bit result.
llvm-svn: 270305
|
|
|
|
|
|
|
| |
Prior to this patch, we were using 1 for all the repairing costs.
Now, we use the information from the target to get this information.
llvm-svn: 270304
|
|
|
|
|
|
| |
Prior to this patch we could have read uninitialized memory.
llvm-svn: 270303
|
|
|
|
| |
llvm-svn: 270302
|
|
|
|
|
|
|
|
|
|
|
| |
The current SGPR spilling test does not stress this
because it is using s_buffer_load instructions to
increase SGPR pressure and spill, but their output
operands have the same SReg_32_XM0 constraint. This fixes
an error when the SReg_32 output from most instructions
is spilled.
llvm-svn: 270301
|
|
|
|
| |
llvm-svn: 270300
|
|
|
|
| |
llvm-svn: 270299
|
|
|
|
|
|
|
| |
Everything now compiles successfully, but there are still undefined
references.
llvm-svn: 270298
|
|
|
|
| |
llvm-svn: 270297
|
|
|
|
| |
llvm-svn: 270296
|
|
|
|
|
|
| |
Original patch by Tom Stellard
llvm-svn: 270295
|
|
|
|
|
|
|
|
|
| |
This saves a small amount of code size, and is a first small step toward
passing values on the stack across block boundaries.
Differential Review: http://reviews.llvm.org/D20450
llvm-svn: 270294
|
|
|
|
|
|
|
| |
This should not be making assumptions on the value of
the casted pointer.
llvm-svn: 270293
|
|
|
|
| |
llvm-svn: 270292
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We now use LiveRangeCalc::extendToUses() instead of a specially designed
algorithm in constructMainRangeFromSubranges():
- The original motivation for constructMainRangeFromSubranges() were
differences between the main liverange and subranges because of hidden
dead definitions. This case however cannot happen anymore with the
DetectDeadLaneMasks pass in place.
- It simplifies the code.
- This fixes a longstanding bug where we did not properly create new SSA
values on merging control flow (the MachineVerifier missed most of
these cases).
- Move constructMainRangeFromSubranges() to LiveIntervalAnalysis and
LiveRangeCalc to better match the implementation/available helper
functions.
This re-applies r269016. The fixes from r270290 and r270259 should avoid
the machine verifier problems this time.
llvm-svn: 270291
|
|
|
|
|
|
|
|
|
|
|
| |
It is fine for subregister ranges to be undefined on some CFG paths as
we may have a "vregX:other_subreg<read-undef> =" def on that path. We
do not (and should not) have live segments for the subregister ranges.
The MachineVerifier should not complain about this.
This is a slight variant of http://llvm.org/PR27705
llvm-svn: 270290
|
|
|
|
| |
llvm-svn: 270289
|