oota-llvm.git
18 years agonew testcase. There should be no accesses to the stack for these functions.
Chris Lattner [Wed, 1 Mar 2006 04:56:33 +0000 (04:56 +0000)]
new testcase.  There should be no accesses to the stack for these functions.

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

18 years agoAdd support for target-specific dag combines
Chris Lattner [Wed, 1 Mar 2006 04:53:38 +0000 (04:53 +0000)]
Add support for target-specific dag combines

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

18 years agoAdd interfaces for targets to provide target-specific dag combiner optimizations.
Chris Lattner [Wed, 1 Mar 2006 04:52:55 +0000 (04:52 +0000)]
Add interfaces for targets to provide target-specific dag combiner optimizations.

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

18 years agoAdd a new AddToWorkList method, start using it
Chris Lattner [Wed, 1 Mar 2006 04:03:14 +0000 (04:03 +0000)]
Add a new AddToWorkList method, start using it

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

18 years agoPull shifts by a constant through multiplies (a form of reassociation),
Chris Lattner [Wed, 1 Mar 2006 03:44:24 +0000 (03:44 +0000)]
Pull shifts by a constant through multiplies (a form of reassociation),
implementing Regression/CodeGen/X86/mul-shift-reassoc.ll

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

18 years agonew testcase
Chris Lattner [Wed, 1 Mar 2006 03:43:38 +0000 (03:43 +0000)]
new testcase

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

18 years agoVector op lowering.
Evan Cheng [Wed, 1 Mar 2006 01:11:20 +0000 (01:11 +0000)]
Vector op lowering.

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

18 years agoNew vector type v2f32.
Evan Cheng [Wed, 1 Mar 2006 01:10:52 +0000 (01:10 +0000)]
New vector type v2f32.

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

18 years agoVector ops lowering.
Evan Cheng [Wed, 1 Mar 2006 01:09:54 +0000 (01:09 +0000)]
Vector ops lowering.

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

18 years agoNew type v2f32.
Evan Cheng [Wed, 1 Mar 2006 01:06:22 +0000 (01:06 +0000)]
New type v2f32.

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

18 years agoMissing a cast previously.
Evan Cheng [Wed, 1 Mar 2006 00:58:54 +0000 (00:58 +0000)]
Missing a cast previously.

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

18 years ago- Added v2f32, not used by any target currently. Only for testing purpose.
Evan Cheng [Wed, 1 Mar 2006 00:55:26 +0000 (00:55 +0000)]
- Added v2f32, not used by any target currently. Only for testing purpose.
- Minor bug fix.

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

18 years ago- Added VConstant as an abstract version of ConstantVec.
Evan Cheng [Wed, 1 Mar 2006 00:51:13 +0000 (00:51 +0000)]
- Added VConstant as an abstract version of ConstantVec.
- All abstrct vector nodes must have # of elements and element type as their
first two operands.

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

18 years agoAdd a test case for left shift by 1. We should not be using lea for this.
Evan Cheng [Tue, 28 Feb 2006 23:57:45 +0000 (23:57 +0000)]
Add a test case for left shift by 1. We should not be using lea for this.

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

18 years agoAnother entry.
Evan Cheng [Tue, 28 Feb 2006 23:38:49 +0000 (23:38 +0000)]
Another entry.

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

18 years agoDon't match x << 1 to LEAL. It's better to emit x + x.
Evan Cheng [Tue, 28 Feb 2006 21:13:57 +0000 (21:13 +0000)]
Don't match x << 1 to LEAL. It's better to emit x + x.

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

18 years agoAdd const, volatile, restrict support.
Jim Laskey [Tue, 28 Feb 2006 20:15:07 +0000 (20:15 +0000)]
Add const, volatile, restrict support.
Add array of debug descriptor support.

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

18 years agoFix a regression in a patch from a couple of days ago. This fixes
Chris Lattner [Tue, 28 Feb 2006 19:47:20 +0000 (19:47 +0000)]
Fix a regression in a patch from a couple of days ago.  This fixes
Transforms/InstCombine/2006-02-28-Crash.ll

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

18 years agonew testcase
Chris Lattner [Tue, 28 Feb 2006 19:46:56 +0000 (19:46 +0000)]
new testcase

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

18 years ago8 spaces -> tab. Reported by Wink Saville
Chris Lattner [Tue, 28 Feb 2006 19:12:58 +0000 (19:12 +0000)]
8 spaces -> tab.  Reported by Wink Saville

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

