summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* [AVX512] Change the AddedComplexity on some patterns to match their AVX/SSE ↵Craig Topper2016-05-221-9/+13
| | | | | | equivalents. This helps group them close together in the isel tables and enable table compression. llvm-svn: 270354
* [AVX512] Add a couple patterns to fix some cases where two vector mask ↵Craig Topper2016-05-221-0/+11
| | | | | | inversions could appear in a row. llvm-svn: 270344
* [AVX512] Remove seemingly unnecessary AddedComplexity adjustment.Craig Topper2016-05-221-2/+0
| | | | llvm-svn: 270343
* [profile] Static counter allocation for value profiling (part-1)Xinliang David Li2016-05-211-12/+96
| | | | | | Differential Revision: http://reviews.llvm.org/D20459 llvm-svn: 270336
* [X86] Remove unnecessary alignment check on patterns that use VEXTRACTF128 ↵Craig Topper2016-05-211-8/+8
| | | | | | for integer types when only AVX1 is supported. llvm-svn: 270335
* [AVX512] Add patterns for extracting subvectors and storing to memory.Craig Topper2016-05-212-10/+15
| | | | llvm-svn: 270334
* [AVX512] Capitalize the Z in VEXTRACTPSzmr. Lowercase z has been primarily ↵Craig Topper2016-05-211-2/+2
| | | | | | used to indicating the zero masking behavior which is not the case here. NFC llvm-svn: 270333
* [AVX512] Rename vector extract instructions so 'mr' intead of 'rm' to ↵Craig Topper2016-05-211-2/+2
| | | | | | reflect the fact that memory is the destination. llvm-svn: 270332
* [AVX512] Fix copy/paste mistake a I made in a comment.Craig Topper2016-05-211-1/+1
| | | | llvm-svn: 270331
* Fix 80-column violation.Chad Rosier2016-05-211-1/+2
| | | | llvm-svn: 270329
* [LiveIntervalAnalysis] Don't dereference an end iterator in ↵Hal Finkel2016-05-211-1/+1
| | | | | | | | | | | | | | | | 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
* [Clang][AVX512][intrinsics] Fix rcp and sqrt intrinsics.Michael Zuckerman2016-05-214-7/+10
| | | | | | Differential Revision: http://reviews.llvm.org/D20438 llvm-svn: 270322
* [Clang][AVX512][intrinsics] Fix vscalef intrinsics.Michael Zuckerman2016-05-215-8/+11
| | | | | | Differential Revision: http://reviews.llvm.org/D20324 llvm-svn: 270321
* [AVX512] Add patterns for VEXTRACT v16i16->v8i16 and v32i8->v16i8. Disable ↵Craig Topper2016-05-212-1/+9
| | | | | | AVX2 versions of vector extract when AVX512VL is enabled. llvm-svn: 270318
* [AVX512] Disable AVX2 VPERMD, VPERMQ, VPERMPS, and VPERMPD patterns when ↵Craig Topper2016-05-212-30/+38
| | | | | | 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
* [AVX512] Disable AVX/AVX2 VBROADCASTSS/VBROADCASTSD patterns when AVX512VL ↵Craig Topper2016-05-211-4/+4
| | | | | | is enabled. llvm-svn: 270316
* [SimplifyCFG] Remove cleanuppads which are empty except for calls to ↵David Majnemer2016-05-211-5/+17
| | | | | | | | | | | | | 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
* AMDGPU: Define priorities for register classesMatt Arsenault2016-05-211-11/+31
| | | | | | | | | | 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
* [AVX512] Disable AVX/AVX2 patterns for VPSADBW and VPMULUDQ when the ↵Craig Topper2016-05-211-4/+4
| | | | | | AVX512VL/AVX512BWI equivalents are available. llvm-svn: 270311
* [X86] Convert some SSE2/AVX2 intrinsics to ISD opcodes during lowering ↵Craig Topper2016-05-212-12/+24
| | | | | | 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
* [IRCE] Don't use an allocator for range checks; NFCSanjoy Das2016-05-211-37/+28
| | | | | | | | 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
* [IRCE] Don't pass IRBuilder<> where unnecessary; NFCSanjoy Das2016-05-211-8/+6
| | | | llvm-svn: 270308
* AMDGPU: Cleanup lowering actionsMatt Arsenault2016-05-213-292/+248
| | | | | | | | 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
* [GuardWidening] Fix incorrect use of remove_ifSanjoy Das2016-05-211-25/+29
| | | | | | | | | | | 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
* AMDGPU: Fix high bits after division optimizationMatt Arsenault2016-05-211-17/+36
| | | | | | | This is essentially doing a 24-bit signed division with FP. We need to truncate to the N bit result. llvm-svn: 270305
* [RegBankSelect] Compute the repairing cost for copies.Quentin Colombet2016-05-211-15/+40
| | | | | | | 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
* [AVR] Add AVRMCAsmInfoDylan McKay2016-05-213-0/+60
| | | | llvm-svn: 270302
* AMDGPU: Fix verifier error when spilling SGPRsMatt Arsenault2016-05-211-0/+13
| | | | | | | | | | | 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
* AMDGPU: Fix relationship between SReg_32 and SReg_32_XM0Matt Arsenault2016-05-211-6/+5
| | | | llvm-svn: 270300
* Fix implicit type conversion. NFC.Chris Bieneman2016-05-211-1/+1
| | | | llvm-svn: 270299
* [AVR] Fix header files in MCTargetDescDylan McKay2016-05-216-4/+39
| | | | | | | Everything now compiles successfully, but there are still undefined references. llvm-svn: 270298
* AMDGPU: Handle cbranch vccz/vccnzMatt Arsenault2016-05-212-1/+21
| | | | llvm-svn: 270297
* AMDGPU: Implement ReverseBranchConditionMatt Arsenault2016-05-212-0/+10
| | | | llvm-svn: 270296
* AMDGPU: Implement AnalyzeBranchMatt Arsenault2016-05-212-1/+130
| | | | | | Original patch by Tom Stellard llvm-svn: 270295
* [WebAssembly] Optimize away return instructions using fallthroughs.Dan Gohman2016-05-216-10/+111
| | | | | | | | | 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
* Fix constant folding of addrspacecast of nullMatt Arsenault2016-05-211-1/+2
| | | | | | | This should not be making assumptions on the value of the casted pointer. llvm-svn: 270293
* [AVR] Fix signuature of AVRTargetMachine constructorDylan McKay2016-05-202-4/+7
| | | | llvm-svn: 270292
* LiveIntervalAnalysis: Rework constructMainRangeFromSubranges()Matthias Braun2016-05-204-246/+40
| | | | | | | | | | | | | | | | | | | | | 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
* MachineVerifier: subregs so not require defs/valnos on every pathMatthias Braun2016-05-201-2/+3
| | | | | | | | | | | 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
* Fix struct member names and simplify. NFC.Rui Ueyama2016-05-201-6/+4
| | | | llvm-svn: 270289
* SDAG: Implement Select instead of SelectImpl in PPCDAGToDAGISelJustin Bogner2016-05-201-151/+209
| | | | | | | | | | | - Where we were returning a node before, call ReplaceNode instead. - Where we would return null to fall back to another selector, rename the method to try* and return a bool for success. - Where we were calling SelectNodeTo, just return afterwards. Part of llvm.org/pr26808. llvm-svn: 270283
* [lanai] Change reloc to use PIC_ by default and cleanup.Jacques Pienaar2016-05-206-15/+20
| | | | | | | * Change reloc to PIC_; * Cleanup (clang-format & modify test); llvm-svn: 270282
* Switch from the linux-specific 'struct sigaltstack' to POSIX's 'stack_t'. ThisRichard Smith2016-05-201-2/+2
| | | | | | is what I get for trusting my system's man pages I suppose. llvm-svn: 270280
* Add a configure-time check for the existence of sigaltstack. It seems that someRichard Smith2016-05-201-2/+4
| | | | | | systems provide a <signal.h> that doesn't declare it. llvm-svn: 270278
* Reinstate r269992 (reverting r270267), but restricted to cases where glibc isRichard Smith2016-05-201-4/+59
| | | | | | | | | the C standard library implementation in use. This works around a glibc bug in the backtrace() function where it fails to produce a backtrace on x86_64 if libgcc / libunwind is statically linked. llvm-svn: 270276
* Create a sigaltstack when we register our signal handlers. Otherwise we'd veryRichard Smith2016-05-201-0/+31
| | | | | | likely fail to produce a backtrace if we crash due to stack overflow. llvm-svn: 270273
* Revert r270268 due to unused variable warnings.Michael Kuperstein2016-05-201-12/+17
| | | | llvm-svn: 270272
* Address post-review for r270246David Majnemer2016-05-201-11/+13
| | | | | | | | | This gets rid of some unnecessary SmallStrings in X86TargetMachine::getSubtargetImpl. No functionality change is intended. llvm-svn: 270270
* [BasicAA] Turn DecomposeGEPExpression runtime checks into asserts.Michael Kuperstein2016-05-201-17/+12
| | | | | | | | When it has a DataLayout, DecomposeGEPExpression() should return the same object as GetUnderlyingObject(). Per the FIXME, it currently always has a DL, so the runtime check is redundant and can become an assert. llvm-svn: 270268
* Revert "Work around a glibc bug: backtrace() spuriously fails if..."Chris Bieneman2016-05-201-51/+4
| | | | | | | | | This commit has been breaking the FreeBSD bots: http://lab.llvm.org:8011/builders/lld-x86_64-freebsd This reverts commit r269992. llvm-svn: 270267
OpenPOWER on IntegriCloud