summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert some parts of r196288 that were confusing and untested.David Blaikie2014-10-141-8/+2
| | | | | | | If we figure out why they should be here, let's add some testing of some kind so we can better demonstrate why it's needed. llvm-svn: 219694
* Fix stuff... again.David Blaikie2014-10-142-2/+35
| | | | llvm-svn: 219693
* [LVI] Check for @llvm.assume dominating the edge branchHal Finkel2014-10-142-0/+41
| | | | | | | | | | | | | When LazyValueInfo uses @llvm.assume intrinsics to provide edge-value constraints, we should check for intrinsics that dominate the edge's branch, not just any potential context instructions. An assumption that dominates the edge's branch represents a truth on that edge. This is specifically useful, for example, if multiple predecessors assume a pointer to be nonnull, allowing us to simplify a later null comparison. The test case, and an initial patch, were provided by Philip Reames. Thanks! llvm-svn: 219688
* Revert r219638, (r219640 and r219676), "Removing the static destructor from ↵NAKAMURA Takumi2014-10-142-48/+6
| | | | | | | | ManagedStatic.cpp by controlling the allocation and de-allocation of the mutex." It caused hang-up on msc17 builder, probably deadlock. llvm-svn: 219687
* [AVX512] Extended avx512_binop_rm to DQ/VL subsets.Robert Khasanov2014-10-143-1/+172
| | | | | | Added encoding tests. llvm-svn: 219686
* [AVX512] Extended avx512_binop_rm to BW/VL subsets.Robert Khasanov2014-10-143-69/+1531
| | | | | | Added encoding tests. llvm-svn: 219685
* [AArch64] Fix crash with empty/pseudo-only blocks in A53 erratum (835769) ↵Bradley Smith2014-10-142-15/+35
| | | | | | workaround llvm-svn: 219684
* [llvm-symbolizer] Minor typedef cleanup. NFC.Alexander Potapenko2014-10-142-23/+20
| | | | llvm-svn: 219682
* Threading.h: Use \tparam for template parameters. [-Wdocumentation]NAKAMURA Takumi2014-10-141-1/+1
| | | | llvm-svn: 219676
* Grab the subtarget info off of the MachineFunction rather thanEric Christopher2014-10-141-1/+1
| | | | | | indirecting through the TargetMachine. llvm-svn: 219674
* Use the triple to figure out if this is a darwin target, notEric Christopher2014-10-141-1/+1
| | | | | | the subtarget. llvm-svn: 219673
* Remove unnecessary TargetMachine.h includes.Eric Christopher2014-10-1425-26/+1
| | | | llvm-svn: 219672
* Grab the subtarget and subtarget dependent variables off ofEric Christopher2014-10-144-21/+10
| | | | | | MachineFunction rather than TargetMachine. llvm-svn: 219671
* Grab the subtarget and subtarget dependent variables off ofEric Christopher2014-10-142-9/+6
| | | | | | MachineFunction rather than TargetMachine. llvm-svn: 219670
* Instead of the TargetMachine cache the MachineFunctionEric Christopher2014-10-141-14/+13
| | | | | | | | and TargetRegisterInfo in the peephole optimizer. This makes it easier to grab subtarget dependent variables off of the MachineFunction rather than the TargetMachine. llvm-svn: 219669
* Access subtarget specific variables off of the MachineFunction'sEric Christopher2014-10-142-6/+4
| | | | | | cached subtarget and not the TargetMachine. llvm-svn: 219668
* Add lld to the parallel set of directories since it doesn't dependEric Christopher2014-10-141-1/+2
| | | | | | on any of the other tools directories. llvm-svn: 219667
* Access the subtarget off of the MachineFunction via the DAGEric Christopher2014-10-141-9/+7
| | | | | | | | scheduler or via the SelectionDAG if available. Otherwise grab the subtarget off of the MachineFunction by going up the parent chain. llvm-svn: 219666
* [AArch64]Select wide immediate offset into [Base+XReg] addressing modeHao Liu2014-10-144-20/+175
| | | | | | | | | | | | | | | e.g Currently we'll generate following instructions if the immediate is too wide: MOV X0, WideImmediate ADD X1, BaseReg, X0 LDR X2, [X1, 0] Using [Base+XReg] addressing mode can save one ADD as following: MOV X0, WideImmediate LDR X2, [BaseReg, X0] Differential Revision: http://reviews.llvm.org/D5477 llvm-svn: 219665
* Remove the use and member variable of the TargetMachine fromEric Christopher2014-10-141-6/+4
| | | | | | MachineLICM as we can get the same data off of the MachineFunction. llvm-svn: 219663
* Have MachineInstrBundle use the MachineFunction for subtargetEric Christopher2014-10-141-5/+5
| | | | | | access rather than the TargetMachine. llvm-svn: 219662
* Access the subtarget off of the MachineFunction rather thanEric Christopher2014-10-142-5/+2
| | | | | | through the TargetMachine. llvm-svn: 219661
* Switch to select optimization for two-case switchesMarcello Maggioni2014-10-145-3/+289
| | | | | | | This is the same optimization of r219233 with modifications to support PHIs with multiple incoming edges from the same block and a test to check that this condition is handled. llvm-svn: 219656
* Don't include DFAPacketizer in TargetInstrInfo, there's no reason.Eric Christopher2014-10-141-1/+1
| | | | llvm-svn: 219653
* Include map into the A15SDOptimizer rather than pick it upEric Christopher2014-10-141-0/+1
| | | | | | transitively from the DFAPacketizer via TargetInstrInfo.h. llvm-svn: 219652
* Remove the TargetMachine from DFAPacketizer since it was onlyEric Christopher2014-10-143-7/+6
| | | | | | | being used to grab subtarget specific things that we can grab from the MachineFunction anyhow. llvm-svn: 219650
* Introduce Go coding standards for LLVM.Peter Collingbourne2014-10-141-0/+19
| | | | | | | | | Rather than define our own standards, we adopt a set of best practices that are already in use by the Go community. Differential Revision: http://reviews.llvm.org/D5761 llvm-svn: 219646
* fix formatting; NFCSanjay Patel2014-10-141-33/+25
| | | | llvm-svn: 219645
* Add some optional passes around the vectorizer to both better prepareChandler Carruth2014-10-141-1/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the IR going into it and to clean up the IR produced by the vectorizers. Note that these are *off by default* right now while folks collect data on whether the performance tradeoff is reasonable. In a build of the 'opt' binary, I see about 2% compile time regression due to this change on average. This is in my mind essentially the worst expected case: very little of the opt binary is going to *benefit* from these extra passes. I've seen several benchmarks improve in performance my small amounts due to running these passes, and there are certain (rare) cases where these passes make a huge difference by either enabling the vectorizer at all or by hoisting runtime checks out of the outer loop. My primary motivation is to prevent people from seeing runtime check overhead in benchmarks where the existing passes and optimizers would be able to eliminate that. I've chosen the sequence of passes based on the kinds of things that seem likely to be relevant for the code at each stage: rotaing loops for the vectorizer, finding correlated values, loop invariants, and unswitching opportunities from any runtime checks, and cleaning up commonalities exposed by the SLP vectorizer. I'll be pinging existing threads where some of these issues have come up and will start new threads to get folks to benchmark and collect data on whether this is the right tradeoff or we should do something else. llvm-svn: 219644
* Introduce LLVMWriteBitcodeToMemoryBuffer C API function.Peter Collingbourne2014-10-142-0/+11
| | | | llvm-svn: 219643
* Updating documentation as per Chandler's feedback.Chris Bieneman2014-10-131-2/+15
| | | | | | | | | | | | | | | | This goes with the earlier commit to remove the static destructor from ManagedStatic.cpp by controlling the allocation and de-allocation of the mutex. Summary: This is part of the ongoing work to remove static constructors and destructors. Reviewers: chandlerc, rnk Reviewed By: rnk Subscribers: rnk, llvm-commits Differential Revision: http://reviews.llvm.org/D5473 llvm-svn: 219640
* InstCombine: Fix miscompile in X % -Y -> X % Y transformDavid Majnemer2014-10-133-14/+9
| | | | | | | | | | | We assumed that negation operations of the form (0 - %Z) resulted in a negative number. This isn't true if %Z was originally negative. Substituting the negative number into the remainder operation may result in undefined behavior because the dividend might be INT_MIN. This fixes PR21256. llvm-svn: 219639
* Removing the static destructor from ManagedStatic.cpp by controlling the ↵Chris Bieneman2014-10-132-6/+35
| | | | | | | | allocation and de-allocation of the mutex. This patch adds a new llvm_call_once function which is used by the ManagedStatic implementation to safely initialize a global to avoid static construction and destruction. llvm-svn: 219638
* Migrate another set of getSubtargetImpl away.Eric Christopher2014-10-131-2/+2
| | | | llvm-svn: 219636
* Remove unused debug info constants.Peter Collingbourne2014-10-131-16/+0
| | | | | | | | These became unused in r219010. Differential Revision: http://reviews.llvm.org/D5760 llvm-svn: 219635
* InstCombine: Don't miscompile (x lshr C1) udiv C2David Majnemer2014-10-134-13/+40
| | | | | | | | | | | | | We have a transform that changes: (x lshr C1) udiv C2 into: x udiv (C2 << C1) However, it is unsafe to do so if C2 << C1 discards any of C2's bits. This fixes PR21255. llvm-svn: 219634
* Make first of several changes to bring up to AArch64 fast-isel styleReed Kotler2014-10-131-179/+204
| | | | | | | | | | | | | | | | | | | | | | | Summary: Make Mips fast-isel track the form of AArch64 where practical. This makes it easier for people to review the code, to borrow similar code, and to see how to eventually move a lot of this target code for fast-isels into target independent code. These are just cosmetic changes. Should be no functional difference. Test Plan: make check test-suite for 4 flavors mips32 r1/r2 , -O0/-O2 Reviewers: dsanders Reviewed By: dsanders Subscribers: aemerson, llvm-commits, rfuhler Differential Revision: http://reviews.llvm.org/D5595 llvm-svn: 219633
* Update the example of using a command-line option custom parser toPaul Robinson2014-10-131-5/+5
| | | | | | | | match the current implementation. Patch by Douglas Yung! llvm-svn: 219631
* Add an assertion about the integrity of the iterator.Adrian Prantl2014-10-131-0/+5
| | | | | | | | | Broken parent scope pointers in inlined DIVariables can cause ensureAbstractVariableIsCreated to insert new abstract scopes, thus invalidating the iterator in this loop and leading to hard-to-debug crashes. Useful when manually reducing IR for testcases. llvm-svn: 219628
* constify the getters in SDNodeDbgValue.Adrian Prantl2014-10-131-12/+12
| | | | llvm-svn: 219627
* Refactor debug statement and remove dead argument. NFC.Chad Rosier2014-10-132-18/+13
| | | | llvm-svn: 219626
* Add VS2012-generated test inputs for ↵Timur Iskhodzhanov2014-10-136-4/+14
| | | | | | test/tools/llvm-readobj/codeview-linetables.test llvm-svn: 219621
* Fix a broadcast related regression on the vector shuffle lowering.Filipe Cabecinhas2014-10-133-3/+87
| | | | | | | | | | | | Summary: Test by Robert Lougher! Reviewers: chandlerc Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5745 llvm-svn: 219617
* R600/SI: Minor cleanup of functionMatt Arsenault2014-10-131-9/+11
| | | | llvm-svn: 219616
* [asan-asm-instrumentation] Follow-up fixes to r219602: asserts are moved intoYuri Gorshenin2014-10-131-8/+8
| | | | | | function. llvm-svn: 219610
* Adds support for the Cortex-A17 to the ARM backendRenato Golin2014-10-133-1/+48
| | | | | | Patch by Matthew Wahab. llvm-svn: 219606
* [mips] Mark redundant instructions with a comment in ↵Daniel Sanders2014-10-131-2/+9
| | | | | | test/CodeGen/Mips/Fast-ISel/icmpa.ll. llvm-svn: 219605
* [AArch64] Add workaround for Cortex-A53 erratum (835769)Bradley Smith2014-10-135-0/+763
| | | | | | | | | | | | | | | | | | | | Some early revisions of the Cortex-A53 have an erratum (835769) whereby it is possible for a 64-bit multiply-accumulate instruction in AArch64 state to generate an incorrect result. The details are quite complex and hard to determine statically, since branches in the code may exist in some circumstances, but all cases end with a memory (load, store, or prefetch) instruction followed immediately by the multiply-accumulate operation. The safest work-around for this issue is to make the compiler avoid emitting multiply-accumulate instructions immediately after memory instructions and the simplest way to do this is to insert a NOP. This patch implements such work-around in the backend, enabled via the option -aarch64-fix-cortex-a53-835769. The work-around code generation is not enabled by default. llvm-svn: 219603
* [asan-asm-instrumentation] Fixed memory references which includes %rsp as a ↵Yuri Gorshenin2014-10-132-111/+207
| | | | | | | | | | | | | | base or an index register. Summary: [asan-asm-instrumentation] Fixed memory references which includes %rsp as a base or an index register. Reviewers: eugenis Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5599 llvm-svn: 219602
* Unix/Signals.inc: Let findModulesAndOffsets() built conditionally regarding ↵NAKAMURA Takumi2014-10-131-2/+3
| | | | | | to (defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES)). [-Wunused-function] llvm-svn: 219596
OpenPOWER on IntegriCloud