summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove unused variables.Nick Lewycky2010-10-061-3/+0
| | | | llvm-svn: 115802
* ComputeLinearIndex doesn't need its TLI argument.Dan Gohman2010-10-062-9/+7
| | | | llvm-svn: 115792
* - Add TargetInstrInfo::getOperandLatency() to compute operand latencies. ThisEvan Cheng2010-10-062-24/+5
| | | | | | | | | | | | | allow target to correctly compute latency for cases where static scheduling itineraries isn't sufficient. e.g. variable_ops instructions such as ARM::ldm. This also allows target without scheduling itineraries to compute operand latencies. e.g. X86 can return (approximated) latencies for high latency instructions such as division. - Compute operand latencies for those defined by load multiple instructions, e.g. ldm and those used by store multiple instructions, e.g. stm. llvm-svn: 115755
* Count uses in all nested loops, not just the deepest.Jakob Stoklund Olesen2010-10-051-1/+2
| | | | llvm-svn: 115710
* Remove SplitAnalysis::removeUse. It was only used to make SplitAnalysisJakob Stoklund Olesen2010-10-052-32/+0
| | | | | | | reusable, but that is no longer relevant since a split will always replace the original. llvm-svn: 115709
* dupli always has an interval now.Jakob Stoklund Olesen2010-10-051-14/+11
| | | | llvm-svn: 115708
* We can split around loops with multiple exits now.Jakob Stoklund Olesen2010-10-051-6/+0
| | | | llvm-svn: 115696
* Update SplitEditor API to reflect the fact that the original live interval isJakob Stoklund Olesen2010-10-053-39/+27
| | | | | | | | | | never kept after splitting. Keeping the original interval made sense when the split region doesn't modify the register, and the original is spilled. We can get the same effect by detecting reloaded values when spilling around copies. llvm-svn: 115695
* Intervals are half-open.Jakob Stoklund Olesen2010-10-051-1/+1
| | | | llvm-svn: 115694
* When we find a reaching definition, make sure it is visited from all paths byJakob Stoklund Olesen2010-10-051-5/+12
| | | | | | erasing it from the visited set. That ensures we create the right phi defs. llvm-svn: 115666
* Don't use nextIndex to check for live out of instruction.Jakob Stoklund Olesen2010-10-052-17/+13
| | | | | | | | | | | Insert copy after defining instruction. Fix LiveIntervalMap::extendTo to properly handle live segments starting before the current basic block. Make sure the open live range is extended to the inserted copy's use slot. llvm-svn: 115665
* Tweak VNInfo printing.Jakob Stoklund Olesen2010-10-051-0/+2
| | | | llvm-svn: 115650
* Add assert for valid slot indexes.Jakob Stoklund Olesen2010-10-051-0/+1
| | | | llvm-svn: 115649
* Use a more efficient lowering of uint64_t --> float that can take advantage ↵Owen Anderson2010-10-051-6/+28
| | | | | | | | | of hardware signed integer conversion without having to do a double cast (uint64_t --> double --> float). This is based on the algorithm from compiler_rt's __floatundisf for X86-64. llvm-svn: 115634
* This DAG combine BRCOND transformation can look pass truncate of the operand:Evan Cheng2010-10-041-13/+18
| | | | | | | | | | | | | | | | | | | | // %a = ... // %b = and i32 %a, 2 // %c = srl i32 %b, 1 // brcond i32 %c ... // // into // // %a = ... // %b = and i32 %a, 2 // %c = setcc eq %b, 0 // brcond %c ... Make sure it restores local variable N1, which corresponds to the condition operand if it fails to match. This apparently breaks TCE but since that backend isn't in the tree I don't have a test for it. llvm-svn: 115571
* Removed the older style (in-allocator) problem construction system from the ↵Lang Hames2010-10-041-628/+9
| | | | | | PBQP allocator. Problem construction is now done exclusively with the new builders. llvm-svn: 115502
* Stop using LiveRange in MachineVerifier.Jakob Stoklund Olesen2010-10-021-16/+15
| | | | llvm-svn: 115408
* Fix a miscompile in 186.crafty for Thumb2 that was exposed by Evan'sBob Wilson2010-10-021-10/+14
| | | | | | | | | | | scheduling change in svn 115121. The CriticalAntiDepBreaker had bad liveness information. It was calculating the KillIndices for one scheduling region in a basic block, rescheduling that region so the KillIndices were no longer valid, and then using those wrong KillIndices to make decisions for the next scheduling region. I've not been able to reduce a small testcase for this. Radar 8502534. llvm-svn: 115400
* Drop the use of LiveInterval::iterator and the LiveRange class inJakob Stoklund Olesen2010-10-011-14/+7
| | | | | | RemoveCopyByCommutingDef. llvm-svn: 115386
* When RemoveCopyByCommutingDef is creating additional identity copies, just useJakob Stoklund Olesen2010-10-012-47/+10
| | | | | | | | | | | LiveInterval::MergeValueNumberInto instead of trying to extend LiveRanges and getting it wrong. This fixed PR8249 where a valno with a multi-segment live range was defined by an identity copy created by RemoveCopyByCommutingDef. Some of the live segments disappeared. llvm-svn: 115385
* Pretty up the debug output during RemoveCopyByCommutingDef.Jakob Stoklund Olesen2010-10-011-19/+7
| | | | llvm-svn: 115384
* Add support to let FE mark explict methods as explict in debug info.Devang Patel2010-10-011-0/+2
| | | | llvm-svn: 115378
* Nuke trailing whitespace.Jim Grosbach2010-10-011-28/+28
| | | | llvm-svn: 115377
* Thread the determination of branch prediction hit rates back through the ↵Owen Anderson2010-10-011-23/+39
| | | | | | | | | if-conversion heuristic APIs. For now, stick with a constant estimate of 90% (branch predictors are good!), but we might find that we want to provide more nuanced estimates in the future. llvm-svn: 115364
* Fix code gen crash reported in PR 8235. We still lose debug info for the ↵Devang Patel2010-10-011-0/+3
| | | | | | unused argument here. This is a known limitation recorded debuginfo-tests/trunk/dbg-declare2.ll function 'f6' test case. llvm-svn: 115323
* typoGabor Greif2010-10-011-1/+1
| | | | llvm-svn: 115310
* fix typoChris Lattner2010-10-011-1/+1
| | | | llvm-svn: 115300
* fix rdar://8494845 + PR8244 - a miscompile exposed by my patch in r101350Chris Lattner2010-10-011-0/+9
| | | | llvm-svn: 115294
* Massive rewrite of MMX: Dale Johannesen2010-09-301-0/+60
| | | | | | | | | | | | | | | | | | | The x86_mmx type is used for MMX intrinsics, parameters and return values where these use MMX registers, and is also supported in load, store, and bitcast. Only the above operations generate MMX instructions, and optimizations do not operate on or produce MMX intrinsics. MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into smaller pieces. Optimizations may occur on these forms and the result casted back to x86_mmx, provided the result feeds into a previous existing x86_mmx operation. The point of all this is prevent optimizations from introducing MMX operations, which is unsafe due to the EMMS problem. llvm-svn: 115243
* When isel is emitting instructions for an x86 target without CMOV, the CFG isJakob Stoklund Olesen2010-09-303-1/+24
| | | | | | | | | | | | | | | | | edited during emission. If the basic block ends in a switch that gets lowered to a jump table, any phis at the default edge were getting updated wrong. The jump table data structure keeps a pointer to the header blocks that wasn't getting updated after the MBB is split. This bug was exposed on 32-bit Linux when disabling critical edge splitting in codegen prepare. The fix is to uipdate stale MBB pointers whenever a block is split during emission. llvm-svn: 115191
* Let FE mark a variable as artificial variable.Devang Patel2010-09-291-0/+2
| | | | llvm-svn: 115102
* Model Cortex-a9 load to SUB, RSB, ADD, ADC, SBC, RSC, CMN, MVN, or CMPEvan Cheng2010-09-292-37/+34
| | | | | | pipeline forwarding path. llvm-svn: 115098
* Silence msvc warnings.Benjamin Kramer2010-09-291-6/+6
| | | | llvm-svn: 115097
* Add support to let FE encode method access specifier.Devang Patel2010-09-291-1/+12
| | | | llvm-svn: 115089
* UnreachableBlockElim could incorrectly return false when it had not modified ↵Owen Anderson2010-09-291-1/+4
| | | | | | the CFG, but HAD modified some PHI nodes. Fixes PR8174. llvm-svn: 115083
* Assign DW_ACCESS_public accessibility attribute to members by default.Devang Patel2010-09-291-1/+10
| | | | llvm-svn: 115067
* Revert r114997. It was causing a failure on darwin10-selfhost.Bill Wendling2010-09-281-5/+13
| | | | llvm-svn: 115002
* Removed a bunch of unnecessary target_link_libraries.Oscar Fuentes2010-09-283-5/+0
| | | | llvm-svn: 114999
* Fix a FIXME. _foo.eh symbols are currently always exported so that the linkerBill Wendling2010-09-281-13/+5
| | | | | | knows about them. This is not necessary on 10.6 and later. llvm-svn: 114997
* Give the if-converter access to MachineLoopInfo, and use it to generate ↵Owen Anderson2010-09-281-16/+50
| | | | | | | | plausible branch prediction estimates. llvm-svn: 114981
* Part one of switching to using a more sane heuristic for determining ↵Owen Anderson2010-09-281-4/+4
| | | | | | | | | | | if-conversion profitability. Rather than having arbitrary cutoffs, actually try to cost model the conversion. For now, the constants are tuned to more or less match our existing behavior, but these will be changed to reflect realistic values as this work proceeds. llvm-svn: 114973
* Provide an interface to let FEs anchor debug info for types.Devang Patel2010-09-281-0/+4
| | | | llvm-svn: 114969
* Remove dead argument.Devang Patel2010-09-272-5/+4
| | | | llvm-svn: 114920
* Don't try to make a vector of x86mmx; this won't work,Dale Johannesen2010-09-271-2/+4
| | | | | | and asserts. llvm-svn: 114843
* the latest assembler that runs on powerpc 10.4 machines doesn'tChris Lattner2010-09-272-2/+24
| | | | | | | support aligned comm. Detect when compiling for 10.4 and don't emit an alignment for comm. THis will hopefully fix PR8198. llvm-svn: 114817
* Fixed some tests to avoid LiveIntervals::getInstructionFromIndex(..) ↵Lang Hames2010-09-263-9/+8
| | | | | | overhead where possible. Thanks to Jakob for the suggestions. llvm-svn: 114798
* Avoid using VNInfo::getCopy as much as possible. I want to get rid of it.Jakob Stoklund Olesen2010-09-251-10/+6
| | | | llvm-svn: 114794
* Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing ↵Lang Hames2010-09-2510-76/+75
| | | | | | whether LiveIntervals::getInstructionFromIndex(def) returns NULL. llvm-svn: 114791
* Remove SlotIndex::PHI_BIT. It is no longer used by anything.Jakob Stoklund Olesen2010-09-253-11/+4
| | | | llvm-svn: 114779
* Remove the only use of SlotIndex::isPHI. This bit is not being set consistentlyJakob Stoklund Olesen2010-09-251-1/+1
| | | | | | and it will be removed shortly. llvm-svn: 114778
OpenPOWER on IntegriCloud