summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* [XCore] Add TSETR instruction.Richard Osborne2013-02-173-1/+34
| | | | | | | This instruction is not targeted by the compiler but it is needed for the MC layer. llvm-svn: 175406
* [XCore] Add missing u10 / lu10 instructions.Richard Osborne2013-02-171-1/+12
| | | | | | | These instructions are not targeted by the compiler but they are needed for the MC layer. llvm-svn: 175404
* [XCore] Add missing u6 / lu6 instructions.Richard Osborne2013-02-171-2/+18
| | | | | | | These instructions are not targeted by the compiler but they are needed for the MC layer. llvm-svn: 175403
* Return false instead of 0.Jakub Staszak2013-02-171-1/+1
| | | | llvm-svn: 175402
* AArch64: Avoid shifts by 64, that's undefined behavior.Benjamin Kramer2013-02-171-3/+3
| | | | | | No functionality change. llvm-svn: 175400
* Add multithreading functions and shutdown to the C API. Patch by MoritzDuncan Sands2013-02-171-0/+20
| | | | | | Maxeiner. llvm-svn: 175398
* BBVectorize: Fix an invalid reference bugHal Finkel2013-02-171-4/+7
| | | | | | | | | | | | | | This fixes PR15289. This bug was introduced (recently) in r175215; collecting all std::vector references for candidate pairs to delete at once is invalid because subsequent lookups in the owning DenseMap could invalidate the references. bugpoint was able to reduce a useful test case. Unfortunately, because whether or not this asserts depends on memory layout, this test case will sometimes appear to produce valid output. Nevertheless, running under valgrind will reveal the error. llvm-svn: 175397
* Make the visibility of LLVMPPCCompilationCallback work with GCC.Benjamin Kramer2013-02-171-1/+1
| | | | | | | | | | | | GCC warns about the attribute being ignored if it occurs after void*. There seems to be some kind of incompatibility between clang and gcc here, but I can't fathom who's right. void* LLVM_LIBRARY_VISIBILITY foo(); // clang: hidden, gcc: default LLVM_LIBRARY_VISIBILITY void *bar(); // clang: hidden, gcc: hidden void LLVM_LIBRARY_VISIBILITY qux(); // clang: hidden, gcc: hidden llvm-svn: 175394
* Remove use of reverse iterators in repairIntervalsInRange(). While they wereCameron Zwarich2013-02-172-16/+13
| | | | | | | arguably better than forward iterators for this use case, they are confusing and there are some implementation problems with reverse iterators and MI bundles. llvm-svn: 175393
* Use ArrayRef instead of a reference to a SmallVectorImpl.Cameron Zwarich2013-02-171-1/+1
| | | | llvm-svn: 175385
* Fix a conversion from a forward iterator to a reverse iterator inCameron Zwarich2013-02-171-6/+7
| | | | | | | | | | | MachineBasicBlock::SplitCriticalEdge. Since this is an iterator rather than an instr_iterator, the isBundled() check only passes if getFirstTerminator() returned end() and the garbage memory happens to lean that way. Multiple successors can be present without any terminator instructions in the case of exception handling with a fallthrough. llvm-svn: 175383
* Add support for updating the LiveIntervals of registers used by 'exotic'Cameron Zwarich2013-02-172-0/+65
| | | | | | | | | | | | terminators that actually have register uses when splitting critical edges. This commit also introduces a method repairIntervalsInRange() on LiveIntervals, which allows for repairing LiveIntervals in a small range after an arbitrary target hook modifies, inserts, and removes instructions. It's pretty limited right now, but I hope to extend it to support all of the things that are done by the convertToThreeAddress() target hooks. llvm-svn: 175382
* The transform is:Bill Wendling2013-02-161-0/+14
| | | | | | | | | | | | | | | (or (bool?A:B),(bool?C:D)) --> (bool?(or A,C):(or B,D)) By the time the OR is visited, both the SELECTs have been visited and not optimized and the OR itself hasn't been transformed so we do this transform in the hopes that the new ORs will be optimized. The transform is explicitly disabled for vector-selects until "codegen matures to handle them better". Patch by Muhammad Tauqir! llvm-svn: 175380
* Clean up mips16 td file in preparation for massive pseudo lowering work.Reed Kotler2013-02-161-71/+68
| | | | llvm-svn: 175379
* GCC doesn't like ++ on enums.Benjamin Kramer2013-02-161-1/+1
| | | | llvm-svn: 175373
* TypoRenato Golin2013-02-161-1/+1
| | | | llvm-svn: 175371
* Turn the enum attributes DenseSet in AttrBuilder into a set of bits.Benjamin Kramer2013-02-161-24/+23
| | | | | | | | Avoids malloc and is a lot denser. We lose iteration over target independent attributes, but that's a strange interface anyways and didn't have any users outside of AttrBuilder. llvm-svn: 175370
* One more try to make this look nice. I have lots of pseudo lowering Reed Kotler2013-02-162-4/+12
| | | | | | | | as well as 16/32 bit variants to do and so I want this to look nice when I do it. I've been experimenting with this. No new test cases are needed. llvm-svn: 175369
* Replace erase loop with std::remove_if.Benjamin Kramer2013-02-161-6/+5
| | | | | | This avoids unnecessary copies. No functionality change. llvm-svn: 175367
* Replace loop with std::find.Benjamin Kramer2013-02-161-10/+4
| | | | | | No functionality change. llvm-svn: 175366
* LegalizeDAG.cpp doesn't need DenseMap.Jakub Staszak2013-02-161-1/+0
| | | | llvm-svn: 175365
* Reduce indents in LSRInstance::NarrowSearchSpaceByCollapsingUnrolledCode method.Jakub Staszak2013-02-161-67/+67
| | | | | | No functionality change. llvm-svn: 175364
* [msvc x64] Update X86CompilationCallback_Win64.asm corresponding to r175267.NAKAMURA Takumi2013-02-161-2/+2
| | | | llvm-svn: 175363
* Use const reference instead of vector object when passing an argument toJakub Staszak2013-02-161-1/+1
| | | | | | updateScheduledPressure method. llvm-svn: 175362
* Target/R600/CMakeLists.txt: Prune SILowerLiteralConstants.cpp corresponding ↵NAKAMURA Takumi2013-02-161-1/+0
| | | | | | to r175354. llvm-svn: 175361
* MCParser: Reject .balign with non-pow2 alignments.Benjamin Kramer2013-02-161-0/+4
| | | | | | | | GNU as rejects them and there are configure scripts in the wild that check if the assembler rejects ".align 3" to determine whether the alignment is in bytes or powers of two. llvm-svn: 175360
* Minor cleanups. No functionality change.Jakub Staszak2013-02-161-9/+8
| | | | llvm-svn: 175359
* R600/SI: Add pattern to simplify i64 loadingChristian Konig2013-02-162-0/+9
| | | | | | | | This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175356
* R600/SI: nuke SReg_1 v3Christian Konig2013-02-167-118/+23
| | | | | | | | | | | | | | | | | It's completely unnecessary and can be replace with proper SReg_64 handling instead. This actually fixes a piglit test on SI. v2: use correct register class in addRegisterClass, set special classes as not allocatable v3: revert setting special classes as not allocateable This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175355
* R600/SI: cleanup literal handling v3Christian Konig2013-02-1610-195/+176
| | | | | | | | | | | | | | | | Seems to be allot simpler, and also paves the way for further improvements. v2: rebased on master, use 0 in BUFFER_LOAD_FORMAT_XYZW, use VGPR0 in dummy EXP, avoid compiler warning, break after encoding the first literal. v3: correctly use V_ADD_F32_e64 This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175354
* R600/SI: replace AllReg_* with [SV]Src_* v2Christian Konig2013-02-163-85/+89
| | | | | | | | | | | | Mark all the operands that can also have an immediate. v2: SOFFSET is also an SSrc_32 operand This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175353
* R600/SI: fix VOPC encoding v2Christian Konig2013-02-161-37/+16
| | | | | | | | | | | | | Previously it only worked because of coincident. v2: fix 64bit versions, use 0x80 (inline 0) instead of SGPR0 for the unused SRC2 This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175352
* R600/SI: move *_Helper definitions to SIInstrFormat.tdChristian Konig2013-02-162-66/+66
| | | | | | | | This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175351
* R600/SI: remove some more unused codeChristian Konig2013-02-162-52/+0
| | | | | | | | This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175350
* R600/structurizer: improve inverting conditionsChristian Konig2013-02-161-1/+39
| | | | | | | | | | Stop adding more instructions than necessary. This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175349
* R600/structurizer: improve loop handlingChristian Konig2013-02-161-196/+148
| | | | | | | | | | Generate more than one loop if it seems to make sense. This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175348
* R600/structurizer: improve finding condition valuesChristian Konig2013-02-161-9/+22
| | | | | | | | | | Using the new NearestCommonDominator class. This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175347
* R600/structurizer: improve PHI value findingChristian Konig2013-02-161-0/+6
| | | | | | | | | | Using the new NearestCommonDominator class. This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175346
* R600/structurizer: add class to find the Nearest Common DominatorChristian Konig2013-02-161-0/+66
| | | | | | | | This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175345
* Use a different scheme to chose 16/32 variants. This scheme is moreReed Kotler2013-02-162-11/+7
| | | | | | | consistent with how BuildMI works. No new tests needed. All should work the same as before. llvm-svn: 175342
* Reinitialize the ivars in the subtarget so that they can be reset with the ↵Bill Wendling2013-02-164-73/+89
| | | | | | new features. llvm-svn: 175336
* [ms-inline asm] Do not omit the frame pointer if we have ms-inline assembly.Chad Rosier2013-02-162-15/+18
| | | | | | | | | | | If the frame pointer is omitted, and any stack changes occur in the inline assembly, e.g.: "pusha", then any C local variable or C argument references will be incorrect. I pass no judgement on anyone who would do such a thing. ;) rdar://13218191 llvm-svn: 175334
* Derive ELF section type from the name in some cases where GNU as doesJoerg Sonnenberger2013-02-161-1/+10
| | | | | | so. llvm-svn: 175327
* [mips] Remove SDNPWantParent from the list of SDNodeProperties.Akira Hatanaka2013-02-162-17/+14
| | | | | | No functionality change intended. llvm-svn: 175325
* Temporary revert of 175320.Bill Wendling2013-02-154-90/+74
| | | | llvm-svn: 175322
* Reinitialize the ivars in the subtarget.Bill Wendling2013-02-154-74/+90
| | | | | | | When we're recalculating the feature set of the subtarget, we need to have the ivars in their initial state. llvm-svn: 175320
* Suppress a GCC -Wunused-variable warning in -Asserts buildsMatt Beaumont-Gay2013-02-151-0/+2
| | | | llvm-svn: 175319
* c[ms-inline asm] It's possible to have a SizeDirective rewrite and anChad Rosier2013-02-151-1/+16
| | | | | | | Input/Output rewrite to the same location. Make sure the SizeDirective rewrite is performed first. This also ensure the sort algorithm is stable. llvm-svn: 175317
* If bundle alignment is enabled, do not add data to a fragment with instructionsDerek Schuff2013-02-152-4/+7
| | | | | | | | | | | | With bundle alignment, instructions all get their own MCFragments (unless they are in a bundle-locked group). For instructions with fixups, this is an MCDataFragment. Emitting actual data (e.g. for .long) attempts to re-use MCDataFragments, which we don't want int this case since it leads to fragments which exceed the bundle size. So, don't reuse them in this case. Also adds a test and fixes some formatting. llvm-svn: 175316
* Support changing the subtarget features in ARM.Bill Wendling2013-02-152-4/+29
| | | | llvm-svn: 175315
OpenPOWER on IntegriCloud