Chris Lattner
b71fd7897f
Simplify IntrinsicLowering and clarify that it is only for use by the
...
CBE and interpreter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31755 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 18:00:10 +00:00
Chris Lattner
d6842e4e18
Remove unneeded forward decls
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31754 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 17:53:13 +00:00
Chris Lattner
43193d60e9
remove dead #include
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31753 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 17:51:15 +00:00
Chris Lattner
5e14b821cd
Fix the PPC regressions last night
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31752 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 17:40:51 +00:00
Chris Lattner
d23b5baf8a
Fix a gcc 4.2 warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31751 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 04:53:24 +00:00
Chris Lattner
f8e07f448a
Switch loads over to use memri as the operand instead of a reg/imm operand
...
pair for cleanliness. Add instructions for PPC32 preinc-stores with commented
out patterns. More improvement is needed to enable the patterns, but we're
getting close.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31749 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 02:43:19 +00:00
Devang Patel
8619678153
Tidy up marking of last analysis user pass.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31746 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 01:48:14 +00:00
Devang Patel
3799f97d53
Add doInitialization and doFinalization support in FunctionManager_New.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31745 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 01:27:05 +00:00
Devang Patel
abb81054d1
Do not derive CommonPassManagerImpl from Pass.
...
Now BasicBlockPassManager_New is a FunctionPass,
FunctionPassManager_New is a ModulePass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31744 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-15 01:11:27 +00:00
Devang Patel
2f42ed6b0b
Copy initializeAnalysisImpl() implementation from PassManagerT.
...
Update LastUser to recursively walk required transitive set.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31741 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 21:49:36 +00:00
Evan Cheng
3cdd9f65ed
Revert. This wasn't meant to be checked in.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31737 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 19:20:33 +00:00
Chris Lattner
26e552b04c
group load and store instructions together. No functionality change.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31736 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 19:19:53 +00:00
Chris Lattner
fc14b31540
Fix predicates for unindexed stores so they don't accidentally match indexed
...
stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31735 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 19:13:39 +00:00
Chris Lattner
6a5339ba65
Rework PPC64 calls. Now we have a LR8/CTR8 register which the PPC64 calls
...
clobber. This allows LR8 to be save/restored correctly as a 64-bit quantity,
instead of handling it as a 32-bit quantity. This unbreaks ppc64 codegen when
the code is actually located above the 4G boundary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31734 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 18:44:47 +00:00
Chris Lattner
d10434215d
remove a ton of custom selection logic no longer needed
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31733 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 18:43:11 +00:00
Chris Lattner
20ddd4a7ae
it would be nice of ctlz were lowered to bsf etc.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31730 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 08:08:46 +00:00
Chris Lattner
e511b74f4a
implement InstCombine/shift-simplify.ll by transforming:
...
(X >> Z) op (Y >> Z) -> (X op Y) >> Z
for all shifts and all ops={and/or/xor}.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31729 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 07:46:50 +00:00
Chris Lattner
9c2328e5a9
implement InstCombine/and-compare.ll:test1. This compiles:
...
typedef struct { unsigned prefix : 4; unsigned code : 4; unsigned unsigned_p : 4; } tree_common;
int foo(tree_common *a, tree_common *b) { return a->code == b->code; }
into:
_foo:
movl 4(%esp), %eax
movl 8(%esp), %ecx
movl (%eax), %eax
xorl (%ecx), %eax
# TRUNCATE movb %al, %al
shrb $4, %al
testb %al, %al
sete %al
movzbl %al, %eax
ret
instead of:
_foo:
movl 8(%esp), %eax
movb (%eax), %al
shrb $4, %al
movl 4(%esp), %ecx
movb (%ecx), %cl
shrb $4, %cl
cmpb %al, %cl
sete %al
movzbl %al, %eax
ret
saving one cycle by eliminating a shift.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31727 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 06:06:06 +00:00
Chris Lattner
ac011bce9e
lower "X = seteq Y, Z" to '(shr (ctlz (xor Y, Z)), 5)' instead of
...
'(shr (ctlz (sub Y, Z)), 5)'.
The use of xor better exposes the operation to bit-twiddling logic in the
dag combiner. For example, this:
typedef struct {
unsigned prefix : 4;
unsigned code : 4;
unsigned unsigned_p : 4;
} tree_common;
int foo(tree_common *a, tree_common *b) {
return a->code == b->code;
}
Now compiles to:
_foo:
lwz r2, 0(r4)
lwz r3, 0(r3)
xor r2, r3, r2
rlwinm r2, r2, 28, 28, 31
cntlzw r2, r2
srwi r3, r2, 5
blr
instead of:
_foo:
lbz r2, 3(r4)
lbz r3, 3(r3)
srwi r2, r2, 4
srwi r3, r3, 4
subf r2, r2, r3
cntlzw r2, r2
srwi r3, r2, 5
blr
saving a cycle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31725 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 05:28:08 +00:00
Andrew Lenharth
472c7918b0
A shim over other AA impls to catch incorrect uses
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31724 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 05:21:04 +00:00
Reid Spencer
d798a515e9
Discard code that supported old bytecode formats. This makes the Bytecode
...
Reader code much easier to read and maintain. Backwards compatibility from
version 5 format has been retained. Older formats will produce an error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31723 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 04:47:22 +00:00
Devang Patel
df1a10ece6
Implement removeDeadPasses().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31722 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 03:05:08 +00:00
Devang Patel
03153c70de
Keep track of Last user of analysis phase.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31721 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 02:54:23 +00:00
Devang Patel
b899eed1bc
Use std::map to map AnalysisID and Pass.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31720 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 01:59:59 +00:00
Chris Lattner
9b62b458c5
add a note
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31719 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 01:57:53 +00:00
Chris Lattner
2fe4bf453b
minor tweaks, reject vector preinc.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31717 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 01:38:31 +00:00
Devang Patel
c1d6e1fc9c
Manage analysis passes during run.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31716 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 01:23:29 +00:00
Devang Patel
5770c7cd52
Update comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31713 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-14 00:03:04 +00:00
Evan Cheng
7ce4578353
Matches MachineInstr changes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31712 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-13 23:36:35 +00:00
Evan Cheng
d7de496b23
- Let MachineInstr ctors add implicit def and use operands. Other operands
...
will be inserted before these operands. If the opcode changes (by
setOpcode), the implicit operands are updated as well.
- Added IsKill, IsDead fields to MachineOperand in preparation for changes
that move kill / dead info to MachineInstr's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31711 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-13 23:34:06 +00:00
Devang Patel
2718bfbaa6
Update PassManagerImpl_New::analysisCurrentlyAvailable to check all
...
managed passmanagers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31710 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-13 22:53:19 +00:00
Devang Patel
be6d515f48
Check currently available anlysis in active managers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31709 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-13 22:40:09 +00:00
Chris Lattner
c9dcf28955
teach the g5 hazard recognizer about update loads. This fixes
...
Ptrdist/anagram among others.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31708 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-13 20:11:06 +00:00
Chris Lattner
c2e6801cc7
remove redundant code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31697 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-13 01:10:12 +00:00
Nick Lewycky
bf63734a1b
Cute example from Chris Lattner.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31696 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-13 00:23:28 +00:00
Bill Wendling
b39a55a2e7
Initialize some pointers to quiet the compiler (when doing build_gcc
...
builds).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31694 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-12 11:10:39 +00:00
Jim Laskey
dfc55885e2
Make sure stack link is set in 64-bit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31690 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 22:22:07 +00:00
Reid Spencer
0288d18bb6
Remvoe a do-nothing else block.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31687 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 20:27:49 +00:00
Reid Spencer
a07d5b9164
Make an assert comment match the tested assertion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31686 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 20:07:59 +00:00
Chris Lattner
a94a203f34
implement proper PPC64 prolog/epilog codegen.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31684 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 19:05:28 +00:00
Reid Spencer
4952143236
For PR998:
...
Fix an infinite loop in the Linker and a few other assorted link problems.
Patch contributed by Scott Michel. Thanks, Scott!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31680 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 11:54:25 +00:00
Jim Laskey
4bfd1e9b43
Running with frame pointers prevented debugging, external probes and
...
potentially some system calls/exception handling from working. TOS must always
link to previous frame. This is a short term workaround until alloca scheme is
reworked.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31677 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 10:21:58 +00:00
Evan Cheng
5cd3e9f4b7
Add implicit use / def operands to created MI's.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31676 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 10:21:44 +00:00
Evan Cheng
3ba433a7e8
Add methods to add implicit def use operands to a MI.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31675 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 10:20:02 +00:00
Evan Cheng
490ce1ea6f
Add all implicit defs to FP_REG_KILL mi.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31674 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 07:19:36 +00:00
Chris Lattner
5b3bbc7cd7
allow the offset of a preinc'd load to be the low-part of a global. This
...
produces this clever code:
_millisecs:
lis r2, ha16(_Time.1182)
lwzu r3, lo16(_Time.1182)(r2)
lwz r2, 4(r2)
addic r4, r2, 1
addze r3, r3
blr
instead of this:
_millisecs:
lis r2, ha16(_Time.1182)
la r3, lo16(_Time.1182)(r2)
lwz r2, lo16(_Time.1182)(r2)
lwz r3, 4(r3)
addic r4, r3, 1
addze r3, r2
blr
for:
long %millisecs() {
%tmp = load long* %Time.1182 ; <long> [#uses=1]
%tmp1 = add long %tmp, 1 ; <long> [#uses=1]
ret long %tmp1
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31673 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 04:53:30 +00:00
Chris Lattner
d181c0120c
Mark operands as symbol lo instead of imm32 so that they print lo(x) around
...
globals.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31672 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 04:51:36 +00:00
Devang Patel
f8af6f0ec1
Implement schedulePasses().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31671 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 02:22:31 +00:00
Devang Patel
fcb2d940a0
Implement PassManagerImpl_New::add().
...
Just add pass into the pass manager queue without processing analysis.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31670 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 02:06:21 +00:00
Devang Patel
893a5a6815
While adding pass into the manager, process Analysis only if it is
...
required to do so.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31669 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-11 02:04:19 +00:00