summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Revamp the ICC/FCC reading instructions to be parameterized in terms of theChris Lattner2006-01-302-71/+212
| | | | | | | SPARC condition codes, not in terms of the DAG condcodes. This allows us to write nice clean patterns for cmovs/branches. llvm-svn: 25815
* Compile:Chris Lattner2006-01-302-16/+27
| | | | | | | | | | | | | | | | | | | | | | | | uint %test(uint %X) { %Y = call uint %llvm.ctpop.i32(uint %X) ret uint %Y } to: test: save -96, %o6, %o6 sll %i0, 0, %l0 popc %l0, %i0 restore %g0, %g0, %g0 retl nop instead of to 40 logical ops. Note the shift-by-zero that clears the top part of the 64-bit V9 register. Testcase here: CodeGen/SparcV8/ctpop.ll llvm-svn: 25814
* If the target has V9 instructions, this pass is a noop, don't botherChris Lattner2006-01-301-8/+16
| | | | | | running it. llvm-svn: 25811
* When in v9 mode, emit fabsd/fnegd/fmovdChris Lattner2006-01-301-8/+30
| | | | llvm-svn: 25810
* First step towards V9 instructions in the V8 backend, two conditional moveChris Lattner2006-01-303-7/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | patterns. This allows emission of this code: t1: save -96, %o6, %o6 subcc %i0, %i1, %l0 move %icc, %i0, %i2 or %g0, %i2, %i0 restore %g0, %g0, %g0 retl nop instead of this: t1: save -96, %o6, %o6 subcc %i0, %i1, %l0 be .LBBt1_2 ! nop .LBBt1_1: ! or %g0, %i2, %i0 .LBBt1_2: ! restore %g0, %g0, %g0 retl nop for this: int %t1(int %a, int %b, int %c) { %tmp.2 = seteq int %a, %b %tmp3 = select bool %tmp.2, int %a, int %c ret int %tmp3 } llvm-svn: 25809
* Two changes:Chris Lattner2006-01-301-0/+11
| | | | | | | 1. Default to having V9 instructions, instead of just V8. 2. unless -enable-sparc-v9-insts is passed, disable V9 (for use with llcbeta) llvm-svn: 25807
* When lowering SELECT_CC, see if the input is a lowered SETCC. If so, foldChris Lattner2006-01-301-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the two operations together. This allows us to compile this: void %two(int %a, int* %b) { %tmp.2 = seteq int %a, 0 %tmp.0.0 = select bool %tmp.2, int 10, int 20 store int %tmp.0.0, int* %b ret void } into: two: save -96, %o6, %o6 or %g0, 20, %l0 or %g0, 10, %l1 subcc %i0, 0, %l2 be .LBBtwo_2 ! entry nop .LBBtwo_1: ! entry or %g0, %l0, %l1 .LBBtwo_2: ! entry st %l1, [%i1] restore %g0, %g0, %g0 retl nop instead of: two: save -96, %o6, %o6 sethi 0, %l0 or %g0, 1, %l1 or %g0, 20, %l2 or %g0, 10, %l3 subcc %i0, 0, %l4 be .LBBtwo_2 ! entry nop .LBBtwo_1: ! entry or %g0, %l0, %l1 .LBBtwo_2: ! entry subcc %l1, 0, %l0 bne .LBBtwo_4 ! entry nop .LBBtwo_3: ! entry or %g0, %l2, %l3 .LBBtwo_4: ! entry st %l3, [%i1] restore %g0, %g0, %g0 retl nop llvm-svn: 25806
* Add AddSymbol() method to DynamicLibrary to work around Windows limitationJeff Cohen2006-01-302-0/+21
| | | | | | | of being unable to search for symbols in an EXE. It will also allow other existing hacks to be improved. llvm-svn: 25805
* don't insert an and node if it isn't needed here, this can prevent foldingChris Lattner2006-01-301-1/+3
| | | | | | of lowered target nodes. llvm-svn: 25804
* Move MaskedValueIsZero from the DAGCombiner to the TargetLowering ↵Chris Lattner2006-01-305-132/+134
| | | | | | interface,making isMaskedValueZeroForTargetNode simpler, and useable from other partsof the compiler. llvm-svn: 25803
* Implement isMaskedValueZeroForTargetNode for the various v8 selectcc nodes,Chris Lattner2006-01-301-0/+26
| | | | | | allowing redundant and's to be eliminated by the dag combiner. llvm-svn: 25800
* pass the address of MaskedValueIsZero into isMaskedValueZeroForTargetNode,Chris Lattner2006-01-301-1/+1
| | | | | | to permit recursion llvm-svn: 25799
* adjust prototypeChris Lattner2006-01-303-3/+6
| | | | llvm-svn: 25798
* Fix indentation.Jeff Cohen2006-01-291-4/+4
| | | | llvm-svn: 25795
* Fix RET of promoted values on targets that custom expand RET to a target node.Chris Lattner2006-01-291-8/+9
| | | | llvm-svn: 25794
* Functions that are lazily streamed in from the .bc file are *not* external.Chris Lattner2006-01-292-2/+4
| | | | | | | This fixes llvm-test/SingleSource/UnitTests/2006-01-29-SimpleIndirectCall.c and PR704 llvm-svn: 25793
* add another noteChris Lattner2006-01-291-0/+4
| | | | llvm-svn: 25789
* add some performance notes from looking at sgefaChris Lattner2006-01-291-0/+34
| | | | llvm-svn: 25788
* add a high-priority SSE issue from sgefaChris Lattner2006-01-291-0/+34
| | | | llvm-svn: 25787
* add a missed optimizationChris Lattner2006-01-291-0/+10
| | | | llvm-svn: 25786
* cleanups to the ValueTypeActions interfaceChris Lattner2006-01-291-7/+5
| | | | llvm-svn: 25785
* Now that OpActions is big enough, we can specify actions for vector typesChris Lattner2006-01-291-2/+2
| | | | llvm-svn: 25784
* clean up interface to ValueTypeActionsChris Lattner2006-01-291-3/+3
| | | | llvm-svn: 25783
* Remove some special case hacks for CALLSEQ_*, using UpdateNodeOperandsChris Lattner2006-01-292-60/+27
| | | | | | instead. llvm-svn: 25780
* disable this for nowChris Lattner2006-01-291-2/+2
| | | | llvm-svn: 25778
* Add a note about lowering llvm.memset, llvm.memcpy, and llvm.memmove to aReid Spencer2006-01-291-0/+7
| | | | | | few stores under certain conditions. llvm-svn: 25777
* remove now-dead code, the legalizer takes care of this for usChris Lattner2006-01-291-6/+1
| | | | llvm-svn: 25776
* The FP stack doesn't support UNDEF, ask the legalizer to legalize itChris Lattner2006-01-292-5/+3
| | | | | | instead of lying and saying we have it. llvm-svn: 25775
* Allow custom expansion of ConstantVec nodes. PPC will use this in the future.Chris Lattner2006-01-291-22/+35
| | | | llvm-svn: 25774
* Request expansion of ConstantVec nodes.Chris Lattner2006-01-291-0/+5
| | | | llvm-svn: 25773
* Legalize ConstantFP into TargetConstantFP when the target allows. ImplementChris Lattner2006-01-292-2/+39
| | | | | | custom expansion of ConstantFP nodes. llvm-svn: 25772
* Targets all now request ConstantFP to be legalized into TargetConstantFP.Chris Lattner2006-01-295-3/+13
| | | | | | 'fpimm' in .td files is now TargetConstantFP. llvm-svn: 25771
* Update alpha to reflect recent constantfp legalize changes. It's not clearChris Lattner2006-01-292-16/+18
| | | | | | why all this code isn't autogenerated. :( llvm-svn: 25770
* eliminate uses of SelectionDAG::getBR2Way_CCChris Lattner2006-01-292-9/+24
| | | | llvm-svn: 25767
* cmovle != cmovltChris Lattner2006-01-291-1/+1
| | | | llvm-svn: 25761
* Fix typo.Jeff Cohen2006-01-291-1/+1
| | | | llvm-svn: 25760
* Flesh out AMD family/models.Jeff Cohen2006-01-281-2/+27
| | | | llvm-svn: 25755
* Correctly determine CPU vendor.Jeff Cohen2006-01-281-11/+5
| | | | llvm-svn: 25754
* Use union instead of reinterpret_cast.Jeff Cohen2006-01-281-5/+9
| | | | llvm-svn: 25751
* Fix recognition of Intel CPUs.Jeff Cohen2006-01-281-0/+2
| | | | llvm-svn: 25750
* Is64Bit reflects the capability of the chip, not an aspect of the target osChris Lattner2006-01-281-6/+0
| | | | llvm-svn: 25749
* Fix a bunch of JIT failures with the new iselChris Lattner2006-01-281-4/+15
| | | | llvm-svn: 25748
* Improve X86 subtarget support for Windows and AMD.Jeff Cohen2006-01-281-38/+77
| | | | llvm-svn: 25747
* Use the new "UpdateNodeOperands" method to simplify LegalizeDAG and make itChris Lattner2006-01-281-317/+194
| | | | | | | | | | | | | | faster. This cuts about 120 lines of code out of the legalizer (mostly code checking to see if operands have changed). It also fixes an ugly performance issue, where the legalizer cloned the entire graph after any change. Now the "UpdateNodeOperands" method gives it a chance to reuse nodes if the operands of a node change but not its opcode or valuetypes. This speeds up instruction selection time on kimwitu++ by about 8.2% with a release build. llvm-svn: 25746
* silence a warningChris Lattner2006-01-281-0/+1
| | | | llvm-svn: 25745
* add another method variantChris Lattner2006-01-281-3/+18
| | | | llvm-svn: 25744
* add some methods for updating nodesChris Lattner2006-01-281-0/+234
| | | | llvm-svn: 25742
* minor tweaksChris Lattner2006-01-281-21/+21
| | | | llvm-svn: 25740
* move a bunch of code, no other change.Chris Lattner2006-01-281-326/+324
| | | | llvm-svn: 25739
* remove a couple more now-extraneous legalizeop'sChris Lattner2006-01-281-9/+5
| | | | llvm-svn: 25738
OpenPOWER on IntegriCloud