18 years agoevan's recent x86 isel improvements have fixed this, though not in the way
Chris Lattner [Tue, 28 Feb 2006 16:39:56 +0000 (16:39 +0000)]
evan's recent x86 isel improvements have fixed this, though not in the way
originally envisioned :)

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

18 years agoAdd a subtarget feature for the stfiwx instruction. I know the G5 has it,
Chris Lattner [Tue, 28 Feb 2006 07:08:22 +0000 (07:08 +0000)]
Add a subtarget feature for the stfiwx instruction.  I know the G5 has it,
but I don't know what other PPC impls do.  If someone could update the proc
table, I would appreciate it :)

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

18 years agonew testcases
Chris Lattner [Tue, 28 Feb 2006 06:54:19 +0000 (06:54 +0000)]
new testcases

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

18 years agoCompile:
Chris Lattner [Tue, 28 Feb 2006 06:49:37 +0000 (06:49 +0000)]
Compile:
unsigned foo4(unsigned short *P) { return *P & 255; }
unsigned foo5(short *P) { return *P & 255; }

to:

_foo4:
        lbz r3,1(r3)
        blr
_foo5:
        lbz r3,1(r3)
        blr

not:

_foo4:
        lhz r2, 0(r3)
        rlwinm r3, r2, 0, 24, 31
        blr
_foo5:
        lhz r2, 0(r3)
        rlwinm r3, r2, 0, 24, 31
        blr

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

18 years agoremove implemented item
Chris Lattner [Tue, 28 Feb 2006 06:36:04 +0000 (06:36 +0000)]
remove implemented item

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

18 years agoFold "and (LOAD P), 255" -> zextload. This allows us to compile:
Chris Lattner [Tue, 28 Feb 2006 06:35:35 +0000 (06:35 +0000)]
Fold "and (LOAD P), 255" -> zextload.  This allows us to compile:

unsigned foo3(unsigned *P) { return *P & 255; }
as:
_foo3:
        lbz r3, 3(r3)
        blr

instead of:

_foo3:
        lwz r2, 0(r3)
        rlwinm r3, r2, 0, 24, 31
        blr

and:

unsigned short foo2(float a) { return a; }

as:
_foo2:
        fctiwz f0, f1
        stfd f0, -8(r1)
        lhz r3, -2(r1)
        blr

instead of:

_foo2:
        fctiwz f0, f1
        stfd f0, -8(r1)
        lwz r2, -4(r1)
        rlwinm r3, r2, 0, 16, 31
        blr

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

18 years agofold (sra (sra x, c1), c2) -> (sra x, c1+c2)
Chris Lattner [Tue, 28 Feb 2006 06:23:04 +0000 (06:23 +0000)]
fold (sra (sra x, c1), c2) -> (sra x, c1+c2)

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

18 years agoImplement rem.ll:test[7-9] and PR712
Chris Lattner [Tue, 28 Feb 2006 05:49:21 +0000 (05:49 +0000)]
Implement rem.ll:test[7-9] and PR712

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

18 years agonew testcases for PR712
Chris Lattner [Tue, 28 Feb 2006 05:48:56 +0000 (05:48 +0000)]
new testcases for PR712

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

18 years agoSimplify some code now that the RHS of a rem can't be 0
Chris Lattner [Tue, 28 Feb 2006 05:40:55 +0000 (05:40 +0000)]
Simplify some code now that the RHS of a rem can't be 0

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

18 years agonew testcase
Chris Lattner [Tue, 28 Feb 2006 05:30:48 +0000 (05:30 +0000)]
new testcase

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

18 years agoRearrange some code, fold "rem X, 0", implementing rem.ll:test6
Chris Lattner [Tue, 28 Feb 2006 05:30:45 +0000 (05:30 +0000)]
Rearrange some code, fold "rem X, 0", implementing rem.ll:test6

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

18 years agoAdd support for output memory constraints.
Chris Lattner [Mon, 27 Feb 2006 23:45:39 +0000 (23:45 +0000)]
Add support for output memory constraints.

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

18 years agoQualify dwarf namespace inside llvm namespace.
Jim Laskey [Mon, 27 Feb 2006 22:37:23 +0000 (22:37 +0000)]
Qualify dwarf namespace inside llvm namespace.

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

18 years agoreadme updates
Nate Begeman [Mon, 27 Feb 2006 22:08:36 +0000 (22:08 +0000)]
readme updates

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

