oota-llvm.git
18 years agoprovide an option to override the target triple in a module from the commandline.
Chris Lattner [Fri, 16 Dec 2005 05:00:21 +0000 (05:00 +0000)]
provide an option to override the target triple in a module from the commandline.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24730 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoprovide an option to override the target triple in a module from the command
Chris Lattner [Fri, 16 Dec 2005 04:59:57 +0000 (04:59 +0000)]
provide an option to override the target triple in a module from the command
line.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24729 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUpdate the darwin handling of linkonce & weak functions and GV stubs. This
Chris Lattner [Fri, 16 Dec 2005 00:22:14 +0000 (00:22 +0000)]
Update the darwin handling of linkonce & weak functions and GV stubs. This
should work in all permutations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24728 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDon't globalize internal functions
Chris Lattner [Fri, 16 Dec 2005 00:07:30 +0000 (00:07 +0000)]
Don't globalize internal functions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24727 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago* Promote all 1 bit entities to 8 bit.
Evan Cheng [Thu, 15 Dec 2005 19:49:23 +0000 (19:49 +0000)]
* Promote all 1 bit entities to 8 bit.
* Handling extload (1 bit -> 8 bit) and remove C++ code that handle 1 bit
zextload.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24726 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDon't create SEXTLOAD/ZEXTLOAD instructions that the target doesn't support
Chris Lattner [Thu, 15 Dec 2005 19:02:38 +0000 (19:02 +0000)]
Don't create SEXTLOAD/ZEXTLOAD instructions that the target doesn't support
if after legalize.  This fixes IA64 failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24725 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded frameindex, constpool, globaladdr, and externalsym as root nodes of
Evan Cheng [Thu, 15 Dec 2005 08:31:04 +0000 (08:31 +0000)]
Added frameindex, constpool, globaladdr, and externalsym as root nodes of
leaaddr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24724 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded constpool, frameindex, and externalsym nodes.
Evan Cheng [Thu, 15 Dec 2005 08:29:48 +0000 (08:29 +0000)]
Added constpool, frameindex, and externalsym nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24723 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoHandling zero extension of 1 bit value.
Evan Cheng [Thu, 15 Dec 2005 01:02:48 +0000 (01:02 +0000)]
Handling zero extension of 1 bit value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24722 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUse MOV8rm to load 1 bit value.
Evan Cheng [Thu, 15 Dec 2005 00:59:17 +0000 (00:59 +0000)]
Use MOV8rm to load 1 bit value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24721 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove a now unused statistic.
Nate Begeman [Wed, 14 Dec 2005 22:56:16 +0000 (22:56 +0000)]
Remove a now unused statistic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24720 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUse the new predicate support that Evan Cheng added to remove some code
Nate Begeman [Wed, 14 Dec 2005 22:54:33 +0000 (22:54 +0000)]
Use the new predicate support that Evan Cheng added to remove some code
from the DAGToDAG cpp file.  This adds pattern support for vector and
scalar fma, which passes test/Regression/CodeGen/PowerPC/fma.ll, and
does the right thing in the presence of -disable-excess-fp-precision.

Allows us to match:
void %foo(<4 x float> * %a) {
entry:
  %tmp1 = load <4 x float> * %a;
  %tmp2 = mul <4 x float> %tmp1, %tmp1
  %tmp3 = add <4 x float> %tmp2, %tmp1
  store <4 x float> %tmp3, <4 x float> *%a
  ret void
}

As:

_foo:
        li r2, 0
        lvx v0, r2, r3
        vmaddfp v0, v0, v0, v0
        stvx v0, r2, r3
        blr

Or, with llc -disable-excess-fp-precision,

_foo:
        li r2, 0
        lvx v0, r2, r3
        vxor v1, v1, v1
        vmaddfp v1, v0, v0, v1
        vaddfp v0, v1, v0
        stvx v0, r2, r3
        blr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24719 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a case for float just to make sure the patterns for both precisions
