summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Clear kill flags in removeCopyByCommutingDef().Jakob Stoklund Olesen2012-07-312-0/+48
| | | | | | | | | We are extending live ranges, so kill flags are not accurate. They aren't needed until they are recomputed after RA anyway. <rdar://problem/11950722> llvm-svn: 161023
* Reverse order of the two branches at end of a basic block if it is profitable.Manman Ren2012-07-312-1/+119
| | | | | | | | | | | | | | | We branch to the successor with higher edge weight first. Convert from je LBB4_8 --> to outer loop jmp LBB4_14 --> to inner loop to jne LBB4_14 jmp LBB4_8 PR12750 rdar: 11393714 llvm-svn: 161018
* Use the latest MachineRegisterInfo APIs. No functionality.Andrew Trick2012-07-301-1/+1
| | | | llvm-svn: 161010
* Added MachineRegisterInfo::hasOneDef()Andrew Trick2012-07-301-0/+9
| | | | llvm-svn: 161009
* Inline MachineRegisterInfo::hasOneUseAndrew Trick2012-07-302-8/+6
| | | | llvm-svn: 161007
* Extend the InstVisitor to visit the specialized classes wrappingChandler Carruth2012-07-301-7/+46
| | | | | | | | CallInst for intrinsics. This allows users of the InstVisitor that would like to special case certain very common intrinsics to do so naturally in keeping with the type hierarchy's utility classes. llvm-svn: 161006
* Avoid looking at stale data in verifyAnalysis().Jakob Stoklund Olesen2012-07-301-1/+4
| | | | llvm-svn: 161004
* Allow traces to enter nested loops.Jakob Stoklund Olesen2012-07-301-14/+29
| | | | | | | | | | | This lets traces include the final iteration of a nested loop above the center block, and the first iteration of a nested loop below the center block. We still don't allow traces to contain backedges, and traces are truncated where they would leave a loop, as seen from the center block. llvm-svn: 161003
* Keep empty assembly macro argument values in the middle of the list.Jim Grosbach2012-07-302-2/+20
| | | | | | | | | | | | | | | | | | | Empty macro arguments at the end of the list should be as-if not specified at all, but those in the middle of the list need to be kept so as not to screw up the positional numbering. E.g.: .macro foo foo_-bash___: nop .endm foo 1, 2, 3, 4 foo 1, , 3, 4 Should create two labels, "foo_1_2_3_4" and "foo_1__3_4". rdar://11948769 llvm-svn: 161002
* Move the SmallVector unit tests to be type-parameterized so that we canChandler Carruth2012-07-302-152/+193
| | | | | | | | | | | | | | | | | | | | test more than a single instantiation of SmallVector. Add testing for 0, 1, 2, and 4 element sized "small" buffers. These appear to be essentially untested in the unit tests until now. Fix several tests to be robust in the face of a '0' small buffer. As a consequence of this size buffer, the growth patterns are actually observable in the test -- yes this means that many tests never caused a grow to occur before. For some tests I've merely added a reserve call to normalize behavior. For others, the growth is actually interesting, and so I captured the fact that growth would occur and adjusted the assertions to not assume how rapidly growth occured. Also update the specialization for a '0' small buffer length to have all the same interface points as the normal small vector. llvm-svn: 161001
* Clarify invalidation strategy in comment.Jakob Stoklund Olesen2012-07-301-0/+6
| | | | llvm-svn: 160997
* Fix grammar-o. Fixes PR13482!Nick Lewycky2012-07-301-1/+1
| | | | llvm-svn: 160996
* Assert that all trace candidate blocks have been visited by the PO.Jakob Stoklund Olesen2012-07-301-11/+6
| | | | | | | | | | When computing a trace, all the candidates for pred/succ must have been visited. Filter out back-edges first, though. The PO traversal ignores them. Thanks to Andy for spotting this in review. llvm-svn: 160995
* Hook into PassManager's analysis verification.Jakob Stoklund Olesen2012-07-303-7/+4
| | | | | | | By overriding Pass::verifyAnalysis(), the pass contents will be verified by the pass manager. llvm-svn: 160994
* Consider address spaces for hashing and CSEing DAG nodes. Otherwise two ↵Pete Cooper2012-07-302-0/+38
| | | | | | loads from different x86 segments but the same address would get CSEd llvm-svn: 160987
* Typo.Eric Christopher2012-07-301-1/+1
| | | | llvm-svn: 160981
* Fix a bug in ARMMachObjectWriter::RecordRelocation() in ARMMachObjectWriter.cppKevin Enderby2012-07-302-2/+53
| | | | | | | | | where the other_half of the movt and movw relocation entries needs to get set and only with the 16 bits of the other half. rdar://10038370 llvm-svn: 160978
* Add MachineInstr::isTransient().Jakob Stoklund Olesen2012-07-302-23/+25
| | | | | | | | | | | This is a cleaned up version of the isFree() function in MachineTraceMetrics.cpp. Transient instructions are very unlikely to produce any code in the final output. Either because they get eliminated by RegisterCoalescing, or because they are pseudo-instructions like labels and debug values. llvm-svn: 160977
* Add MachineTraceMetrics::verify().Jakob Stoklund Olesen2012-07-303-11/+55
| | | | | | | This function verifies the consistency of cached data in the MachineTraceMetrics analysis. llvm-svn: 160976
* Verify that the CFG hasn't changed during invalidate().Jakob Stoklund Olesen2012-07-301-2/+12
| | | | | | | The MachineTraceMetrics analysis must be invalidated before modifying the CFG. This will catch some of the violations of that rule. llvm-svn: 160969
* Add MachineBasicBlock::isPredecessor().Jakob Stoklund Olesen2012-07-302-2/+9
| | | | | | | | A->isPredecessor(B) is the same as B->isSuccessor(A), but it can tolerate a B that is null or dangling. This shouldn't happen normally, but it it useful for verification code. llvm-svn: 160968
* When constant folding GEP expressions, keep the address space information of ↵Nadav Rotem2012-07-302-3/+29
| | | | | | | | pointers. Together with Ran Chachick <ran.chachick@intel.com> llvm-svn: 160954
* Mark MOVZX16/MOVSX16 as neverHasSideEffects/mayLoadCraig Topper2012-07-301-0/+6
| | | | llvm-svn: 160953
* Mark MOVZX32_NOREX as isCodeGenOnly and neverHasSideEffects. The ↵Craig Topper2012-07-302-2/+3
| | | | | | isCodeGenOnly change allows special detection of _NOREX instructions to be removed from tablegen disassembler code. llvm-svn: 160951
* Remove some unnecessary filter checks. They were already covered by ↵Craig Topper2012-07-301-12/+0
| | | | | | IsCodeGenOnly llvm-svn: 160950
* Remove check for sub class of X86Inst from filter function since caller ↵Craig Topper2012-07-301-6/+2
| | | | | | guaranteed it. Replace another sub class check with ShouldBeEmitted flag since it was factored in there already. llvm-svn: 160949
* Simplify code that filtered certain instructions in two different ways. No ↵Craig Topper2012-07-301-14/+1
| | | | | | functional change. llvm-svn: 160948
* Remove check for f256mem from has256BitOperands as nothing depended on it ↵Craig Topper2012-07-301-1/+1
| | | | | | and it isn't the only 256-bit memory type anyway. llvm-svn: 160946
* Remove trailing whitespace.Craig Topper2012-07-301-85/+85
| | | | llvm-svn: 160945
* Give VCVTTPD2DQ priority over CVTTPD2DQ.Craig Topper2012-07-301-10/+10
| | | | llvm-svn: 160942
* Fix patterns for CVTTPS2DQ to specify SSE2 instead of SSE1.Craig Topper2012-07-303-43/+46
| | | | llvm-svn: 160941
* Fix up patterns for VCVTSS2SD. Specifically give it priority over SSE form. ↵Craig Topper2012-07-301-9/+10
| | | | | | Add an OptForSpeed to explicitly pair up with an OptForSize that was already on another pattern. llvm-svn: 160939
* Fix load types on intrinsic forms of SS2SD and SD2SS AVX/SSE convert ↵Craig Topper2012-07-291-26/+41
| | | | | | instruction patterns. llvm-svn: 160938
* Move more SSE/AVX convert instruction patterns into their definitions.Craig Topper2012-07-291-70/+50
| | | | llvm-svn: 160937
* APInt: Simplify code.Benjamin Kramer2012-07-291-7/+1
| | | | | | No functionality change. llvm-svn: 160929
* Revert r160920 and r160919 due to dragonegg and clang selfhost failureManman Ren2012-07-2910-171/+54
| | | | llvm-svn: 160927
* Add testcases for GlobalOpt changes in r160693 and r160757.Nick Lewycky2012-07-291-3/+33
| | | | llvm-svn: 160925
* Fold patterns for some of the SSE/AVX convert instructions into their ↵Craig Topper2012-07-281-49/+34
| | | | | | instruction definitions. llvm-svn: 160922
* Mark some of the SSE/AVX convert instructions as mayLoad/neverHasSideEffects.Craig Topper2012-07-281-22/+23
| | | | llvm-svn: 160921
* X86 Peephole: fold loads to the source register operand if possible.Manman Ren2012-07-282-4/+4
| | | | | | Trying to fix the bot by specifying a triple in the failing testing cases. llvm-svn: 160920
* X86 Peephole: fold loads to the source register operand if possible.Manman Ren2012-07-2810-50/+167
| | | | | | | | | Machine CSE and other optimizations can remove instructions so folding is possible at peephole while not possible at ISel. rdar://10554090 and rdar://11873276 llvm-svn: 160919
* Make CVTSS2SI instruction definition consistent with CVTSD2SI.Craig Topper2012-07-281-34/+14
| | | | llvm-svn: 160914
* Fix up memory load types for SSE scalar convert intrinsic patterns.Craig Topper2012-07-281-27/+26
| | | | llvm-svn: 160913
* X86 Peephole: fix PR13475 in optimizeCompare.Manman Ren2012-07-282-3/+23
| | | | | | | | It is possible that an instruction can use and update EFLAGS. When checking the safety, we should check the usage of EFLAGS first before declaring it is safe to optimize due to the update. llvm-svn: 160912
* Reenable a basic SSA DAG builder optimization.Andrew Trick2012-07-281-5/+4
| | | | | | Jakob fixed ProcessImplicifDefs in r159149. llvm-svn: 160910
* Add more debug output to MachineTraceMetrics.Jakob Stoklund Olesen2012-07-273-3/+48
| | | | llvm-svn: 160905
* Keep track of the head and tail of the trace through each block.Jakob Stoklund Olesen2012-07-272-4/+18
| | | | | | | This makes it possible to quickly detect blocks that are outside the trace. llvm-svn: 160904
* Add a DW_AT_high_pc for CUs that are a single address range. UpdateEric Christopher2012-07-2712-29/+71
| | | | | | | | | | all tests accordingly. Fixes PR13351. Patch by shinichiro hamaji! llvm-svn: 160899
* Also compute register mask lists under -new-live-intervals.Jakob Stoklund Olesen2012-07-272-8/+40
| | | | llvm-svn: 160898
* Typos.Chad Rosier2012-07-272-2/+2
| | | | llvm-svn: 160897
OpenPOWER on IntegriCloud