summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix the encoding of QADD/SUB, QDADD/SUB. While qadd16, qadd8 use "rd, rn, rm",Bruno Cardoso Lopes2011-01-214-15/+48
| | | | | | | qadd and qdadd uses "rd, rm, rn", the same applies to the 'sub' variants. This is described in ARM manuals and matches the encoding used by the gnu assembler. llvm-svn: 123975
* Implement support for byval arguments in Sparc backend.Venkatraman Govindaraju2011-01-212-1/+49
| | | | llvm-svn: 123974
* SCCP doesn't actually preserve the CFG. It will delete and insert terminatorNick Lewycky2011-01-211-4/+0
| | | | | | instructions. llvm-svn: 123973
* Revert "Object: Renable the tests now that none of the build bots complain ↵Michael J. Spencer2011-01-212-0/+0
| | | | | | | | about aliasing." This reverts commit 281f3901b7b0869929caf8946c1ad1228bc38922. llvm-svn: 123972
* Enable support for precise scheduling of the instruction selectionAndrew Trick2011-01-213-7/+12
| | | | | | | | | | | | | | | | | | | | | | | DAG. Disable using "-disable-sched-cycles". For ARM, this enables a framework for modeling the cpu pipeline and counting stalls. It also activates several heuristics to drive scheduling based on the model. Scheduling is inherently imprecise at this stage, and until spilling is improved it may defeat attempts to schedule. However, this framework provides greater control over tuning codegen. Although the flag is not target-specific, it should have very little affect on the default scheduler used by x86. The only two changes that affect x86 are: - scheduling a high-latency operation bumps the current cycle so independent operations can have their latency covered. i.e. two independent 4 cycle operations can produce results in 4 cycles, not 8 cycles. - Two operations with equal register pressure impact and no latency-based stalls on their uses will be prioritized by depth before height (height is irrelevant if no stalls occur in the schedule below this point). llvm-svn: 123971
* Convert -enable-sched-cycles and -enable-sched-hazard to -disableAndrew Trick2011-01-2110-63/+88
| | | | | | | | | | | flags. They are still not enable in this revision. Added TargetInstrInfo::isZeroCost() to fix a fundamental problem with the scheduler's model of operand latency in the selection DAG. Generalized unit tests to work with sched-cycles. llvm-svn: 123969
* fix PR9013, an infinite loop in instcombine.Chris Lattner2011-01-212-2/+27
| | | | llvm-svn: 123968
* update obsolete comment.Chris Lattner2011-01-211-4/+3
| | | | llvm-svn: 123965
* Object: Renable the tests now that none of the build bots complain about ↵Michael J. Spencer2011-01-212-0/+0
| | | | | | aliasing. llvm-svn: 123964
* Don't try to pull vector bitcasts that change the number of elements throughNick Lewycky2011-01-212-3/+28
| | | | | | | a select. A vector select is pairwise on each element so we'd need a new condition with the right number of elements to select on. Fixes PR8994. llvm-svn: 123963
* Object: Fix type punned pointer issues by making DataRefImpl a union and ↵Michael J. Spencer2011-01-213-84/+82
| | | | | | using intptr_t. llvm-svn: 123962
* tblgen: Add support for non-inheritable attributesPeter Collingbourne2011-01-211-12/+47
| | | | | | | This patch makes the necessary changes to TableGen to support non-inheritable attributes. llvm-svn: 123958
* Add a constant folding of casts from zero to zero. Fixes PR9011!Nick Lewycky2011-01-212-0/+39
| | | | | | | | While here, I'd like to complain about how vector is not an aggregate type according to llvm::Type::isAggregateType(), but they're listed under aggregate types in the LangRef and zero vectors are stored as ConstantAggregateZero. llvm-svn: 123956
* Don't be overly aggressive with CSE of "ldr constantpool". If it's a pc-relativeEvan Cheng2011-01-202-7/+7
| | | | | | | | | value, the "add pc" must be CSE'ed at the same time. We could follow the same approach as T2 by adding pseudo instructions that combine the ldr + "add pc". But the better approach is to use movw + movt (which I will enable soon), so I'll leave this as a TODO. llvm-svn: 123949
* Implement requiredTransitiveTobias Grosser2011-01-202-1/+56
| | | | | | | The PassManager did not implement the transitivity of requiredTransitive. This was unnoticed since 2006. llvm-svn: 123942
* RegionPassPrinter should contain the name of the pass printedTobias Grosser2011-01-201-2/+2
| | | | llvm-svn: 123941
* Add testcases for clz encodingBruno Cardoso Lopes2011-01-202-0/+6
| | | | llvm-svn: 123937
* Fix the encoding and parsing of clrex instructionBruno Cardoso Lopes2011-01-204-5/+13
| | | | llvm-svn: 123936
* Move InstAlias check of argument types to a separate loop.Bob Wilson2011-01-201-11/+14
| | | | llvm-svn: 123934
* Tidy comment.Bob Wilson2011-01-201-2/+2
| | | | llvm-svn: 123933
* Fix broken check for InstAlias argument used with different types.Bob Wilson2011-01-201-0/+1
| | | | llvm-svn: 123932
* Precompute InstAlias operand mapping to result instruction operand indices.Bob Wilson2011-01-203-24/+9
| | | | | | | There should be no functional change from this, but I think it's simpler this way. llvm-svn: 123931
* Change instruction names for consistencyBruno Cardoso Lopes2011-01-201-4/+6
| | | | llvm-svn: 123930
* Add cdp/cdp2 instructions for thumb/thumb2Bruno Cardoso Lopes2011-01-205-1/+57
| | | | llvm-svn: 123929
* Disable objdump-trivial-object.test. It is broken on powerpc-darwin9.Devang Patel2011-01-201-0/+0
| | | | llvm-svn: 123928
* - Use a more appropriate name for Owen's ARM Parser isMCR hack since the ↵Bruno Cardoso Lopes2011-01-203-26/+65
| | | | | | | | | | same operands can be present in cdp/cdp2 instructions. Also increase the hack with cdp/cdp2 instructions. - Fix the encoding of cdp/cdp2 instructions for ARM (no thumb and thumb2 yet) and add testcases for t hem. llvm-svn: 123927
* SplitKit requires that all defs are in place before calling useIntv().Jakob Stoklund Olesen2011-01-201-10/+22
| | | | | | | | | | | The value mapping gets confused about which original values have multiple new definitions so they may need phi insertions. This could probably be simplified by letting enterIntvBefore() take a live range to be added following the instruction. As long as the range stays inside the same basic block, value mapping shouldn't be a problem. llvm-svn: 123926
* Add LiveIntervalMap::dumpCache() to print out the cache used by the ssa ↵Jakob Stoklund Olesen2011-01-202-0/+24
| | | | | | update algorithm. llvm-svn: 123925
* Add mcr*2 and mr*c2 support to thumb2 targetsBruno Cardoso Lopes2011-01-203-0/+75
| | | | llvm-svn: 123919
* Add mcr* and mr*c support to thumb targetsBruno Cardoso Lopes2011-01-204-2/+81
| | | | llvm-svn: 123917
* Disable this test until I can figure out why it's broken. Not xfailed because itMichael J. Spencer2011-01-201-0/+0
| | | | | | usese 100% CPU and times out, so it's annoying to run it. llvm-svn: 123915
* Allow sign-extending of i8 and i16 to i128 on SPU. Kalle Raiskila2011-01-203-1/+28
| | | | llvm-svn: 123912
* At -O123 the early-cse pass is run before instcombine has run. According to myDuncan Sands2011-01-203-32/+218
| | | | | | | | | | | | | | | | auto-simplier the transform most missed by early-cse is (zext X) != 0 -> X != 0. This patch adds this transform and some related logic to InstructionSimplify and removes some of the logic from instcombine (unfortunately not all because there are several situations in which instcombine can improve things by making new instructions, whereas instsimplify is not allowed to do this). At -O2 this often results in more than 15% more simplifications by early-cse, and results in hundreds of lines of bitcode being eliminated from the testsuite. I did see some small negative effects in the testsuite, for example a few additional instructions in three programs. One program, 483.xalancbmk, got an additional 35 instructions, which seems to be due to a function getting an additional instruction and then being inlined all over the place. llvm-svn: 123911
* Refactor mcr* and mr*c instructions into classes with the same encoding. No ↵Bruno Cardoso Lopes2011-01-201-108/+46
| | | | | | functionality change. llvm-svn: 123910
* My editor's indent went crazy. Fix.Eric Christopher2011-01-201-1/+1
| | | | llvm-svn: 123909
* Expand invalid return values for umulo and smulo. Handle these similarlyEric Christopher2011-01-203-0/+56
| | | | | | | | | | to add/sub by doing the normal operation and then checking for overflow afterwards. This generally relies on the DAG handling the later invalid operations as well. Fixes the 64-bit part of rdar://8622122 and rdar://8774702. llvm-svn: 123908
* Correct itinerary entry for t2MOV_pic_ga_add_pc.Evan Cheng2011-01-201-1/+1
| | | | llvm-svn: 123907
* Add test.Evan Cheng2011-01-201-0/+9
| | | | llvm-svn: 123906
* Sorry, several patches in one.Evan Cheng2011-01-2016-223/+320
| | | | | | | | | | | | | | | | | | | | | | | | | | | | TargetInstrInfo: Change produceSameValue() to take MachineRegisterInfo as an optional argument. When in SSA form, targets can use it to make more aggressive equality analysis. Machine LICM: 1. Eliminate isLoadFromConstantMemory, use MI.isInvariantLoad instead. 2. Fix a bug which prevent CSE of instructions which are not re-materializable. 3. Use improved form of produceSameValue. ARM: 1. Teach ARM produceSameValue to look pass some PIC labels. 2. Look for operands from different loads of different constant pool entries which have same values. 3. Re-implement PIC GA materialization using movw + movt. Combine the pair with a "add pc" or "ldr [pc]" to form pseudo instructions. This makes it possible to re-materialize the instruction, allow machine LICM to hoist the set of instructions out of the loop and make it possible to CSE them. It's a bit hacky, but it significantly improve code quality. 4. Some minor bug fixes as well. With the fixes, using movw + movt to materialize GAs significantly outperform the load from constantpool method. 186.crafty and 255.vortex improved > 20%, 254.gap and 176.gcc ~10%. llvm-svn: 123905
* llvm-objdump: Remove redundant includes.Michael J. Spencer2011-01-201-2/+0
| | | | llvm-svn: 123902
* llvm-nm: Fix warning.Michael J. Spencer2011-01-201-2/+2
| | | | llvm-svn: 123901
* Object: Add some tests!Michael J. Spencer2011-01-209-0/+76
| | | | llvm-svn: 123899
* Add llvm-objdumpMichael J. Spencer2011-01-205-4/+290
| | | | llvm-svn: 123898
* llvm-nm: Update to use the new LLVMObject library.Michael J. Spencer2011-01-203-32/+192
| | | | llvm-svn: 123897
* Object: Add ELF support.Michael J. Spencer2011-01-204-1/+711
| | | | llvm-svn: 123896
* Object: Add COFF Support.Michael J. Spencer2011-01-203-1/+372
| | | | llvm-svn: 123895
* Selection DAG scheduler register pressure heuristic fixes.Andrew Trick2011-01-201-8/+27
| | | | | | | | Added a check for already live regs before claiming HighRegPressure. Fixed a few cases of checking the wrong number of successors. Added some tracing until these heuristics are better understood. llvm-svn: 123892
* Check that a live range exists before shortening it. This fixes PR8989.Jakob Stoklund Olesen2011-01-201-3/+5
| | | | | | The live range may have been deleted earlier because of rematerialization. llvm-svn: 123891
* Add hidden -verify-coalescing to run the machine code verifier before and afterJakob Stoklund Olesen2011-01-201-0/+10
| | | | | | register coalescing. llvm-svn: 123890
* gold: MinGW fix.Michael J. Spencer2011-01-201-0/+7
| | | | llvm-svn: 123886
OpenPOWER on IntegriCloud