Chris Lattner
|
abd2182875
|
Add a simple transformation. This allows us to compile one of the inner
loops in stepanov to this:
.LBB_Z5test0PdS__2: # no_exit.1
fldl data(,%eax,8)
fldl 24(%esp)
faddp %st(1)
fstl 24(%esp)
incl %eax
cmpl $2000, %eax
fstpl 16(%esp)
#FP_REG_KILL
jl .LBB_Z5test0PdS__2
instead of this:
.LBB_Z5test0PdS__2: # no_exit.1
fldl data(,%eax,8)
fldl 24(%esp)
faddp %st(1)
fstl 24(%esp)
incl %eax
movl $data, %ecx
movl %ecx, %edx
addl $16000, %edx
subl %ecx, %edx
movl %edx, %ecx
sarl $2, %ecx
shrl $29, %ecx
addl %ecx, %edx
sarl $3, %edx
cmpl %edx, %eax
fstpl 16(%esp)
#FP_REG_KILL
jl .LBB_Z5test0PdS__2
The old instruction selector produced:
.LBB_Z5test0PdS__2: # no_exit.1
fldl 24(%esp)
faddl data(,%eax,8)
fstl 24(%esp)
movl %eax, %ecx
incl %ecx
incl %eax
leal data+16000, %edx
movl $data, %edi
subl %edi, %edx
movl %edx, %edi
sarl $2, %edi
shrl $29, %edi
addl %edi, %edx
sarl $3, %edx
cmpl %edx, %ecx
fstpl 16(%esp)
#FP_REG_KILL
jl .LBB_Z5test0PdS__2 # no_exit.1
Which is even worse!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19419 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-09 20:09:57 +00:00 |
|
Chris Lattner
|
38d6be5d49
|
Fix a bug legalizing call instructions (make sure to remember all result
values), and eliminate some switch statements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19417 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-09 19:43:23 +00:00 |
|
Chris Lattner
|
513e52ec4e
|
Fix a minor bug legalizing dynamic_stackalloc. This allows us to compile
std::__pad<wchar_t, std::char_traits<wchar_t> >::_S_pad(std::ios_base&, wchar_t, wchar_t*, wchar_t const*, int, int, bool)
from libstdc++
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19416 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-09 19:07:54 +00:00 |
|
Chris Lattner
|
fa404e8a76
|
Teach legalize to deal with DYNAMIC_STACKALLOC (aka a dynamic llvm alloca)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19415 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-09 19:03:49 +00:00 |
|
Chris Lattner
|
ee749d7488
|
Handle static alloca arguments to PHI nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19409 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-09 01:16:24 +00:00 |
|
Chris Lattner
|
39ae362279
|
Use new interfaces to correctly lower varargs and return/frame address intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19407 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-09 00:00:49 +00:00 |
|
Chris Lattner
|
64e14b1679
|
Add support for llvm.setjmp and longjmp. Only 3 SingleSource/UnitTests fail now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19404 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-08 22:48:57 +00:00 |
|
Chris Lattner
|
e3304a3d24
|
Tighten up assertions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19397 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-08 20:35:13 +00:00 |
|
Chris Lattner
|
f26bc8ef48
|
Silence VS warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19384 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-08 19:52:31 +00:00 |
|
Chris Lattner
|
4e6c746899
|
Implement handling of most long operators through libcalls.
Fix a bug legalizing "ret (Val,Val)"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19375 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-08 19:27:05 +00:00 |
|
Chris Lattner
|
cf5734dddd
|
Adjust to changes in LowerCAllTo interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19374 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-08 19:26:18 +00:00 |
|
Chris Lattner
|
ae0aacb833
|
Add support for FP->INT conversions and back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19369 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-08 08:08:56 +00:00 |
|
Chris Lattner
|
5d2c6c784b
|
Implement the 'store FPIMM, Ptr' -> 'store INTIMM, Ptr' optimization for
all targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19366 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-08 06:25:56 +00:00 |
|
Chris Lattner
|
623f70dd4c
|
1ULL << 64 is undefined, don't do it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19365 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-08 06:24:30 +00:00 |
|
Chris Lattner
|
7c68ec6b70
|
Fix a pointer invalidation problem. This fixes Generic/badarg6.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19361 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 23:32:00 +00:00 |
|
Chris Lattner
|
5351e9b172
|
Fold conditional branches on constants away.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19360 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 22:49:57 +00:00 |
|
Chris Lattner
|
4287d5e355
|
Fix a thinko in the reassociation code, fixing Generic/badlive.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19359 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 22:44:09 +00:00 |
|
Chris Lattner
|
b00a6425de
|
Add support for truncating integer casts from long.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19358 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 22:37:48 +00:00 |
|
Chris Lattner
|
8afc48e44a
|
Fix a bug in load expansion legalization and ret legalization. This fixes
CodeGen/Generic/select.ll:castconst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19357 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 22:28:47 +00:00 |
|
Chris Lattner
|
c7af17923e
|
Legalize unconditional branches too
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19356 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 22:12:08 +00:00 |
|
Chris Lattner
|
7cc4777a26
|
Implement support for long GEP indices on 32-bit archs and support for
int GEP indices on 64-bit archs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19354 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 21:56:57 +00:00 |
|
Chris Lattner
|
fd8c39b773
|
Simplify: truncate ({zero|sign}_extend (X))
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19353 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 21:56:24 +00:00 |
|
Chris Lattner
|
03c0cf822e
|
implement legalization of a bunch more operators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19352 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 21:45:56 +00:00 |
|
Chris Lattner
|
fad71ebe1e
|
Fix another bug legalizing calls!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19350 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 21:35:32 +00:00 |
|
Chris Lattner
|
f44fd88e9c
|
Fix handling of dead PHI nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19349 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 21:34:19 +00:00 |
|
Chris Lattner
|
ebda942efc
|
Fix a bug legalizing calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19348 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 21:34:13 +00:00 |
|
Chris Lattner
|
62fd269c14
|
After legalizing a DAG, delete dead nodes to save space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19346 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 21:09:37 +00:00 |
|
Chris Lattner
|
0e12e6e041
|
Implement RemoveDeadNodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19345 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 21:09:16 +00:00 |
|
Chris Lattner
|
c18ae4cb6a
|
Teach legalize how to handle condbranches
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19339 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 08:19:42 +00:00 |
|
Chris Lattner
|
1c08c714bb
|
Initial implementation of the SelectionDAGISel class. This contains most
of the code for lowering from LLVM code to a SelectionDAG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19331 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 07:47:53 +00:00 |
|
Chris Lattner
|
b75c12de67
|
This file is obsolete
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19330 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 07:47:23 +00:00 |
|
Chris Lattner
|
3e928bbd61
|
Initial implementation of the DAG legalization. This still has a long way
to go, but it does work for some non-trivial cases now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19329 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 07:47:09 +00:00 |
|
Chris Lattner
|
c3aae25116
|
Complete rewrite of the SelectionDAG class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19327 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 07:46:32 +00:00 |
|
Chris Lattner
|
310968cbbb
|
First draft of new Target interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19324 91177308-0d34-0410-b5e6-96231b3b80d8
|
2005-01-07 07:44:53 +00:00 |
|
Reid Spencer
|
6cb21d443e
|
Change Library Names Not To Conflict With Others When Installed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17286 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-10-27 23:18:45 +00:00 |
|
Reid Spencer
|
cac731ecbe
|
We won't use automake
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17155 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-10-22 03:35:04 +00:00 |
|
Reid Spencer
|
86d341b204
|
Initial automake generated Makefile template
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17136 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-10-18 23:55:41 +00:00 |
|
Reid Spencer
|
d96cb6eaa0
|
Update to reflect changes in Makefile rules.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16950 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-10-13 11:46:52 +00:00 |
|
Reid Spencer
|
9f41a5fe85
|
Initial version of automake Makefile.am file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16885 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-10-10 20:43:57 +00:00 |
|
Misha Brukman
|
6a134dedf6
|
Hyphenate target-(in)dependent for more tasty grammar goodness (tm)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16854 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-10-08 19:43:31 +00:00 |
|
Reid Spencer
|
954da37bb4
|
Add #include <iostream> since Value.h does not #include it any more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14622 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-07-04 12:19:56 +00:00 |
|
Chris Lattner
|
f70c22b019
|
Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14201 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-06-17 18:19:28 +00:00 |
|
Chris Lattner
|
e25738cab6
|
Finegrainify namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13948 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-06-02 04:28:06 +00:00 |
|
Chris Lattner
|
fd0f7b1131
|
Fix a trivial but blatant bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13947 91177308-0d34-0410-b5e6-96231b3b80d8
|
2004-06-02 03:57:43 +00:00 |
|
Brian Gaeke
|
d0fde30ce8
|
Put all LLVM code into the llvm namespace, as per bug 109.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
|
2003-11-11 22:41:34 +00:00 |
|
John Criswell
|
e488e9360b
|
Added LLVM copyright notice to Makefiles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9312 91177308-0d34-0410-b5e6-96231b3b80d8
|
2003-10-20 22:26:57 +00:00 |
|
John Criswell
|
b576c94c15
|
Added LLVM project notice to the top of every C++ source file.
Header files will be on the way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
|
2003-10-20 19:43:21 +00:00 |
|
Chris Lattner
|
79ba7c1aee
|
rename selection directory and library to SelectionDAG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7877 91177308-0d34-0410-b5e6-96231b3b80d8
|
2003-08-15 04:55:22 +00:00 |
|
Chris Lattner
|
7dc97ff180
|
Add a bunch of new node types, etc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7875 91177308-0d34-0410-b5e6-96231b3b80d8
|
2003-08-15 04:53:16 +00:00 |
|
Chris Lattner
|
78ec311bd5
|
Initial checkin of SelectionDAG implementation. This is still rough and
unfinished
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7717 91177308-0d34-0410-b5e6-96231b3b80d8
|
2003-08-11 14:57:33 +00:00 |
|