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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Chris Lattner [Thu, 23 Feb 2006 16:14:22 +0000 (16:14 +0000)]
document the llvm-testresults list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26329
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Feb 2006 06:44:17 +0000 (06:44 +0000)]
Code cleanups, no functionality change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26328
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Feb 2006 05:25:02 +0000 (05:25 +0000)]
"." isn't enough to get a private label on linux, use ".L".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26327
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Feb 2006 05:17:43 +0000 (05:17 +0000)]
add a small and simple case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26326
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 23 Feb 2006 02:50:21 +0000 (02:50 +0000)]
A couple of new entries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26325
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 23 Feb 2006 02:43:52 +0000 (02:43 +0000)]
PIC related bug fixes.
1. Various asm printer bug.
2. Lowering bug. Now TargetGlobalAddress is wrapped in X86ISD::TGAWrapper.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26324
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 23 Feb 2006 00:13:58 +0000 (00:13 +0000)]
X86 codegen tweak to use lea in another case:
Suppose base == %eax and it has multiple uses, then instead of
movl %eax, %ecx
addl $8, %ecx
use
leal 8(%eax), %ecx.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26323
91177308-0d34-0410-b5e6-
96231b3b80d8