18 years agoPartial enabling of functions.
Jim Laskey [Mon, 27 Feb 2006 20:37:42 +0000 (20:37 +0000)]
Partial enabling of functions.

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

18 years agoDon't print constant initializers, they may span lines now.
Chris Lattner [Mon, 27 Feb 2006 20:09:23 +0000 (20:09 +0000)]
Don't print constant initializers, they may span lines now.

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

18 years agoSupporting multiple compile units.
Jim Laskey [Mon, 27 Feb 2006 17:27:12 +0000 (17:27 +0000)]
Supporting multiple compile units.

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

18 years agoRe-orging file.
Jim Laskey [Mon, 27 Feb 2006 12:43:29 +0000 (12:43 +0000)]
Re-orging file.

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

18 years agoPretty print large struct constants.
Jim Laskey [Mon, 27 Feb 2006 10:33:53 +0000 (10:33 +0000)]
Pretty print large struct constants.

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

18 years agoRemoved dependency on how operands are printed (want multi-line.)
Jim Laskey [Mon, 27 Feb 2006 10:29:04 +0000 (10:29 +0000)]
Removed dependency on how operands are printed (want multi-line.)

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

18 years agoUse -emit-llvm -S to get .ll file output from llvm-gcc
Chris Lattner [Mon, 27 Feb 2006 05:39:00 +0000 (05:39 +0000)]
Use -emit-llvm -S to get .ll file output from llvm-gcc

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

18 years agoMerge two almost-identical pieces of code.
Chris Lattner [Mon, 27 Feb 2006 02:38:23 +0000 (02:38 +0000)]
Merge two almost-identical pieces of code.

Make this code more powerful by using ComputeMaskedBits instead of looking
for an AND operand.  This lets us fold this:

int %test23(int %a) {
        %tmp.1 = and int %a, 1
        %tmp.2 = seteq int %tmp.1, 0
        %tmp.3 = cast bool %tmp.2 to int  ;; xor tmp1, 1
        ret int %tmp.3
}

into: xor (and a, 1), 1

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

18 years agonew testcases
Chris Lattner [Mon, 27 Feb 2006 02:36:19 +0000 (02:36 +0000)]
new testcases

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

18 years agoFold (A^B) == A -> B == 0
Chris Lattner [Mon, 27 Feb 2006 01:44:11 +0000 (01:44 +0000)]
Fold (A^B) == A  ->  B == 0
and  (A-B) == A  ->  B == 0

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

18 years agoNew testcases
Chris Lattner [Mon, 27 Feb 2006 01:43:02 +0000 (01:43 +0000)]
New testcases

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

18 years agoImplement bit propagation through sub nodes, this (re)implements
Chris Lattner [Mon, 27 Feb 2006 01:00:42 +0000 (01:00 +0000)]
Implement bit propagation through sub nodes, this (re)implements
PowerPC/div-2.ll

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

18 years agoReenable this
Chris Lattner [Mon, 27 Feb 2006 01:00:12 +0000 (01:00 +0000)]
Reenable this

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

18 years agoremove some completed notes
Chris Lattner [Mon, 27 Feb 2006 00:39:31 +0000 (00:39 +0000)]
remove some completed notes

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

18 years agoCheck RHS simplification before LHS simplification to avoid infinitely looping
Chris Lattner [Mon, 27 Feb 2006 00:36:27 +0000 (00:36 +0000)]
Check RHS simplification before LHS simplification to avoid infinitely looping
on PowerPC/small-arguments.ll

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

18 years agoJust like we use the RHS of an AND to simplify the LHS, use the LHS to
Chris Lattner [Mon, 27 Feb 2006 00:22:28 +0000 (00:22 +0000)]
Just like we use the RHS of an AND to simplify the LHS, use the LHS to
simplify the RHS.  This allows for the elimination of many thousands of
ands from multisource, and compiles CodeGen/PowerPC/and-elim.ll:test2
into this:

_test2:
        srwi r2, r3, 1
        xori r3, r2, 40961
        blr

instead of this:

_test2:
        rlwinm r2, r3, 31, 17, 31
        xori r2, r2, 40961
        rlwinm r3, r2, 0, 16, 31
        blr

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

18 years agonew testcase
Chris Lattner [Mon, 27 Feb 2006 00:20:23 +0000 (00:20 +0000)]
new testcase

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

