Chris Lattner
f551414303
new testcase. These functions shouldn't touch the stack if stfiwx use
...
is enabled.
llvm-svn: 26446
2006-03-01 05:49:05 +00:00
Chris Lattner
6ba976b557
Use a target-specific dag-combine to implement CodeGen/PowerPC/fp-int-fp.ll.
...
llvm-svn: 26445
2006-03-01 04:57:39 +00:00
Chris Lattner
b0531950b1
new testcase. There should be no accesses to the stack for these functions.
...
llvm-svn: 26444
2006-03-01 04:56:33 +00:00
Chris Lattner
6434a21c21
Add support for target-specific dag combines
...
llvm-svn: 26443
2006-03-01 04:53:38 +00:00
Chris Lattner
40501a50fe
Add interfaces for targets to provide target-specific dag combiner optimizations.
...
llvm-svn: 26442
2006-03-01 04:52:55 +00:00
Chris Lattner
f571b8c5dd
Add a new AddToWorkList method, start using it
...
llvm-svn: 26441
2006-03-01 04:03:14 +00:00
Chris Lattner
7ba1c5e025
Pull shifts by a constant through multiplies (a form of reassociation),
...
implementing Regression/CodeGen/X86/mul-shift-reassoc.ll
llvm-svn: 26440
2006-03-01 03:44:24 +00:00
Chris Lattner
d4f7c91dd7
new testcase
...
llvm-svn: 26439
2006-03-01 03:43:38 +00:00
Evan Cheng
ebe1f272b7
Vector op lowering.
...
llvm-svn: 26438
2006-03-01 01:11:20 +00:00
Evan Cheng
9539ab3ecc
New vector type v2f32.
...
llvm-svn: 26437
2006-03-01 01:10:52 +00:00
Evan Cheng
d8b92e04a2
Vector ops lowering.
...
llvm-svn: 26436
2006-03-01 01:09:54 +00:00
Evan Cheng
44412bbde0
New type v2f32.
...
llvm-svn: 26435
2006-03-01 01:06:22 +00:00
Evan Cheng
b8a44ab1dd
Missing a cast previously.
...
llvm-svn: 26434
2006-03-01 00:58:54 +00:00
Evan Cheng
c8110cdf46
- Added v2f32, not used by any target currently. Only for testing purpose.
...
- Minor bug fix.
llvm-svn: 26433
2006-03-01 00:55:26 +00:00
Evan Cheng
2cbf9d93d3
- Added VConstant as an abstract version of ConstantVec.
...
- All abstrct vector nodes must have # of elements and element type as their
first two operands.
llvm-svn: 26432
2006-03-01 00:51:13 +00:00
Evan Cheng
b02cde9c1f
Add a test case for left shift by 1. We should not be using lea for this.
...
llvm-svn: 26431
2006-02-28 23:57:45 +00:00
Evan Cheng
e5ae39621b
Another entry.
...
llvm-svn: 26430
2006-02-28 23:38:49 +00:00
Evan Cheng
fab8a53944
Don't match x << 1 to LEAL. It's better to emit x + x.
...
llvm-svn: 26429
2006-02-28 21:13:57 +00:00
Jim Laskey
090da116cc
Add const, volatile, restrict support.
...
Add array of debug descriptor support.
llvm-svn: 26428
2006-02-28 20:15:07 +00:00
Chris Lattner
74e3523663
Fix a regression in a patch from a couple of days ago. This fixes
...
Transforms/InstCombine/2006-02-28-Crash.ll
llvm-svn: 26427
2006-02-28 19:47:20 +00:00
Chris Lattner
591bae524a
new testcase
...
llvm-svn: 26426
2006-02-28 19:46:56 +00:00
Chris Lattner
d516e254be
8 spaces -> tab. Reported by Wink Saville
...
llvm-svn: 26425
2006-02-28 19:12:58 +00:00
Chris Lattner
bae1b3cab9
evan's recent x86 isel improvements have fixed this, though not in the way
...
originally envisioned :)
llvm-svn: 26422
2006-02-28 16:39:56 +00:00
Chris Lattner
9f70a7924d
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 :)
llvm-svn: 26421
2006-02-28 07:08:22 +00:00
Chris Lattner
ea47cfde74
new testcases
...
llvm-svn: 26420
2006-02-28 06:54:19 +00:00
Chris Lattner
3aa1cd759e
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
llvm-svn: 26419
2006-02-28 06:49:37 +00:00
Chris Lattner
866634d77f
remove implemented item
...
llvm-svn: 26418
2006-02-28 06:36:04 +00:00
Chris Lattner
24a22066c4
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
llvm-svn: 26417
2006-02-28 06:35:35 +00:00
Chris Lattner
152201257d
fold (sra (sra x, c1), c2) -> (sra x, c1+c2)
...
llvm-svn: 26416
2006-02-28 06:23:04 +00:00
Chris Lattner
684fc3dc9d
Implement rem.ll:test[7-9] and PR712
...
llvm-svn: 26415
2006-02-28 05:49:21 +00:00
Chris Lattner
ca2cb47ad3
new testcases for PR712
...
llvm-svn: 26414
2006-02-28 05:48:56 +00:00
Chris Lattner
63647f5028
Simplify some code now that the RHS of a rem can't be 0
...
llvm-svn: 26413
2006-02-28 05:40:55 +00:00
Chris Lattner
8f416718b6
new testcase
...
llvm-svn: 26412
2006-02-28 05:30:48 +00:00
Chris Lattner
3b9fc06289
Rearrange some code, fold "rem X, 0", implementing rem.ll:test6
...
llvm-svn: 26411
2006-02-28 05:30:45 +00:00
Chris Lattner
a451b5ffd4
Add support for output memory constraints.
...
llvm-svn: 26410
2006-02-27 23:45:39 +00:00
Jim Laskey
cb47e213c0
Qualify dwarf namespace inside llvm namespace.
...
llvm-svn: 26409
2006-02-27 22:37:23 +00:00
Nate Begeman
56a4dafd8d
readme updates
...
llvm-svn: 26405
2006-02-27 22:08:36 +00:00
Jim Laskey
34708479e7
Partial enabling of functions.
...
llvm-svn: 26404
2006-02-27 20:37:42 +00:00
Chris Lattner
da5029790a
Don't print constant initializers, they may span lines now.
...
llvm-svn: 26403
2006-02-27 20:09:23 +00:00
Jim Laskey
618fe7bec1
Supporting multiple compile units.
...
llvm-svn: 26402
2006-02-27 17:27:12 +00:00
Jim Laskey
939d2084ad
Re-orging file.
...
llvm-svn: 26401
2006-02-27 12:43:29 +00:00
Jim Laskey
64fdd3498f
Pretty print large struct constants.
...
llvm-svn: 26400
2006-02-27 10:33:53 +00:00
Jim Laskey
98bb365444
Removed dependency on how operands are printed (want multi-line.)
...
llvm-svn: 26399
2006-02-27 10:29:04 +00:00
Chris Lattner
c306a9bed9
Use -emit-llvm -S to get .ll file output from llvm-gcc
...
llvm-svn: 26397
2006-02-27 05:39:00 +00:00
Chris Lattner
792bfd8f28
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
llvm-svn: 26396
2006-02-27 02:38:23 +00:00
Chris Lattner
91dedad737
new testcases
...
llvm-svn: 26395
2006-02-27 02:36:19 +00:00
Chris Lattner
c27bba037b
Fold (A^B) == A -> B == 0
...
and (A-B) == A -> B == 0
llvm-svn: 26394
2006-02-27 01:44:11 +00:00
Chris Lattner
cbfdf37986
New testcases
...
llvm-svn: 26393
2006-02-27 01:43:02 +00:00
Chris Lattner
799e9e2e64
Implement bit propagation through sub nodes, this (re)implements
...
PowerPC/div-2.ll
llvm-svn: 26392
2006-02-27 01:00:42 +00:00
Chris Lattner
3d5e90af95
Reenable this
...
llvm-svn: 26391
2006-02-27 01:00:12 +00:00