Nate Begeman [Wed, 14 Dec 2005 22:51:13 +0000 (22:51 +0000)]
Add a case for float just to make sure the patterns for both precisions
are matching

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24718 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFixed a typo: line 2323: MOVSX16rm8 -> MOVZX16rm8. This was the cause fo 12/14/2005...
Evan Cheng [Wed, 14 Dec 2005 22:28:18 +0000 (22:28 +0000)]
Fixed a typo: line 2323: MOVSX16rm8 -> MOVZX16rm8. This was the cause fo 12/14/2005 hbd failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24717 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded predicate !NoExcessFPPrecision to FMADD, FMADDS, FMSUB, and FMSUBS.
Evan Cheng [Wed, 14 Dec 2005 22:07:12 +0000 (22:07 +0000)]
Added predicate !NoExcessFPPrecision to FMADD, FMADDS, FMSUB, and FMSUBS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24716 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded support to specify predicates.
Evan Cheng [Wed, 14 Dec 2005 22:02:59 +0000 (22:02 +0000)]
Added support to specify predicates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24715 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix printing of the instructions.
Chris Lattner [Wed, 14 Dec 2005 22:01:07 +0000 (22:01 +0000)]
Fix printing of the instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24714 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFixed extload type profile. The 4th operand is a ValueType node with type
Evan Cheng [Wed, 14 Dec 2005 19:40:54 +0000 (19:40 +0000)]
Fixed extload type profile. The 4th operand is a ValueType node with type
OtherVT, it cannot be compare to type of 1st operand which is an integer type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24713 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoWhen folding loads into ops, immediately replace uses of the op with the
Chris Lattner [Wed, 14 Dec 2005 19:25:30 +0000 (19:25 +0000)]
When folding loads into ops, immediately replace uses of the op with the
load.  This reduces number of worklist iterations and avoid missing optimizations
depending on folding of things into sext_inreg nodes (which aren't supported by
all targets).
Tested by Regression/CodeGen/X86/extend.ll:test2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24712 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew testcase, each function should have one extension instr in it
Chris Lattner [Wed, 14 Dec 2005 19:24:08 +0000 (19:24 +0000)]
new testcase, each function should have one extension instr in it

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24711 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove -start-group and -end-group no-op options, accidentally committed
Reid Spencer [Wed, 14 Dec 2005 19:08:51 +0000 (19:08 +0000)]
Remove -start-group and -end-group no-op options, accidentally committed
in last patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24710 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix the (zext (zextload)) case to trigger, similarly for sign extends.
Chris Lattner [Wed, 14 Dec 2005 19:05:06 +0000 (19:05 +0000)]
Fix the (zext (zextload)) case to trigger, similarly for sign extends.
Allow (zext (truncate)) to apply after legalize if the target supports
AND (which all do).