18 years agoAdd a bunch of missed cases. Perhaps the most significant of which is that
Chris Lattner [Sun, 26 Feb 2006 23:36:02 +0000 (23:36 +0000)]
Add a bunch of missed cases.  Perhaps the most significant of which is that
assertzext produces zero bits.

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

18 years agoFold (X|C1)^C2 -> X^(C1|C2) when possible. This implements
Chris Lattner [Sun, 26 Feb 2006 19:57:54 +0000 (19:57 +0000)]
Fold (X|C1)^C2 -> X^(C1|C2) when possible.  This implements
InstCombine/or.ll:test23.

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

18 years agonew testcase
Chris Lattner [Sun, 26 Feb 2006 19:55:30 +0000 (19:55 +0000)]
new testcase

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

18 years agoReverting. Didn't realize some developers were embedding constants in their
Jim Laskey [Sun, 26 Feb 2006 10:16:05 +0000 (10:16 +0000)]
Reverting. Didn't realize some developers were embedding constants in their
target assembler code gen.

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

18 years agoConstantPoolIndex is now the displacement portion of the address (rather
Evan Cheng [Sun, 26 Feb 2006 09:12:34 +0000 (09:12 +0000)]
ConstantPoolIndex is now the displacement portion of the address (rather
than base).

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

18 years agoPrint ConstantPoolSDNode offset field.
Evan Cheng [Sun, 26 Feb 2006 08:36:57 +0000 (08:36 +0000)]
Print ConstantPoolSDNode offset field.

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

18 years agoFixed ConstantPoolIndex operand asm print bug. This fixed 2005-07-17-INT-To-FP
Evan Cheng [Sun, 26 Feb 2006 08:28:12 +0000 (08:28 +0000)]
Fixed ConstantPoolIndex operand asm print bug. This fixed 2005-07-17-INT-To-FP
and 2005-05-12-Int64ToFP.

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

18 years agoFormat large struct constants for readability.
Jim Laskey [Sat, 25 Feb 2006 12:27:03 +0000 (12:27 +0000)]
Format large struct constants for readability.

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

18 years agoNew test case: use lea for imul by some constants.
Evan Cheng [Sat, 25 Feb 2006 10:16:10 +0000 (10:16 +0000)]
New test case: use lea for imul by some constants.

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

18 years agolea.ll is XFAIL until we implement convertToThreeAddress.
Evan Cheng [Sat, 25 Feb 2006 10:15:22 +0000 (10:15 +0000)]
lea.ll is XFAIL until we implement convertToThreeAddress.

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

18 years ago* Cleaned up addressing mode matching code.
Evan Cheng [Sat, 25 Feb 2006 10:09:08 +0000 (10:09 +0000)]
* Cleaned up addressing mode matching code.
* Cleaned up and tweaked LEA cost analysis code. Removed some hacks.
* Handle ADD $X, c to MOV32ri $X+c. These patterns cannot be autogen'd and
  they need to be matched before LEA.

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

18 years agoUpdates.
Evan Cheng [Sat, 25 Feb 2006 10:04:07 +0000 (10:04 +0000)]
Updates.

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

18 years ago* Allow mul, shl nodes to be codegen'd as LEA (if appropriate).
Evan Cheng [Sat, 25 Feb 2006 10:02:21 +0000 (10:02 +0000)]
* Allow mul, shl nodes to be codegen'd as LEA (if appropriate).
* Add patterns to handle GlobalAddress, ConstantPool, etc.
  MOV32ri to materialize these nodes in registers.
  ADD32ri to handle %reg + GA, etc.
  MOV32mi to handle store GA, etc. to memory.

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

18 years agoConstantPoolIndex is now the displacement field of addressing mode.
Evan Cheng [Sat, 25 Feb 2006 09:56:50 +0000 (09:56 +0000)]
ConstantPoolIndex is now the displacement field of addressing mode.

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

18 years agoAdded a common about the need for X86ISD::Wrapper.
Evan Cheng [Sat, 25 Feb 2006 09:55:19 +0000 (09:55 +0000)]
Added a common about the need for X86ISD::Wrapper.

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

18 years agoAdded an offset field to ConstantPoolSDNode.
Evan Cheng [Sat, 25 Feb 2006 09:54:52 +0000 (09:54 +0000)]
Added an offset field to ConstantPoolSDNode.

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

18 years agothis fails, mark it as such
Chris Lattner [Sat, 25 Feb 2006 08:18:43 +0000 (08:18 +0000)]
this fails, mark it as such

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

18 years agoFix a bug that Evan exposed with some changes he's making, and that was
Chris Lattner [Sat, 25 Feb 2006 02:17:31 +0000 (02:17 +0000)]
Fix a bug that Evan exposed with some changes he's making, and that was
exposed with a fastcc problem (breaking pcompress2 on x86 with -enable-x86-fastcc).

When reloading a reused reg, make sure to invalidate the reloaded reg, and
check to see if there are any other pending uses of the same register.

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

18 years agoRemove debugging printout :)
Chris Lattner [Sat, 25 Feb 2006 02:03:40 +0000 (02:03 +0000)]
Remove debugging printout :)

