Chris Lattner
4ddf7a4ca6
no really, this is the right patch
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34605 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 20:01:40 +00:00
Chris Lattner
640c0ac01d
always promote float varargs to double.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34604 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 19:59:18 +00:00
Reid Spencer
5d0d05c9b8
1. Provide more detail in file comment.
...
2. Move comments for methods to .h file, delete them in .cpp file.
3. All places that were doing manual clear of high order bits now call the
clearUnusedBits() method in order to not depend on undefined behavior
of the >> operator when the number of bits shifted equals the word size.
4. Reduced # of loc by using the new result of clearUnusedBits() method.
5. Simplified logic (decreased indentation) in a few places.
6. Added code comments to larger functions that needed them.
7. Added FIXME notes about weak implementations of things (e.g. bit-by-bit
shift right is sub-optimal).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34603 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 19:32:03 +00:00
Reid Spencer
c68c2243dc
Fix clearUnusedBits to not depend on "undefined behavior" of >> operator
...
when the bit size is equal to the word size. This happens to work out okay
on x86, but might not on other platforms. The change just detects when
there are no bits to clear (because BitWidth is a multiple of the word size)
and returns early.
Also, move some comments from .cpp file into header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34602 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 19:26:01 +00:00
Chris Lattner
1fa3d9ef93
one important bugfix: PPC32 didn't have both elf and macho support for
...
external symbols and global addresses. Add the missing ones.
one important workaround: PPCISD::CALL is matched by both PPCcall_ELF
and PPCcall_Macho, disable the _ELF patterns for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34601 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 19:20:53 +00:00
Chris Lattner
c25904f23a
add -enable-eh
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34600 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 18:50:48 +00:00
Chris Lattner
251db1890c
optimize duplicate ValueMap lookups
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34599 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 18:40:32 +00:00
Dale Johannesen
ce74de46dd
cosmetic changes from review of last patch. obvious
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34598 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 18:31:31 +00:00
Evan Cheng
de4e942faa
A couple of more places where a register liveness has been extended and its last kill should be updated accordingly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34597 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:51:27 +00:00
Evan Cheng
0badfea274
Add an assertion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34596 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:47:31 +00:00
Evan Cheng
48ef398ebd
Fix a couple of bugs related IsDead back propagation during coalescing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34595 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:46:31 +00:00
Evan Cheng
16191f0333
If the liveinterval of the source instruction has been extended, remove the IsKill marker.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34594 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:41:59 +00:00
Evan Cheng
bc025fbb64
Only add liveinterval to livein set if it isn't assigned a stack slot.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34593 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:39:02 +00:00
Chris Lattner
5e265b29ea
fastcc functions that return double values now return them in xmm0 on x86-32.
...
This implements CodeGen/X86/fp-stack-ret.ll:test[23]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34592 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:31:16 +00:00
Chris Lattner
113296ba51
verify that double is returned in XMM0 if the function is fastcc.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34591 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:30:03 +00:00
Chris Lattner
4dfccf4b48
allow vectors to be passed to stdcall/fastcall functions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34590 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:14:25 +00:00
Chris Lattner
2a9bdd74f2
move LowerRET into the 'Return Value Calling Convention Implementation'
...
section of the file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34589 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:12:39 +00:00
Chris Lattner
339b439d47
make all Lower*CallTo implementations use LowerCallResult to handle their
...
result value stuff. This eliminates a bunch of duplicated code and now
GetRetValueLocs is the sole place that decides where a value is returned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34588 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:10:05 +00:00
Chris Lattner
09c75a4372
pass the calling convention into Lower*CallTo, instead of using ad-hoc flags.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34587 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 09:06:15 +00:00
Chris Lattner
3085e15117
factor a bunch of code out of LowerCCCCallTo into a new LowerCallResult
...
function. This function now uses GetRetValueLocs to determine *where*
the result values are located and concerns itself with *how* to pull the
values out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34586 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 08:59:22 +00:00
Chris Lattner
2b02a4409f
move some code around, pass in calling conv, even though it is unused
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34585 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 08:29:00 +00:00
Chris Lattner
753d9cb50e
fold trivial token factor nodes. This allows us to compile
...
test/CodeGen/X86/fp-stack-ret.ll into:
movl 4(%esp), %eax
fldl (%eax)
ret
instead of:
subl $12, %esp
movl 16(%esp), %eax
movsd (%eax), %xmm0
movsd %xmm0, (%esp)
fldl (%esp)
addl $12, %esp
ret
by eliminating a token factor that blocked a check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34584 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 08:24:27 +00:00
Chris Lattner
f4acec1be8
new testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34583 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 08:23:01 +00:00
Chris Lattner
cb18656734
simplify result value lowering by splitting the selection of *where* to return
...
registers out from the logic of *how* to return them.
This changes X86-64 to mark EAX live out when returning a 32-bit value,
where before it marked RAX liveout.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34582 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 08:15:11 +00:00
Reid Spencer
31d16b039a
Allow this to compile now that the header file is checked in.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34581 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 07:30:14 +00:00
Reid Spencer
20b1f5db1e
Add a private constructor for efficiency.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34580 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 07:29:03 +00:00
Chris Lattner
7d53a1c45e
make void-return not a special case
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34579 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 07:18:38 +00:00
Chris Lattner
5a88b837f2
eliminate a bunch more temporary vectors from X86 lowering.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34578 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 07:10:00 +00:00
Chris Lattner
d96d072332
eliminate temporary vectors created during X86 lowering.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34577 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 06:40:16 +00:00
Chris Lattner
9cb9626abf
remove std::vector's in RET lowering.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34576 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 06:21:57 +00:00
Chris Lattner
4283c118cf
verify i128 return on x86-64 continues to codegen optimally.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34575 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 06:06:49 +00:00
Chris Lattner
9f0bc659c8
implement support for the linux/ppc function call ABI. Patch by
...
Nicolas Geoffray!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34574 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 05:34:32 +00:00
Chris Lattner
eb95d41cd3
Add XLForm_1_ext template, patch by Nicolas Geoffray.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34573 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 05:07:49 +00:00
Chris Lattner
456bc87e78
Improve JIT support for linux/ppc: Patch by Nicolas Geoffray!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34572 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 05:04:13 +00:00
Chris Lattner
0f07e55312
this doesn't compile, disable it
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34571 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 02:32:44 +00:00
Chris Lattner
3eba454021
remove these.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34570 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 02:28:21 +00:00
Reid Spencer
24c4a8f548
Clean up lshr and ashr to coding standards.
...
Handle the single word cases for shiftAmt == BitWidth.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34569 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 01:56:07 +00:00
Dale Johannesen
598270a68d
remove crediting of Evan Cheng and me.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34568 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 01:42:36 +00:00
Chris Lattner
6618039f9f
initialize a instance variable
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34567 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 01:28:05 +00:00
Chris Lattner
1a5ed97f35
update this for llvm-gcc4
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34566 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 01:11:36 +00:00
Reid Spencer
438d71eea4
Whoops, last word with bits in large shift left wasn't correct.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34565 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 01:08:58 +00:00
Reid Spencer
8755380fff
Fix the > 64 bits case for left shift.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34564 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 00:56:44 +00:00
Dale Johannesen
99c49a4b94
Removed WaterListOffset, inserted BBOffsets. Remove TODO item about this
...
from README.
When no water available, use end of block if in range. (More to do here.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34563 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-25 00:47:03 +00:00
Reid Spencer
1050ec5cc4
Fix the remainder shifting in KnuthDiv.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34562 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24 20:38:01 +00:00
Reid Spencer
5bce8547f3
1. Fix a bug in fromString for the <= 64bits case
...
2. Fix shl when shiftAmount == BitWidth.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34560 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24 20:19:37 +00:00
Reid Spencer
610fad85d2
1. Fix last bug in KnuthDiv. All divide tests pass up to 1024 bits now.
...
2. Clean up comments, style, coding standards, etc.
3. Simplify a constructor.
Extended testing revealed some additional bugs in shifting. I'll fix these
tomorrow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34559 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24 10:01:42 +00:00
Reid Spencer
d03d012ad9
Improve documentation.
...
Make divide function internal (it was briefly external for testing).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34557 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24 09:50:13 +00:00
Jim Laskey
7a1de987a6
Deal with cases when MMI is not requested.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34556 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24 09:45:44 +00:00
Jim Laskey
e80873ee75
Drop unused operand.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34555 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24 09:44:17 +00:00
Reid Spencer
9d6c919efe
1. Make internal functions take const arguments where they should, just
...
to be safe.
2. Make internal functions that return a carry/borrow return bool instead
of uint64_t because the carry/borrow can only be in range [0,1].
3. Assert that the pointers to KnuthDiv are all different so that the
result and operands can't overlap.
4. Add debug output to KnuthDiv function.
5. Fix a problem with KnuthDiv by separating the b's complement operation
from the subtraction borrow operation. This fixes a wide range of
division problems, but alas, not all of them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34554 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24 03:58:46 +00:00