This compiles
short %foo() {
        %tmp.0 = load ubyte* %X         ; <ubyte> [#uses=1]
        %tmp.3 = cast ubyte %tmp.0 to short             ; <short> [#uses=1]
        ret short %tmp.3
}

to:
_foo:
        movzbl _X, %eax
        ret

instead of:

_foo:
        movzbl _X, %eax
        movzbl %al, %eax
        ret

thanks to Evan for pointing this out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24709 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll, a crash on undefined
Chris Lattner [Wed, 14 Dec 2005 17:23:59 +0000 (17:23 +0000)]
Fix Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll, a crash on undefined
behavior in 126.gcc on big-endian systems.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24708 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew (undefined) testcase, distilled from 126.gcc that scalarrepl crashes on
Chris Lattner [Wed, 14 Dec 2005 17:23:20 +0000 (17:23 +0000)]
new (undefined) testcase, distilled from 126.gcc that scalarrepl crashes on

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24707 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a miscompilation in crafty due to a recent patch
Chris Lattner [Wed, 14 Dec 2005 07:58:38 +0000 (07:58 +0000)]
Fix a miscompilation in crafty due to a recent patch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24706 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded sext and zext patterns.
Evan Cheng [Wed, 14 Dec 2005 02:22:27 +0000 (02:22 +0000)]
Added sext and zext patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24705 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSkip over srcvalue nodes when generating ISEL code.
Evan Cheng [Wed, 14 Dec 2005 02:21:57 +0000 (02:21 +0000)]
Skip over srcvalue nodes when generating ISEL code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24704 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded sextld + zextld DAG nodes.
Evan Cheng [Wed, 14 Dec 2005 02:21:01 +0000 (02:21 +0000)]
Added sextld + zextld DAG nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24703 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFold (zext (load x) to (zextload x).
Evan Cheng [Wed, 14 Dec 2005 02:19:23 +0000 (02:19 +0000)]
Fold (zext (load x) to (zextload x).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24702 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd support for fmul node of type v4f32.
Nate Begeman [Wed, 14 Dec 2005 00:34:09 +0000 (00:34 +0000)]
Add support for fmul node of type v4f32.

void %foo(<4 x float> * %a) {
entry:
  %tmp1 = load <4 x float> * %a;
  %tmp2 = mul <4 x float> %tmp1, %tmp1
  store <4 x float> %tmp2, <4 x float> *%a
  ret void
}

Is selected to:

_foo:
        li r2, 0
        lvx v0, r2, r3
        vxor v1, v1, v1
        vmaddfp v0, v0, v0, v1
        stvx v0, r2, r3
        blr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24701 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPrepare support for AltiVec multiply, divide, and sqrt.
Nate Begeman [Tue, 13 Dec 2005 22:55:22 +0000 (22:55 +0000)]
Prepare support for AltiVec multiply, divide, and sqrt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24700 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdjust the constructor to the Linker class to take an argument that names
Reid Spencer [Tue, 13 Dec 2005 20:00:37 +0000 (20:00 +0000)]
Adjust the constructor to the Linker class to take an argument that names
the module being constructed. This is used to correctly name the module.
Previously the name of the linker tool was used which produces confusing
output when the module identifier is used in an error message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24699 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImprove ResolveFunctions to:
Reid Spencer [Tue, 13 Dec 2005 19:56:51 +0000 (19:56 +0000)]
Improve ResolveFunctions to:
a) use better local variable names (OldMT -> OldFT) where "M" is used to
   mean "Function" (perhaps it was previously "Method"?)
b) print out the module identifier in a warning message so that it is
   possible to track down in which module the error occurred.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24698 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDon't lump the filename and working dir together
Chris Lattner [Tue, 13 Dec 2005 17:40:33 +0000 (17:40 +0000)]
Don't lump the filename and working dir together

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24697 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd load + store folding srl and sra patterns.
Evan Cheng [Tue, 13 Dec 2005 07:24:22 +0000 (07:24 +0000)]
Add load + store folding srl and sra patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24696 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUse the shared asmprinter code for printing special llvm globals
Chris Lattner [Tue, 13 Dec 2005 06:32:50 +0000 (06:32 +0000)]
Use the shared asmprinter code for printing special llvm globals

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24695 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a couple more fields, move ctor init list to .cpp file, add support
Chris Lattner [Tue, 13 Dec 2005 06:32:10 +0000 (06:32 +0000)]
Add a couple more fields, move ctor init list to .cpp file, add support
for emitting the ctor/dtor list for common targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24694 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd ELF and darwin support for static ctors and dtors
Chris Lattner [Tue, 13 Dec 2005 04:53:51 +0000 (04:53 +0000)]
Add ELF and darwin support for static ctors and dtors

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24693 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoreindent a loop, unswitch a loop. No functionality changes
Chris Lattner [Tue, 13 Dec 2005 04:33:58 +0000 (04:33 +0000)]
reindent a loop, unswitch a loop.  No functionality changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24692 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoLowering constant pool entries on ppc exposed a bug in the recently added
Nate Begeman [Tue, 13 Dec 2005 03:03:23 +0000 (03:03 +0000)]
Lowering constant pool entries on ppc exposed a bug in the recently added
ConstantVec legalizing code, which would return constantpool nodes that
were not of the target's pointer type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24691 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoBeautify a few patterns.
Evan Cheng [Tue, 13 Dec 2005 02:40:18 +0000 (02:40 +0000)]
Beautify a few patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24690 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSome shl patterns which do load + store folding.
Evan Cheng [Tue, 13 Dec 2005 02:34:51 +0000 (02:34 +0000)]
Some shl patterns which do load + store folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24689 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoA few helper fragments for loads. e.g. (i8 (load addr:$src)) -> (loadi8 addr:$src...
Evan Cheng [Tue, 13 Dec 2005 01:57:51 +0000 (01:57 +0000)]
A few helper fragments for loads. e.g. (i8 (load addr:$src)) -> (loadi8 addr:$src). Only to improve readibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24688 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd and, or, and xor patterns which fold load + stores.
Evan Cheng [Tue, 13 Dec 2005 01:41:36 +0000 (01:41 +0000)]
Add and, or, and xor patterns which fold load + stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24687 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd inc + dec patterns which fold load + stores.
Evan Cheng [Tue, 13 Dec 2005 01:02:47 +0000 (01:02 +0000)]
Add inc + dec patterns which fold load + stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24686 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd neg and not patterns which fold load + stores.
Evan Cheng [Tue, 13 Dec 2005 00:54:44 +0000 (00:54 +0000)]
Add neg and not patterns which fold load + stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24685 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMissed a couple redundant explicit type casts.
Evan Cheng [Tue, 13 Dec 2005 00:25:07 +0000 (00:25 +0000)]
Missed a couple redundant explicit type casts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24684 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix some bad choice of names: i16SExt8 ->i16immSExt8, etc.
Evan Cheng [Tue, 13 Dec 2005 00:14:11 +0000 (00:14 +0000)]
Fix some bad choice of names: i16SExt8 ->i16immSExt8, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24683 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago* Split immSExt8 to i16SExt8 and i32SExt8 for i16 and i32 immediate operands.
Evan Cheng [Tue, 13 Dec 2005 00:01:09 +0000 (00:01 +0000)]
* Split immSExt8 to i16SExt8 and i32SExt8 for i16 and i32 immediate operands.
  This enables the removal of some explicit type casts.
* Rename immZExt8 to i16ZExt8 as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24682 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd some integer mul patterns.
Evan Cheng [Mon, 12 Dec 2005 23:47:46 +0000 (23:47 +0000)]
Add some integer mul patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24681 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoBug fix: CodeGenMap[N] = ... -> CodeGenMap[N.getValue(0)] = ...
Evan Cheng [Mon, 12 Dec 2005 23:45:21 +0000 (23:45 +0000)]
Bug fix: CodeGenMap[N] = ... -> CodeGenMap[N.getValue(0)] = ...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24680 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAt top of generated isel SelectCode() is this:
Evan Cheng [Mon, 12 Dec 2005 23:22:48 +0000 (23:22 +0000)]
At top of generated isel SelectCode() is this:

  if (!N.Val->hasOneUse()) {
    std::map<SDOperand, SDOperand>::iterator CGMI = CodeGenMap.find(N);
    if (CGMI != CodeGenMap.end()) return CGMI->second;
  }

Suppose a DAG like this:

           X
         ^   ^
        /     \
      USE1    USE2

Suppose USE1 is being selected first and during which X is selected and
returned a new node. After this, USE1 is no longer an use of X. During USE2
selection, X will be selected again since it has only one use!

The fix is to always query CodeGenMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24679 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAccept and ignore prefetches for now
Chris Lattner [Mon, 12 Dec 2005 22:51:16 +0000 (22:51 +0000)]
Accept and ignore prefetches for now

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24678 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix CodeGen/Generic/2005-12-12-ExpandSextInreg.ll
Chris Lattner [Mon, 12 Dec 2005 22:27:43 +0000 (22:27 +0000)]
Fix CodeGen/Generic/2005-12-12-ExpandSextInreg.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24677 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoTestcase for a problem that reid ran into
Chris Lattner [Mon, 12 Dec 2005 22:27:22 +0000 (22:27 +0000)]
Testcase for a problem that reid ran into

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24676 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd some sub patterns.
Evan Cheng [Mon, 12 Dec 2005 21:54:05 +0000 (21:54 +0000)]
Add some sub patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24675 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoWhen SelectLEAAddr() fails, it shouldn't cause the side effect of having the
Evan Cheng [Mon, 12 Dec 2005 21:49:40 +0000 (21:49 +0000)]
When SelectLEAAddr() fails, it shouldn't cause the side effect of having the
base or index operands being selected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24674 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFor ISD::RET, if # of operands >= 2, try selection the real data dep. operand
Evan Cheng [Mon, 12 Dec 2005 20:32:18 +0000 (20:32 +0000)]
For ISD::RET, if # of operands >= 2, try selection the real data dep. operand
first before the chain.
e.g.
int X;

int foo(int x)
{
  x += X + 37;
  return x;
}

If chain operand is selected first, we would generate:
movl X, %eax
movl 4(%esp), %ecx
leal 37(%ecx,%eax), %eax

rather than
movl $37, %eax
addl 4(%esp), %eax
addl X, %eax

which does not require %ecx. (Due to ADD32rm not matching.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24673 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agofix FP selects
Andrew Lenharth [Mon, 12 Dec 2005 20:30:09 +0000 (20:30 +0000)]
fix FP selects

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24672 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoremove some never-completed and now-obsolete code.
Chris Lattner [Mon, 12 Dec 2005 20:12:20 +0000 (20:12 +0000)]
remove some never-completed and now-obsolete code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24671 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a few more add / store patterns. e.g. ADD32mi8.
Evan Cheng [Mon, 12 Dec 2005 19:45:23 +0000 (19:45 +0000)]
Add a few more add / store patterns. e.g. ADD32mi8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24670 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoBug fix: finding the correct incoming chain for pattern with nested src operand....
Evan Cheng [Mon, 12 Dec 2005 19:37:43 +0000 (19:37 +0000)]
Bug fix: finding the correct incoming chain for pattern with nested src operand. And a minor change to make output code slightly more readible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24669 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agorestore a more restricted select
Andrew Lenharth [Mon, 12 Dec 2005 17:43:52 +0000 (17:43 +0000)]
restore a more restricted select

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24668 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement a little hack for parity with GCC on crafty. This speeds up
Chris Lattner [Mon, 12 Dec 2005 07:19:13 +0000 (07:19 +0000)]
Implement a little hack for parity with GCC on crafty.  This speeds up
186.crafty by about 16% (from 15.109s to 13.045s) on my system.

This turns allocas with unions/casts into scalars.  For example crafty has
something like this:

    union doub {
      unsigned short i[4];
      long long d;
    };
int f(long long a) {
  return ((union doub){.d=a}).i[1];
}

Instead of generating loads and stores to an alloca, we now promote the
whole thing to a scalar long value.

This implements: Transforms/ScalarRepl/AggregatePromote.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24667 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew testcase: sra should be able to eliminate all of these alloca's, despite
Chris Lattner [Mon, 12 Dec 2005 07:18:59 +0000 (07:18 +0000)]
new testcase: sra should be able to eliminate all of these alloca's, despite
the presense of pointer casts

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24666 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSend an indicator to llvm-testresults if the build failed
Chris Lattner [Sun, 11 Dec 2005 19:55:39 +0000 (19:55 +0000)]
Send an indicator to llvm-testresults if the build failed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24665 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix typo :(
Chris Lattner [Sun, 11 Dec 2005 18:43:13 +0000 (18:43 +0000)]
Fix typo :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24664 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMinor tweak to get isel opt
Chris Lattner [Sun, 11 Dec 2005 09:05:13 +0000 (09:05 +0000)]
Minor tweak to get isel opt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24663 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd selectcc
Chris Lattner [Sun, 11 Dec 2005 08:35:54 +0000 (08:35 +0000)]
add selectcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24662 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove type casts that are no longer needed
Chris Lattner [Sun, 11 Dec 2005 07:45:47 +0000 (07:45 +0000)]
Remove type casts that are no longer needed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24661 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRealize the constant pool & global addrs must always be ptr type
Chris Lattner [Sun, 11 Dec 2005 07:45:04 +0000 (07:45 +0000)]
Realize the constant pool & global addrs must always be ptr type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24660 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix the JIT failures from last night.
Chris Lattner [Sun, 11 Dec 2005 07:37:41 +0000 (07:37 +0000)]
Fix the JIT failures from last night.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24659 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFP select improvements (and likely breakage), oh and crazy people might want to ...
Andrew Lenharth [Sun, 11 Dec 2005 03:54:31 +0000 (03:54 +0000)]
FP select improvements (and likely breakage), oh and crazy people might want to *return* floating point values.  Don't see why myself

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24658 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd support for TargetConstantPool nodes to the dag isel emitter, and use
Nate Begeman [Sat, 10 Dec 2005 02:36:00 +0000 (02:36 +0000)]
Add support for TargetConstantPool nodes to the dag isel emitter, and use
them in the PPC backend, to simplify some logic out of Select and
SelectAddr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24657 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUse SDTCisPtrTy type property for store address.
Evan Cheng [Sat, 10 Dec 2005 01:59:36 +0000 (01:59 +0000)]
Use SDTCisPtrTy type property for store address.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24656 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoStop emitting a redudant type check for complex pattern node.
Evan Cheng [Sat, 10 Dec 2005 01:57:33 +0000 (01:57 +0000)]
Stop emitting a redudant type check for complex pattern node.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24655 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago* Added X86 store patterns.
Evan Cheng [Sat, 10 Dec 2005 00:48:20 +0000 (00:48 +0000)]
* Added X86 store patterns.
* Added X86 dec patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24654 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded new getNode and getTargetNode variants for X86 stores.
Evan Cheng [Sat, 10 Dec 2005 00:37:58 +0000 (00:37 +0000)]
Added new getNode and getTargetNode variants for X86 stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24653 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFor instructions which produce no result, e.g. store, chain's Resno == 0.
Evan Cheng [Sat, 10 Dec 2005 00:09:17 +0000 (00:09 +0000)]
For instructions which produce no result, e.g. store, chain's Resno == 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24652 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd support patterns to many load and store instructions which will
Nate Begeman [Fri, 9 Dec 2005 23:54:18 +0000 (23:54 +0000)]
Add support patterns to many load and store instructions which will
hopefully use patterns in the near future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24651 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd SDTCisPtrTy and use it for loads, to indicate that the operand of a load
Chris Lattner [Fri, 9 Dec 2005 22:58:42 +0000 (22:58 +0000)]
Add SDTCisPtrTy and use it for loads, to indicate that the operand of a load
must be a pointer.  This removes a type check out of the code generated by
tblgen for load matching.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24650 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a new SDTCisPtrTy constraint, which indicates that an operand must have
Chris Lattner [Fri, 9 Dec 2005 22:57:42 +0000 (22:57 +0000)]
Add a new SDTCisPtrTy constraint, which indicates that an operand must have
the same type as the pointer type for a target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24649 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded patterns for ADD8rm, etc. These fold load operands. e.g. addb 4(%esp), %al
Evan Cheng [Fri, 9 Dec 2005 22:48:48 +0000 (22:48 +0000)]
Added patterns for ADD8rm, etc. These fold load operands. e.g. addb 4(%esp), %al

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24648 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago* Do not allow nodes which produce chain results (e.g. loads) to be folded if
Evan Cheng [Fri, 9 Dec 2005 22:45:35 +0000 (22:45 +0000)]
* Do not allow nodes which produce chain results (e.g. loads) to be folded if
  it has more than one real use (non-chain uses).
* Record folded chain producing node in CodeGenMap.
* Do not fold a chain producing node if it has already been selected as an
  operand of a chain use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24647 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAvoid emitting two tabs when switching to a named section
Chris Lattner [Fri, 9 Dec 2005 19:28:49 +0000 (19:28 +0000)]
Avoid emitting two tabs when switching to a named section

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24646 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoTeach the PPC backend about the ctor and dtor list when not using __main and
Chris Lattner [Fri, 9 Dec 2005 18:24:29 +0000 (18:24 +0000)]
Teach the PPC backend about the ctor and dtor list when not using __main and
linking the entire program into one bc file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24645 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoTeach legalize how to promote sext_inreg to fix a problem Andrew pointed
Chris Lattner [Fri, 9 Dec 2005 17:32:47 +0000 (17:32 +0000)]
Teach legalize how to promote sext_inreg to fix a problem Andrew pointed
out to me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24644 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPrevent folding of instructions which produce chains that have more than 1 real use
Evan Cheng [Fri, 9 Dec 2005 06:06:08 +0000 (06:06 +0000)]
Prevent folding of instructions which produce chains that have more than 1 real use

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24643 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago* Make sure complex pattern operands are selected first since their select
Evan Cheng [Fri, 9 Dec 2005 00:48:42 +0000 (00:48 +0000)]
* Make sure complex pattern operands are selected first since their select
functions can return false and causing the instruction pattern match to fail.
* Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24642 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoit helps if your conditionals are not reversed
Andrew Lenharth [Fri, 9 Dec 2005 00:45:42 +0000 (00:45 +0000)]
it helps if your conditionals are not reversed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24641 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoimprove code insertion in two ways:
Chris Lattner [Thu, 8 Dec 2005 08:00:12 +0000 (08:00 +0000)]
improve code insertion in two ways:
1. Only forward subst offsets into loads and stores, not into arbitrary
   things, where it will likely become a load.
2. If the source is a cast from pointer, forward subst the cast as well,
   allowing us to fold the cast away (improving cases when the cast is
   from an alloca or global).

This hasn't been fully tested, but does appear to further reduce register
pressure and improve code.  Lets let the testers grind on it a bit. :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24640 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd another important case we miss
Chris Lattner [Thu, 8 Dec 2005 07:13:28 +0000 (07:13 +0000)]
Add another important case we miss

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24639 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded support for ComplexPattern.
Evan Cheng [Thu, 8 Dec 2005 04:28:48 +0000 (04:28 +0000)]
Added support for ComplexPattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24638 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded explicit type field to ComplexPattern.
Evan Cheng [Thu, 8 Dec 2005 02:15:07 +0000 (02:15 +0000)]
Added explicit type field to ComplexPattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24637 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago* Added an explicit type field to ComplexPattern.
Evan Cheng [Thu, 8 Dec 2005 02:14:08 +0000 (02:14 +0000)]
* Added an explicit type field to ComplexPattern.
* Renamed MatchingNodes to RootNodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24636 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago* Added intelligence to X86 LEA addressing mode matching routine so it returns
Evan Cheng [Thu, 8 Dec 2005 02:01:35 +0000 (02:01 +0000)]
* Added intelligence to X86 LEA addressing mode matching routine so it returns
false if the match is not profitable. e.g. leal 1(%eax), %eax.
* Added patterns for X86 integer loads and LEA32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24635 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded support for ComplexPattern. These are patterns that require C++ pattern
Evan Cheng [Thu, 8 Dec 2005 02:00:36 +0000 (02:00 +0000)]
Added support for ComplexPattern. These are patterns that require C++ pattern
matching code that is not currently auto-generated by tblgen, e.g. X86
addressing mode. Selection routines for complex patterns can return multiple operands, e.g. X86 addressing mode returns 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24634 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a crash where ConstantVec nodes were being generated with the wrong
Nate Begeman [Wed, 7 Dec 2005 19:48:11 +0000 (19:48 +0000)]
Fix a crash where ConstantVec nodes were being generated with the wrong
type when the target did not support them.  Also teach Legalize how to
expand ConstantVecs.

This allows us to generate

_test:
        lwz r2, 12(r3)
        lwz r4, 8(r3)
        lwz r5, 4(r3)
        lwz r6, 0(r3)
        addi r2, r2, 4
        addi r4, r4, 3
        addi r5, r5, 2
        addi r6, r6, 1
        stw r2, 12(r3)
        stw r4, 8(r3)
        stw r5, 4(r3)
        stw r6, 0(r3)
        blr

For:

void %test(%v4i *%P) {
        %T = load %v4i* %P
        %S = add %v4i %T, <int 1, int 2, int 3, int 4>
        store %v4i %S, %v4i * %P
        ret void
}

On PowerPC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24633 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoOnly transform (sext (truncate x)) -> (sextinreg x) if before legalize or
Chris Lattner [Wed, 7 Dec 2005 18:02:05 +0000 (18:02 +0000)]
Only transform (sext (truncate x)) -> (sextinreg x) if before legalize or
if the target supports the resultant sextinreg

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24632 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoX86 doesn't support sextinreg for 8-bit things either.
Chris Lattner [Wed, 7 Dec 2005 17:59:14 +0000 (17:59 +0000)]
X86 doesn't support sextinreg for 8-bit things either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24631 91177308-0d34-0410-b5e6-96231b3b80d8