Add a minor compile time win, no codegen change.

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

18 years agoRefactor some code from being inline to being out in a new class with methods.
Chris Lattner [Sat, 25 Feb 2006 01:51:33 +0000 (01:51 +0000)]
Refactor some code from being inline to being out in a new class with methods.
This gets rid of two gotos, which is always nice, and also adds some comments.

No functionality change, this is just a refactor.

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

18 years agoFix an obvious bug exposed when we are doing
Evan Cheng [Sat, 25 Feb 2006 01:37:02 +0000 (01:37 +0000)]
Fix an obvious bug exposed when we are doing
ADD X, 4
==>
MOV32ri $X+4, ...

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

18 years agoAdd memory printing support for PPC. Input memory operands now work with
Chris Lattner [Fri, 24 Feb 2006 20:27:40 +0000 (20:27 +0000)]
Add memory printing support for PPC.  Input memory operands now work with
inline asms! :)

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

18 years agoUse the PrintAsmMemoryOperand to print addressing modes.
Chris Lattner [Fri, 24 Feb 2006 20:21:58 +0000 (20:21 +0000)]
Use the PrintAsmMemoryOperand to print addressing modes.

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

18 years agoAdd a PrintAsmMemoryOperand method for printing addresses
Chris Lattner [Fri, 24 Feb 2006 20:21:12 +0000 (20:21 +0000)]
Add a PrintAsmMemoryOperand method for printing addresses

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

18 years agoPass all the flags to the asm printer, not just the # operands.
Chris Lattner [Fri, 24 Feb 2006 19:50:58 +0000 (19:50 +0000)]
Pass all the flags to the asm printer, not just the # operands.

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

18 years agorename NumOps -> NumVals to avoid shadowing a NumOps var in an outer scope.
Chris Lattner [Fri, 24 Feb 2006 19:18:20 +0000 (19:18 +0000)]
rename NumOps -> NumVals to avoid shadowing a NumOps var in an outer scope.

Add support for addressing modes.

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

18 years agoRefactor operand adding out to a new AddOperand method
Chris Lattner [Fri, 24 Feb 2006 18:54:03 +0000 (18:54 +0000)]
Refactor operand adding out to a new AddOperand method

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

18 years agoadd a method
Chris Lattner [Fri, 24 Feb 2006 18:53:51 +0000 (18:53 +0000)]
add a method

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

18 years agoFix a problem that Nate noticed that boils down to an over conservative check
Chris Lattner [Fri, 24 Feb 2006 18:05:58 +0000 (18:05 +0000)]
Fix a problem that Nate noticed that boils down to an over conservative check
in the code that does "select C, (X+Y), (X-Y) --> (X+(select C, Y, (-Y)))".
We now compile this loop:

LBB1_1: ; no_exit
        add r6, r2, r3
        subf r3, r2, r3
        cmpwi cr0, r2, 0
        addi r7, r5, 4
        lwz r2, 0(r5)
        addi r4, r4, 1
        blt cr0, LBB1_4 ; no_exit
LBB1_3: ; no_exit
        mr r3, r6
LBB1_4: ; no_exit
        cmpwi cr0, r4, 16
        mr r5, r7
        bne cr0, LBB1_1 ; no_exit

into this instead:

LBB1_1: ; no_exit
        srawi r6, r2, 31
        add r2, r2, r6
        xor r6, r2, r6
        addi r7, r5, 4
        lwz r2, 0(r5)
        addi r4, r4, 1
        add r3, r3, r6
        cmpwi cr0, r4, 16
        mr r5, r7
        bne cr0, LBB1_1 ; no_exit

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

18 years agoAdd pointer and reference types. Added short-term code to ignore NULL types
Jim Laskey [Fri, 24 Feb 2006 16:46:40 +0000 (16:46 +0000)]
Add pointer and reference types.  Added short-term code to ignore NULL types
(to allow llvm-gcc4 to build.)

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

