Chris Lattner
b9fccc4193
Turn -0.0 - X -> fneg
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21011 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 05:04:50 +00:00
Chris Lattner
43fdea070c
This target doesn't support fabs/fneg yet.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21010 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 05:03:24 +00:00
Chris Lattner
2c8086f4b9
Several changes mixed up here. First when legalizing a DAG with pcmarker,
...
dont' regen the whole dag if unneccesary. Second, fix and ugly bug with
the _PARTS nodes that caused legalize to produce multiples of them.
Finally, implement initial support for FABS and FNEG. Currently FNEG is
the only one to be trusted though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21009 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 05:00:07 +00:00
Chris Lattner
ff9fd0a99c
print fneg/fabs
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21008 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 04:58:41 +00:00
Chris Lattner
b1f26fb921
add an fabs instr
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21006 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 04:31:56 +00:00
Chris Lattner
b38a7495da
Add support for 64-bit shifts.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21005 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 04:01:14 +00:00
Chris Lattner
5b359c6c4f
fix some bugs in the implementation of SHL_PARTS and friends.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21004 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 04:00:59 +00:00
Chris Lattner
4759982a2d
Turn expanded shift operations into (e.g.) SHL_PARTS if the target supports it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21002 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 03:38:53 +00:00
Chris Lattner
41be951a47
Print some new nodes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21001 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 03:30:42 +00:00
Chris Lattner
f4b457987f
Fix a bug when inserting a libcall into a function with no other calls.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20999 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 03:22:40 +00:00
Nate Begeman
27523a1c92
Fix i64 returns
...
Generate PowerPC 'subfic' instruction when appropriate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20995 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 00:42:16 +00:00
Nate Begeman
ea19cd51aa
Fix a warning about an unhandled switch case
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20994 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-02 00:41:14 +00:00
Chris Lattner
7ce7eff54c
Add support for ISD::UNDEF to the X86 be
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20990 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 22:46:45 +00:00
Nate Begeman
fc1b1dad88
Add ISD::UNDEF node
...
Teach the SelectionDAG code how to expand and promote it
Have PPC32 LowerCallTo generate ISD::UNDEF for int arg regs used up by fp
arguments, but not shadowing their value. This allows us to do the right
thing with both fixed and vararg floating point arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20988 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 22:34:39 +00:00
Chris Lattner
e6fea166c3
Fix another PATypeHolder error, contributed by Bill Wendling!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20983 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 15:41:30 +00:00
Duraid Madina
69c8e20aa1
repair mindless SELECT waste.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20982 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 10:35:00 +00:00
Nate Begeman
6cb2e1b124
Fix Olden/bh, CR0 was being set in the wrong order
...
LowerCallTo and ISD::CALL are going to need to be modified, regs are being
set in the wrong order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20981 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 08:57:43 +00:00
Nate Begeman
31318e4b6c
Also apply Chris's fix to FP select and SETCC
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20979 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 07:21:30 +00:00
Chris Lattner
3071019026
Move the selection of the arms of the select operation up to the conditional
...
part to make sure we get the side effects and to avoid confusing the CFG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20977 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 07:10:02 +00:00
Chris Lattner
380ae49599
print the machine CFG in the -print-machineinstrs dump
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20976 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 06:48:38 +00:00
Nate Begeman
a7e11a4bb5
Fix stores to global addresses
...
Fix calls with no arguments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20975 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 05:57:17 +00:00
Nate Begeman
04730361b5
Support indexed loads and stores. This drops Shootout/matrix time from
...
18.8 to 14.8 seconds. The Pattern ISel is now often faster than the
Simple ISel, esp. on memory intensive code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20973 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 04:45:11 +00:00
Nate Begeman
6b55997df5
Implement FP_TO_SINT and FP_TO_UINT
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20972 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 02:59:27 +00:00
Nate Begeman
6d369ccae0
Add support for adding 0.0 and -0.0 to the constant pool, since we lie and
...
say that we support them, for the purposes of generating fsel instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20970 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 01:08:07 +00:00
Nate Begeman
dffcfccc13
Factor out common code, support FP comparison in folded SetCC
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20969 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-01 00:32:34 +00:00
Nate Begeman
3e89716ad7
fsel generation for f32 and f64 select
...
generate compare immediate for integer compare with constant
fold setcc into branch
fold setcc into select
Code generation quality for Shootout is now on par with the Simple ISel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20968 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 23:55:40 +00:00
Andrew Lenharth
5e99dd9c2b
make fp div trick dependend on flag
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20967 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 22:02:25 +00:00
Andrew Lenharth
95762124a1
PCMarker support for DAG and Alpha
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20965 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 21:24:06 +00:00
Duraid Madina
beeaab28a5
Assorted fixes:
...
* Stop being pessimistic about output register allocation
* Start to handle function descriptors: compute target GPs and so on
when doing indirect calls etc. Not there yet, though. For the moment,
we try to use _indirect_ branches wherever possible, to stress test
function descriptors.
* FP divide-by-zero should work now
* add varargs (it doesn't work, though)
At this point, all of SingleSource passes (modulo C++ tests that are due
to issues with the CFE, see note in the README.) Much of MultiSource also
passes although there's still a ton of bugs around. Something for me to
work on tomorrow, then. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20960 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 12:31:11 +00:00
Duraid Madina
1f867b103d
* declare local common symbols as such (.lcomm, not merely .common)
...
* begin great adventure into correct function descriptor materialization
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20956 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 07:40:24 +00:00
Duraid Madina
290f64c1cb
daintyness
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20955 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 07:36:43 +00:00
Duraid Madina
291e1266c1
add what we need to fudge a 'floating point conditional move', this is
...
used to get FP div-by-zero working properly (shunt the right answer
depending on how frcpa sets its predicate output)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20954 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 07:32:32 +00:00
Nate Begeman
96fc681d7e
Pass the correct values to the chain argument for node construction during
...
LowerCallTo.
Handle ISD::ADD in SelectAddr, allowing us to have nonzero immediates for
loads and stores, amazing!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20946 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 02:05:53 +00:00
Nate Begeman
74d734574e
Rewrite LowerCallTo and Select(ISD::CALL) to properly handle float varargs
...
Tell the SelectionDAG ISel to expand SEXTLOAD of i1 and i8, rather than
complicate the code in ISD::SEXTLOAD to do it by hand
Combine the FP and Int ISD::LOAD codegen
Generate better code for constant pool loads
As a result, all of Shootout, and likely many other programs are now
working.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20945 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-31 00:15:26 +00:00
Nate Begeman
fdcf3418e0
Fix calls whose arguments fit entirely in registers to not break the Chain.
...
Implement SINT_TO_FP and UINT_TO_FP
Remove some dead code from the simple ISel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20944 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-30 19:38:35 +00:00
Andrew Lenharth
ba05ad605e
yea, fine Duraid
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20942 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-30 18:22:52 +00:00
Nate Begeman
58f718cd97
Fix frame index code to generate legal PowerPC instructions. About half of
...
Shootout now works.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20940 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-30 02:23:08 +00:00
Nate Begeman
01d05266f9
Fix external symbol printing in the AsmPrinter. Tell the ISel that we
...
don't support things like memcpy directly. This allows a handful of the
Shootout programs to work, yay!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20939 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-30 01:45:43 +00:00
Chris Lattner
a33ef4816d
Instead of setting up the CFG edges at selectiondag construction time, set
...
them up after the code has been emitted. This allows targets to select one
mbb as multiple mbb's as needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20937 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-30 01:10:47 +00:00
Chris Lattner
71df3f8cab
don't depend on the cfg being set up yet
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20936 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-30 01:10:00 +00:00
Nate Begeman
23afcfb063
Fix BranchCC (it's still dumb), and implement FP select (also dumb)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20935 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 22:48:55 +00:00
Nate Begeman
74747861b9
Implement integer select and i1 sign extend
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20934 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 22:24:51 +00:00
Nate Begeman
3316252034
Implement SetCC, fix ZERO_EXTEND_INREG
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20933 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 21:54:38 +00:00
Chris Lattner
175b9635cc
import all of the rest of the stubs that dsa uses for direct comparison
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20932 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 20:36:05 +00:00
Tanya Lattner
5e9f352346
Compare dependence analysis with llvm instructions versus machine instrutions. the problem with using machine instructions and alias analysis is that aa does not handle tmp instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20931 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 20:35:10 +00:00
Tanya Lattner
5ec3a63f6d
Dependence analyzer that just determines dependences within a loop for loads and stores using alias analysis.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20930 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 20:33:42 +00:00
Chris Lattner
77b505670c
learn about some more functions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20929 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 20:04:24 +00:00
Andrew Lenharth
c05138387a
Fix up some types and constants
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20928 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 19:24:04 +00:00
Chris Lattner
9342a939eb
Fix a problem where we not marking incoming arguments to functions with
...
external linkage as incomplete.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20927 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 19:16:59 +00:00
Chris Lattner
f51d3bd676
Fix a bug that andrew noticed where we do not correctly sign/zero extend
...
returned integer values all of the way to 64-bits (we only did it to 32-bits
leaving the top bits undefined). This causes problems for targets like alpha
whose ABI's define the top bits too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20926 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 19:09:56 +00:00
Chris Lattner
cfba7981eb
there is no point comparing against null pointer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20925 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 17:44:52 +00:00
Chris Lattner
76bc5ce5c4
Fix a major problem with global variable initializers. This could cause
...
us to have stuff pointing to the null pointer, which makes no sense
(the null ptr is an ssa value, not the null object)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20922 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 17:21:53 +00:00
Chris Lattner
848132d671
fix a warning in the optimized build
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20920 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 15:13:27 +00:00
Chris Lattner
4de57fd9e9
add some more functions, ignore setcc for constraints!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20917 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 06:52:20 +00:00
Chris Lattner
b1515fe522
disable this transformation in the one obscure case that really pessimizes
...
pointer analysis.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20916 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 06:37:47 +00:00
Chris Lattner
8a44643d61
Handle "known" external calls context sensitively, add support for realloc
...
and a couple of other functions that are important.
Handle aggregate undef values for gv initializers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20914 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 06:09:07 +00:00
Nate Begeman
f3d08f31b3
Implement div, rem, and frameindex
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20907 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-29 00:03:27 +00:00
Nate Begeman
f70b576ccc
Pattern ISel: fix argument loading for i64s (thanks chris)
...
Simple ISel: fix i64 subtract
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20903 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 23:08:54 +00:00
Nate Begeman
ca12a2bd91
Remove fake instruction 'subc' (mnemonic for subfc).
...
More pattern isel updates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20902 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 22:28:37 +00:00
Chris Lattner
d4e50bb2e2
implement legalization of build_pair for nate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20901 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 22:03:13 +00:00
Andrew Lenharth
7f4ec3b2e3
First step in adding pcmarker intrinsic. Second step (soon) is adding backend support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20900 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 20:05:49 +00:00
Nate Begeman
9db505ca9d
Implement proper loads and zero-extends of all types
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20897 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 19:36:43 +00:00
Duraid Madina
ae8bd73634
Emit .global @function and .global @object entries so the Intel ias
...
assembler may be used; identify LLVM output as such.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20892 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 15:21:43 +00:00
Chris Lattner
f392c64ec6
Teach andersens that non-escaping memory cannot be mod/ref'd by external fn calls.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20891 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 06:21:17 +00:00
Misha Brukman
be5e2f4f9b
Fix grammar
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20890 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 04:32:12 +00:00
Chris Lattner
c3c9fd0dd6
Make anders-aa much more precise by not being completely pessimistic about
...
external functions. Teach it about a few important ones.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20889 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 04:03:52 +00:00
Alkis Evlogimenos
ab7ada3ed6
Rename createPromoteMemoryToRegister() to
...
createPromoteMemoryToRegisterPass() to be consistent with other pass
creation functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20885 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-28 02:01:12 +00:00
Chris Lattner
493f6366cb
wrap some long lines
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20884 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-27 22:03:46 +00:00
Chris Lattner
93ab219244
remove ...
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20883 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-27 21:57:09 +00:00
Chris Lattner
40ee8ce28b
speed up steens by using spliceFrom, improve its precision by realizing that
...
an incomplete node cannot alias a complete node.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20882 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-27 21:56:55 +00:00
Chris Lattner
267a1b02a2
teach andersens about undef
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20881 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-27 18:58:23 +00:00
Chris Lattner
5f4c0a88ee
Don't give up completely, maybe other AA can say something about this.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20873 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-27 00:02:33 +00:00
Chris Lattner
e70492d0e2
Factor out percentage printing into its own function. Make two changes to
...
the function: print more precision XX.X% instead of XX%, and cast to ULL
before scaling by 100/1000 to avoid wrap around for large numbers of queries
(such as occur for 253.perlbmk and 176.gcc)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20872 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 23:56:33 +00:00
Chris Lattner
1b9a2aac98
Cache mapping information for a call site after computing it for a mod/ref
...
query. If the next mod/ref query happens to be for the same call site
(which is extremely likely), use the cache instead of recomputing the
callee/caller mapping. This makes -aa-eval ***MUCH*** faster with
ds-aa
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20871 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 23:29:03 +00:00
Chris Lattner
a7337dc2b9
Remove more long dead code: dsa doesn't provide must alias info
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20870 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 22:54:46 +00:00
Chris Lattner
5a6a9d4f0c
remove some unsafe code that has long been dead
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20869 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 22:48:42 +00:00
Chris Lattner
bc499de74f
slightly improve mod/ref for DSAA by checking the globals graph for fallback
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20868 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 22:47:03 +00:00
Chris Lattner
b7523418b0
Teach steens-aa two things about mod/ref information:
...
1. If memory never escapes the program, it cannot be mod/ref'd by external
functions.
2. If memory is global never mod/ref'd in the program, it cannot be mod/ref'd
by any call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20867 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 22:43:20 +00:00
Chris Lattner
0772e78789
Interchange this loop so that we test all pointers against one call site
...
before moving on to the next call site. This will be a more efficient way
to compute the mod/ref set for AA implementations like DSA.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20866 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 22:16:44 +00:00
Nate Begeman
7532e2f555
Fix that pesky floats in integer regs problem by assigning the f32 type to
...
the correct register class. Also remove the loading of float data into int
regs part of varargs; it will need to be implemented differently later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20857 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 08:25:22 +00:00
Nate Begeman
f7e4338035
Get closer to having varargs working. There's still something strange
...
going on with copies between floating point and integer register files
being generated. Once that is solved, varargs will be done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20856 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 07:46:36 +00:00
Nate Begeman
f26226155e
Make 64bit args and float args work correct with calls. Thanks to Chris
...
for explaining EXTRACT_ELEMENT to me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20847 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 02:17:46 +00:00
Nate Begeman
8e21e71b24
Change interface to LowerCallTo to take a boolean isVarArg argument.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20842 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 01:29:23 +00:00
Nate Begeman
307e7443b8
Next round of pattern isel changes, mostly dealing with calls.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20841 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 01:28:53 +00:00
Nate Begeman
c13a7f0eb3
Correct a documention link
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20840 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-26 01:28:05 +00:00
Chris Lattner
cf9082589c
no really, don't double count these nodes either!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20837 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 20:54:45 +00:00
Chris Lattner
0423e031d6
Don't count all of the nodes in the SCC once for each function in the SCC.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20836 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 20:37:32 +00:00
Chris Lattner
33b4276053
Grow the EQ classes for globals at the end of the BU pass. This shrinks
...
memory usage in the TD pass for 254.gap from 31.3MB to 3.9MB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20834 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 16:45:43 +00:00
Nate Begeman
c7b09f1f01
Support global addresses and fix call returns. Varargs still aren't
...
handled correctly for floating point arguments, or more than 8 arguemnts.
This does however, allow hello world to run.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20832 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 08:34:25 +00:00
Chris Lattner
cec5b8831d
Enhance loopsimplify to preserve alias analysis instead of clobbering it.
...
This prevents crashes on some programs when using -ds-aa -licm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20831 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 06:37:22 +00:00
Chris Lattner
2958eeabcf
Treat free operations as volatile, since they cannot be moved. This fixes
...
Transforms/LICM/2005-03-24-LICM-Aggregate-Crash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20830 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 05:49:37 +00:00
Chris Lattner
70ac2dcb84
Fix a bug where LICM was not updating AA information properly when sinking
...
a pointer value out of a loop causing it to be duplicated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20828 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 00:22:36 +00:00
Chris Lattner
20da24c4b9
remove a debugging timer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20827 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 00:06:09 +00:00
Chris Lattner
b2dbdc1301
Two changes here:
...
1. Instead of copying Local graphs to the BU graphs to start with, use
spliceFrom to do the job (which is constant time in this case). On
176.gcc, this chops off .17s from the bu pass.
2. When building SCC graphs, simplify the logic and use spliceFrom to
do the heavy lifting, instead of cloneInto/delete. This slices
another .14s off 176.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20826 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 00:05:04 +00:00
Chris Lattner
ce7068d378
Make the spliceFrom case where one graph is completely empty be constant time.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20825 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-25 00:02:41 +00:00
Chris Lattner
5734e4331e
add a new DSGraph::spliceFrom method, which violently takes the content of
...
one graph and plops it into another, without breaking a sweat.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20824 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 23:46:04 +00:00
Nate Begeman
9e3e1b5d44
Implement next round of Pattern ISel fixes
...
1. void returns
2. multiplies
3. calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20822 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 23:35:30 +00:00
Nate Begeman
7ca541b75a
Fix an incorrect argument being passed to BuildMI for indirect calls.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20821 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 23:34:38 +00:00
Chris Lattner
4da120e5d6
This replaces the correct but slow code with a more aggressive scc-finder
...
based approach to find globals and call sites that need to be copied. This
speeds up the BU pass on 176.gcc from 22s back up to 2.3s. Not as good
as 1.5s, but at least it's correct :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20820 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 23:06:02 +00:00
Chris Lattner
09adbbc99e
only look at successors of globals. This gets us down to "only" 22s in the
...
bu pass for 176.gcc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20818 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 21:17:27 +00:00
Chris Lattner
d8642125e4
Unfortunately, a previous patch was not safe. Revert it, reimplement
...
something correct. Unfortunately this takes 176.gcc's BU phase back
up to 29s from 1.5. This fixes DSGraph/2005-03-24-Global-Arg-Alias.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20817 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 21:07:47 +00:00
Nate Begeman
2daec45751
Commit Gabor Greif's patch to use iterators in lowering intrinsics.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20816 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 20:07:16 +00:00
Chris Lattner
0d397bd437
don't bother |'ing in 0's
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20815 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 18:42:51 +00:00
Chris Lattner
d94b4d5b9c
be more aggressive about incompleteness marking
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20814 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 18:42:28 +00:00
Chris Lattner
1bcb9abb30
eliminate dead variables, patch contributed by Gabor Greif!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20812 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 17:32:20 +00:00
Nate Begeman
5e9666129a
Implement more of the PPC32 Pattern ISel:
...
1) dynamic stack alloc
2) loads
3) shifts
4) subtract
5) immediate form of add, and, or, xor
6) change flag from -pattern-isel to -enable-ppc-pattern-isel
Remove dead arguments from getGlobalBaseReg in the simple ISel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20810 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 06:28:42 +00:00
Chris Lattner
246fa6316d
Fix silly "no newline at end of file" warning
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20809 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 06:16:18 +00:00
Chris Lattner
26bc78ed10
Fix compilation errors, patch contributed by the fabulous Bill Wendling!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20808 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 05:13:53 +00:00
Chris Lattner
3c61f70dc1
fix a compilation error, patch contributed by Bill Wendling!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20807 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 05:12:48 +00:00
Nate Begeman
a9795f81e9
Addition of the PPC32 Pattern ISel. While it is far from complete, it will
...
be brought up to parity with the current simple ISel in the coming days.
Currently, -pattern-isel is required to trigger it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20805 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 04:41:43 +00:00
Nate Begeman
85fdeb233e
Remove comments that are now meaningless from the pattern ISels, at Chris's
...
request.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20804 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 04:39:54 +00:00
Chris Lattner
c5132e65a6
Fix a crash while promoting a value out of a loop from a global variable
...
when using ds-aa
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20802 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 04:22:04 +00:00
Chris Lattner
7d671b88e8
teach ds-aa about mod/ref for external function calls.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20801 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 03:04:50 +00:00
Chris Lattner
62da315c85
Simplify dead code into a fixme :)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20800 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 02:41:19 +00:00
Chris Lattner
c4417f98e5
fix a compiler crash in runtime/libprofile
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20799 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-24 01:22:52 +00:00
Chris Lattner
f5eaf3c62c
wrap a long line
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20797 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 23:51:12 +00:00
Chris Lattner
ec6518ddc2
If we are calling an external function, chain to another AA to potentially
...
decide, don't just immediately give up.
This implements GlobalsModRef/chaining-analysis.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20796 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 23:49:47 +00:00
Chris Lattner
8cfd24df54
Make this more efficient by only making one virtual method call.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20793 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 23:26:58 +00:00
Chris Lattner
d433bde071
Make this a bit more aggressive
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20792 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 22:06:41 +00:00
Chris Lattner
65512d2525
a hack to allow count-aa to work with ds-aa :(
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20791 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 21:59:34 +00:00
Chris Lattner
cf9f20189f
Add two options to allow -count-aa to print queries either (1) all queries,
...
or (2) only queries that are not successful (e.g. return may alias)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20790 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 21:59:07 +00:00
Chris Lattner
1f309c1a4e
enable -debug-only=licm
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20788 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 21:00:12 +00:00
Chris Lattner
c14f59cb72
turn a dead conditional into an assert.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20787 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 20:12:08 +00:00
Chris Lattner
e3f1d8a525
Totally gut mergeInGraph. There is absolutely no reason to be merging
...
global roots in from callees to callers. The BU graphs do not have accurate
globals information and all of the clients know it. Instead, just make sure
the GG is up-to-date, and they will be perfectly satiated.
This speeds up the BU pass on 176.gcc from 5.5s to 1.5s, and Loc+BU+TD
from 7s to 2.7s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20786 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 20:08:59 +00:00
Chris Lattner
eb39492deb
wrap a long line
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20785 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 16:43:11 +00:00
Andrew Lenharth
cc59ed5379
don't lie to the register allocator
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20784 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 15:20:01 +00:00
Chris Lattner
943814bb01
Make -steens-aa more conservative (aka correct) by making sure to obey
...
incompleteness flags.
Make it more aggressive by taking field sensitive information into
account.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20781 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 01:48:09 +00:00
Tanya Lattner
9532ab9839
Added alias analysis.
...
Fixed many many bugs.
This now works on almost all Singlesource , and most of MultiSource.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20780 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 01:47:20 +00:00
Chris Lattner
2f72f9462b
implement Analysis/DSGraph/field-sensitive.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20779 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 01:47:19 +00:00
Chris Lattner
60cd9558ba
don't crash in some bad cases.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20776 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 01:29:26 +00:00
Chris Lattner
1e9d1475bc
Several changes here:
...
1. Increase max node size from 64->256 to avoid collapsing an important
structure in 181.mcf
2. If we have multiple calls to an indirect call node with an indirect
callee, fold these call nodes together, to avoid DSA turning apoc into
a flaming fireball of death when analyzing 176.gcc.
With this change, 176.gcc now takes ~7s to analyze for loc+bu+td, with
5.7s of that in the BU pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20775 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 23:54:52 +00:00
Chris Lattner
9547adef58
Mark external globals incomplete in the BU Globals graph, fixing
...
Analysis/DSGraph/2005-03-22-IncompleteGlobal.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20773 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 22:10:22 +00:00
Andrew Lenharth
f29dc07aae
hum, it is good to use real instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20769 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 16:42:52 +00:00
Chris Lattner
6ae7e9837c
Directly count the number of memory instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20766 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 03:55:10 +00:00
Chris Lattner
fed1b27d32
Timers SHOULD NOT record the time taken to count the bytes allocated in the heap!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20765 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 03:20:38 +00:00
Chris Lattner
a513fb127f
Remove an iteration pass over the entire scalarmap for each function created
...
by not allowing integer constants to get into the scalar map in the first
place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20764 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 02:45:13 +00:00
Chris Lattner
9308a35532
When making a clone of a DSGraph from the BU pass, make sure to remember that
...
this clone is supposed to be used for *ALL* of the functions in the SCC.
This fixes the memory explosion problem the TD pass was having, reducing the
memory growth from 24MB -> 3.5MB on povray and 270MB ->8.3MB on perlbmk!
This obviously also speeds up the TD pass *a lot*.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20763 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 01:50:42 +00:00
Chris Lattner
3bc703ba22
Don't use operator[], use the new method instead, which is faster. This speeds
...
up the TD pass about 30% for povray and perlbmk. It's still not clear why
copying a 5MB set of graphs turns into a 25MB set of graphs though :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20762 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 01:42:59 +00:00
Chris Lattner
a2197139b5
Now that the dead ctor is gone, nothing uses the old node mapping exported by
...
cloneInto: make it an internally used mapping.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20760 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:36:51 +00:00
Chris Lattner
5805c426dc
remove a dead ctor
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20759 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:33:35 +00:00
Chris Lattner
d65145bd3d
now that the second argument is always this->ReturnNodes, don't bother passing it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20758 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:29:44 +00:00
Chris Lattner
560af8aa97
instead of using a local RetValMap, just use the graph we are cloning into
...
for the return node map.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20757 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:25:52 +00:00
Andrew Lenharth
dc0b71b3bb
two things: 1)evilness reduction patch, reduces the number of instructions hiding in the small jump CC moving code. 2)implement div of small data types by FP DIV (also reduces evilness and should speed things up)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20756 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:24:07 +00:00
Chris Lattner
271d6884e3
now that the valuemapping is always the local scalar map, we can eliminate
...
this identity merge.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20755 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:22:45 +00:00
Chris Lattner
3c920fa861
remove the second argument to cloneInto
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20754 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:21:05 +00:00
Chris Lattner
24c47c5c45
add some timers, don't clone aux nodes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20752 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:12:00 +00:00
Chris Lattner
612f0b74d4
move this out of line
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20751 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:09:45 +00:00
Chris Lattner
7080c3e54e
don't generate temporary scalarmaps.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20749 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-22 00:04:21 +00:00
Chris Lattner
f09ecffa0d
allow passing clone flags down to cloneInto
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20748 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-21 22:49:53 +00:00
Chris Lattner
275b301740
Enhance the TD pass to build composite graphs when we have indirect call
...
sites that target multiple callees. If we have a function table, for
example, with N callees, and M callers call through it, we used to have
to perform O(M*N) graph inlinings. Now we perform O(M+N) inlinings.
This speeds up the td pass on perlbmk from 36.26s to 25.75s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20743 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-21 20:31:29 +00:00