18 years agoGet VC++ building again.
Jeff Cohen [Fri, 24 Feb 2006 02:52:40 +0000 (02:52 +0000)]
Get VC++ building again.

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

18 years agoImplement (most of) selection of inline asm memory operands.
Chris Lattner [Fri, 24 Feb 2006 02:13:54 +0000 (02:13 +0000)]
Implement (most of) selection of inline asm memory operands.

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

18 years agoSelect inline asm memory operands.
Chris Lattner [Fri, 24 Feb 2006 02:13:31 +0000 (02:13 +0000)]
Select inline asm memory operands.

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

18 years agoImplement selection of inline asm memory operands
Chris Lattner [Fri, 24 Feb 2006 02:13:12 +0000 (02:13 +0000)]
Implement selection of inline asm memory operands

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

18 years agoAdd some hooks for selecting memory addresses.
Chris Lattner [Fri, 24 Feb 2006 02:12:52 +0000 (02:12 +0000)]
Add some hooks for selecting memory addresses.

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

18 years agoLower C_Memory operands.
Chris Lattner [Fri, 24 Feb 2006 01:11:24 +0000 (01:11 +0000)]
Lower C_Memory operands.

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

18 years agoRecognize memory operand codes
Chris Lattner [Fri, 24 Feb 2006 01:10:46 +0000 (01:10 +0000)]
Recognize memory operand codes

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

18 years agoAdd C_Memory operand type
Chris Lattner [Fri, 24 Feb 2006 01:10:14 +0000 (01:10 +0000)]
Add C_Memory operand type

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

18 years agoParse the %*# constraint modifiers
Chris Lattner [Thu, 23 Feb 2006 23:36:53 +0000 (23:36 +0000)]
Parse the %*# constraint modifiers

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

18 years agoadd a new flag
Chris Lattner [Thu, 23 Feb 2006 23:36:23 +0000 (23:36 +0000)]
add a new flag

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

18 years agoAdded basic support for typedefs.
Jim Laskey [Thu, 23 Feb 2006 22:37:30 +0000 (22:37 +0000)]
Added basic support for typedefs.

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

18 years agoPPC JIT relocation model should be DynamicNoPIC.
Evan Cheng [Thu, 23 Feb 2006 22:18:07 +0000 (22:18 +0000)]
PPC JIT relocation model should be DynamicNoPIC.

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

18 years ago- Clean up the lowering and selection code of ConstantPool, GlobalAddress,
Evan Cheng [Thu, 23 Feb 2006 20:41:18 +0000 (20:41 +0000)]
- Clean up the lowering and selection code of ConstantPool, GlobalAddress,
  and ExternalSymbol.
- Use C++ code (rather than tblgen'd selection code) to match the above
  mentioned leaf nodes. Do not mutate and nodes and do not record the
  selection in CodeGenMap. These nodes should be safe to duplicate. This is
  a performance win.

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

18 years agoFix an endianness problem on big-endian targets with expanded operands
Chris Lattner [Thu, 23 Feb 2006 20:06:57 +0000 (20:06 +0000)]
Fix an endianness problem on big-endian targets with expanded operands
to inline asms.  Mark some methods const.

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

18 years agoImplement the PPC inline asm "L" modifier. This allows us to compile:
Chris Lattner [Thu, 23 Feb 2006 19:31:10 +0000 (19:31 +0000)]
Implement the PPC inline asm "L" modifier.  This allows us to compile:

long long test(long long X) {
  __asm__("foo %0 %L0 %1 %L1" : "=r"(X): "r"(X));
  return X;
}

to:
        foo r2 r3 r2 r3

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

18 years agoRecord all of the expanded registers in the DAG and machine instr, fixing
Chris Lattner [Thu, 23 Feb 2006 19:21:04 +0000 (19:21 +0000)]
Record all of the expanded registers in the DAG and machine instr, fixing
several bugs in inline asm expanded operands.

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

18 years agoDwarfWriter reading basic type information from llvm-gcc4 code.
Jim Laskey [Thu, 23 Feb 2006 16:58:18 +0000 (16:58 +0000)]
DwarfWriter reading basic type information from llvm-gcc4 code.

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

18 years agoMatch the case of other mailing lists in the list
Chris Lattner [Thu, 23 Feb 2006 16:18:29 +0000 (16:18 +0000)]
Match the case of other mailing lists in the list

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